You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by br...@apache.org on 2018/06/22 18:09:38 UTC

[cordova-windows] 01/01: XXX CB-14145 xxx/cordova-common#xxx

This is an automated email from the ASF dual-hosted git repository.

brodybits pushed a commit to branch cb-14145-patch-update-fix1
in repository https://gitbox.apache.org/repos/asf/cordova-windows.git

commit 4a2c459b7d21d7e34ea2e9978e3d5fd67bd3aad4
Author: Christopher J. Brody <ch...@gmail.com>
AuthorDate: Fri Jun 22 14:07:59 2018 -0400

    XXX CB-14145 xxx/cordova-common#xxx
---
 node_modules/ansi/package.json                     |    63 +-
 node_modules/balanced-match/index.js               |     1 +
 node_modules/balanced-match/package.json           |    68 +-
 node_modules/base64-js/.travis.yml                 |     5 -
 node_modules/base64-js/{LICENSE.MIT => LICENSE}    |     0
 node_modules/base64-js/README.md                   |     5 +-
 node_modules/base64-js/base64js.min.js             |     1 +
 node_modules/base64-js/bench/bench.js              |    19 -
 node_modules/base64-js/index.js                    |   114 +
 node_modules/base64-js/lib/b64.js                  |   124 -
 node_modules/base64-js/package.json                |   106 +-
 node_modules/base64-js/test/big-data.js            |    24 +
 node_modules/base64-js/test/convert.js             |    77 +-
 node_modules/base64-js/test/url-safe.js            |    18 +-
 node_modules/big-integer/BigInteger.d.ts           |    16 +
 node_modules/big-integer/BigInteger.js             |   230 +-
 node_modules/big-integer/BigInteger.min.js         |     2 +-
 node_modules/big-integer/README.md                 |    50 +
 node_modules/big-integer/package.json              |    80 +-
 node_modules/bplist-parser/package.json            |    56 +-
 .../license => brace-expansion/LICENSE}            |    12 +-
 node_modules/brace-expansion/README.md             |     9 +-
 node_modules/brace-expansion/index.js              |     2 +-
 node_modules/brace-expansion/package.json          |    77 +-
 node_modules/concat-map/package.json               |    57 +-
 node_modules/cordova-common/.eslintrc.yml          |     4 +-
 .../.github/PULL_REQUEST_TEMPLATE.md               |    22 +
 node_modules/cordova-common/.jscs.json             |    24 -
 node_modules/cordova-common/.npmignore             |     2 +
 node_modules/cordova-common/.travis.yml            |     1 +
 node_modules/cordova-common/README.md              |    16 +-
 node_modules/cordova-common/RELEASENOTES.md        |    20 +
 node_modules/cordova-common/appveyor.yml           |     3 +-
 .../node_modules/elementtree/Makefile              |     0
 .../node_modules/elementtree/package.json          |    47 +-
 node_modules/cordova-common/package.json           |    78 +-
 .../src/ConfigChanges/ConfigChanges.js             |     2 +
 .../cordova-common/src/ConfigChanges/ConfigFile.js |     8 +-
 .../src/ConfigParser/ConfigParser.js               |    45 +-
 .../cordova-common/src/ConfigParser/README.md      |    86 -
 node_modules/cordova-common/src/FileUpdater.js     |     6 +-
 .../cordova-common/src/util/xml-helpers.js         |     2 +-
 node_modules/cordova-registry-mapper/package.json  |    57 +-
 node_modules/glob/package.json                     |    59 +-
 node_modules/inflight/package.json                 |    78 +-
 node_modules/inherits/package.json                 |    69 +-
 node_modules/lodash/LICENSE                        |    22 -
 node_modules/lodash/README.md                      |   121 -
 node_modules/lodash/array.js                       |    44 -
 node_modules/lodash/array/chunk.js                 |    46 -
 node_modules/lodash/array/compact.js               |    30 -
 node_modules/lodash/array/difference.js            |    29 -
 node_modules/lodash/array/drop.js                  |    39 -
 node_modules/lodash/array/dropRight.js             |    40 -
 node_modules/lodash/array/dropRightWhile.js        |    59 -
 node_modules/lodash/array/dropWhile.js             |    59 -
 node_modules/lodash/array/fill.js                  |    44 -
 node_modules/lodash/array/findIndex.js             |    53 -
 node_modules/lodash/array/findLastIndex.js         |    53 -
 node_modules/lodash/array/first.js                 |    22 -
 node_modules/lodash/array/flatten.js               |    32 -
 node_modules/lodash/array/flattenDeep.js           |    21 -
 node_modules/lodash/array/head.js                  |     1 -
 node_modules/lodash/array/indexOf.js               |    53 -
 node_modules/lodash/array/initial.js               |    20 -
 node_modules/lodash/array/intersection.js          |    58 -
 node_modules/lodash/array/last.js                  |    19 -
 node_modules/lodash/array/lastIndexOf.js           |    60 -
 node_modules/lodash/array/object.js                |     1 -
 node_modules/lodash/array/pull.js                  |    52 -
 node_modules/lodash/array/pullAt.js                |    40 -
 node_modules/lodash/array/remove.js                |    64 -
 node_modules/lodash/array/rest.js                  |    21 -
 node_modules/lodash/array/slice.js                 |    30 -
 node_modules/lodash/array/sortedIndex.js           |    53 -
 node_modules/lodash/array/sortedLastIndex.js       |    25 -
 node_modules/lodash/array/tail.js                  |     1 -
 node_modules/lodash/array/take.js                  |    39 -
 node_modules/lodash/array/takeRight.js             |    40 -
 node_modules/lodash/array/takeRightWhile.js        |    59 -
 node_modules/lodash/array/takeWhile.js             |    59 -
 node_modules/lodash/array/union.js                 |    24 -
 node_modules/lodash/array/uniq.js                  |    71 -
 node_modules/lodash/array/unique.js                |     1 -
 node_modules/lodash/array/unzip.js                 |    47 -
 node_modules/lodash/array/unzipWith.js             |    41 -
 node_modules/lodash/array/without.js               |    27 -
 node_modules/lodash/array/xor.js                   |    35 -
 node_modules/lodash/array/zip.js                   |    21 -
 node_modules/lodash/array/zipObject.js             |    43 -
 node_modules/lodash/array/zipWith.js               |    36 -
 node_modules/lodash/chain.js                       |    16 -
 node_modules/lodash/chain/chain.js                 |    35 -
 node_modules/lodash/chain/commit.js                |     1 -
 node_modules/lodash/chain/concat.js                |     1 -
 node_modules/lodash/chain/lodash.js                |   125 -
 node_modules/lodash/chain/plant.js                 |     1 -
 node_modules/lodash/chain/reverse.js               |     1 -
 node_modules/lodash/chain/run.js                   |     1 -
 node_modules/lodash/chain/tap.js                   |    29 -
 node_modules/lodash/chain/thru.js                  |    26 -
 node_modules/lodash/chain/toJSON.js                |     1 -
 node_modules/lodash/chain/toString.js              |     1 -
 node_modules/lodash/chain/value.js                 |     1 -
 node_modules/lodash/chain/valueOf.js               |     1 -
 node_modules/lodash/chain/wrapperChain.js          |    32 -
 node_modules/lodash/chain/wrapperCommit.js         |    32 -
 node_modules/lodash/chain/wrapperConcat.js         |    34 -
 node_modules/lodash/chain/wrapperPlant.js          |    45 -
 node_modules/lodash/chain/wrapperReverse.js        |    43 -
 node_modules/lodash/chain/wrapperToString.js       |    17 -
 node_modules/lodash/chain/wrapperValue.js          |    20 -
 node_modules/lodash/collection.js                  |    44 -
 node_modules/lodash/collection/all.js              |     1 -
 node_modules/lodash/collection/any.js              |     1 -
 node_modules/lodash/collection/at.js               |    29 -
 node_modules/lodash/collection/collect.js          |     1 -
 node_modules/lodash/collection/contains.js         |     1 -
 node_modules/lodash/collection/countBy.js          |    54 -
 node_modules/lodash/collection/detect.js           |     1 -
 node_modules/lodash/collection/each.js             |     1 -
 node_modules/lodash/collection/eachRight.js        |     1 -
 node_modules/lodash/collection/every.js            |    66 -
 node_modules/lodash/collection/filter.js           |    61 -
 node_modules/lodash/collection/find.js             |    56 -
 node_modules/lodash/collection/findLast.js         |    25 -
 node_modules/lodash/collection/findWhere.js        |    37 -
 node_modules/lodash/collection/foldl.js            |     1 -
 node_modules/lodash/collection/foldr.js            |     1 -
 node_modules/lodash/collection/forEach.js          |    37 -
 node_modules/lodash/collection/forEachRight.js     |    26 -
 node_modules/lodash/collection/groupBy.js          |    59 -
 node_modules/lodash/collection/include.js          |     1 -
 node_modules/lodash/collection/includes.js         |    57 -
 node_modules/lodash/collection/indexBy.js          |    53 -
 node_modules/lodash/collection/inject.js           |     1 -
 node_modules/lodash/collection/invoke.js           |    42 -
 node_modules/lodash/collection/map.js              |    68 -
 node_modules/lodash/collection/max.js              |     1 -
 node_modules/lodash/collection/min.js              |     1 -
 node_modules/lodash/collection/partition.js        |    66 -
 node_modules/lodash/collection/pluck.js            |    31 -
 node_modules/lodash/collection/reduce.js           |    44 -
 node_modules/lodash/collection/reduceRight.js      |    29 -
 node_modules/lodash/collection/reject.js           |    50 -
 node_modules/lodash/collection/sample.js           |    50 -
 node_modules/lodash/collection/select.js           |     1 -
 node_modules/lodash/collection/shuffle.js          |    24 -
 node_modules/lodash/collection/size.js             |    30 -
 node_modules/lodash/collection/some.js             |    67 -
 node_modules/lodash/collection/sortBy.js           |    71 -
 node_modules/lodash/collection/sortByAll.js        |    52 -
 node_modules/lodash/collection/sortByOrder.js      |    55 -
 node_modules/lodash/collection/sum.js              |     1 -
 node_modules/lodash/collection/where.js            |    37 -
 node_modules/lodash/date.js                        |     3 -
 node_modules/lodash/date/now.js                    |    24 -
 node_modules/lodash/function.js                    |    28 -
 node_modules/lodash/function/after.js              |    48 -
 node_modules/lodash/function/ary.js                |    34 -
 node_modules/lodash/function/backflow.js           |     1 -
 node_modules/lodash/function/before.js             |    42 -
 node_modules/lodash/function/bind.js               |    56 -
 node_modules/lodash/function/bindAll.js            |    50 -
 node_modules/lodash/function/bindKey.js            |    66 -
 node_modules/lodash/function/compose.js            |     1 -
 node_modules/lodash/function/curry.js              |    51 -
 node_modules/lodash/function/curryRight.js         |    48 -
 node_modules/lodash/function/debounce.js           |   181 -
 node_modules/lodash/function/defer.js              |    25 -
 node_modules/lodash/function/delay.js              |    26 -
 node_modules/lodash/function/flow.js               |    25 -
 node_modules/lodash/function/flowRight.js          |    25 -
 node_modules/lodash/function/memoize.js            |    80 -
 node_modules/lodash/function/modArgs.js            |    58 -
 node_modules/lodash/function/negate.js             |    32 -
 node_modules/lodash/function/once.js               |    24 -
 node_modules/lodash/function/partial.js            |    43 -
 node_modules/lodash/function/partialRight.js       |    42 -
 node_modules/lodash/function/rearg.js              |    40 -
 node_modules/lodash/function/restParam.js          |    58 -
 node_modules/lodash/function/spread.js             |    44 -
 node_modules/lodash/function/throttle.js           |    62 -
 node_modules/lodash/function/wrap.js               |    33 -
 node_modules/lodash/index.js                       | 12351 -------------------
 node_modules/lodash/internal/LazyWrapper.js        |    26 -
 node_modules/lodash/internal/LodashWrapper.js      |    21 -
 node_modules/lodash/internal/MapCache.js           |    24 -
 node_modules/lodash/internal/SetCache.js           |    29 -
 node_modules/lodash/internal/arrayConcat.js        |    25 -
 node_modules/lodash/internal/arrayCopy.js          |    20 -
 node_modules/lodash/internal/arrayEach.js          |    22 -
 node_modules/lodash/internal/arrayEachRight.js     |    21 -
 node_modules/lodash/internal/arrayEvery.js         |    23 -
 node_modules/lodash/internal/arrayExtremum.js      |    30 -
 node_modules/lodash/internal/arrayFilter.js        |    25 -
 node_modules/lodash/internal/arrayMap.js           |    21 -
 node_modules/lodash/internal/arrayPush.js          |    20 -
 node_modules/lodash/internal/arrayReduce.js        |    26 -
 node_modules/lodash/internal/arrayReduceRight.js   |    24 -
 node_modules/lodash/internal/arraySome.js          |    23 -
 node_modules/lodash/internal/arraySum.js           |    20 -
 node_modules/lodash/internal/assignDefaults.js     |    13 -
 node_modules/lodash/internal/assignOwnDefaults.js  |    26 -
 node_modules/lodash/internal/assignWith.js         |    32 -
 node_modules/lodash/internal/baseAssign.js         |    19 -
 node_modules/lodash/internal/baseAt.js             |    32 -
 node_modules/lodash/internal/baseCallback.js       |    35 -
 node_modules/lodash/internal/baseClone.js          |   128 -
 .../lodash/internal/baseCompareAscending.js        |    34 -
 node_modules/lodash/internal/baseCopy.js           |    23 -
 node_modules/lodash/internal/baseCreate.js         |    23 -
 node_modules/lodash/internal/baseDelay.js          |    21 -
 node_modules/lodash/internal/baseDifference.js     |    55 -
 node_modules/lodash/internal/baseEach.js           |    15 -
 node_modules/lodash/internal/baseEachRight.js      |    15 -
 node_modules/lodash/internal/baseEvery.js          |    22 -
 node_modules/lodash/internal/baseExtremum.js       |    29 -
 node_modules/lodash/internal/baseFill.js           |    31 -
 node_modules/lodash/internal/baseFilter.js         |    22 -
 node_modules/lodash/internal/baseFind.js           |    25 -
 node_modules/lodash/internal/baseFindIndex.js      |    23 -
 node_modules/lodash/internal/baseFlatten.js        |    41 -
 node_modules/lodash/internal/baseFor.js            |    17 -
 node_modules/lodash/internal/baseForIn.js          |    17 -
 node_modules/lodash/internal/baseForOwn.js         |    17 -
 node_modules/lodash/internal/baseForOwnRight.js    |    17 -
 node_modules/lodash/internal/baseForRight.js       |    15 -
 node_modules/lodash/internal/baseFunctions.js      |    27 -
 node_modules/lodash/internal/baseGet.js            |    29 -
 node_modules/lodash/internal/baseIndexOf.js        |    27 -
 node_modules/lodash/internal/baseIsEqual.js        |    28 -
 node_modules/lodash/internal/baseIsEqualDeep.js    |   102 -
 node_modules/lodash/internal/baseIsFunction.js     |    15 -
 node_modules/lodash/internal/baseIsMatch.js        |    52 -
 node_modules/lodash/internal/baseLodash.js         |    10 -
 node_modules/lodash/internal/baseMap.js            |    23 -
 node_modules/lodash/internal/baseMatches.js        |    30 -
 .../lodash/internal/baseMatchesProperty.js         |    45 -
 node_modules/lodash/internal/baseMerge.js          |    56 -
 node_modules/lodash/internal/baseMergeDeep.js      |    67 -
 node_modules/lodash/internal/baseProperty.js       |    14 -
 node_modules/lodash/internal/basePropertyDeep.js   |    19 -
 node_modules/lodash/internal/basePullAt.js         |    30 -
 node_modules/lodash/internal/baseRandom.js         |    18 -
 node_modules/lodash/internal/baseReduce.js         |    24 -
 node_modules/lodash/internal/baseSetData.js        |    17 -
 node_modules/lodash/internal/baseSlice.js          |    32 -
 node_modules/lodash/internal/baseSome.js           |    23 -
 node_modules/lodash/internal/baseSortBy.js         |    21 -
 node_modules/lodash/internal/baseSortByOrder.js    |    31 -
 node_modules/lodash/internal/baseSum.js            |    20 -
 node_modules/lodash/internal/baseToString.js       |    13 -
 node_modules/lodash/internal/baseUniq.js           |    60 -
 node_modules/lodash/internal/baseValues.js         |    22 -
 node_modules/lodash/internal/baseWhile.js          |    24 -
 node_modules/lodash/internal/baseWrapperValue.js   |    29 -
 node_modules/lodash/internal/binaryIndex.js        |    39 -
 node_modules/lodash/internal/binaryIndexBy.js      |    57 -
 node_modules/lodash/internal/bindCallback.js       |    39 -
 node_modules/lodash/internal/bufferClone.js        |    20 -
 node_modules/lodash/internal/cacheIndexOf.js       |    19 -
 node_modules/lodash/internal/cachePush.js          |    20 -
 node_modules/lodash/internal/charsLeftIndex.js     |    18 -
 node_modules/lodash/internal/charsRightIndex.js    |    17 -
 node_modules/lodash/internal/compareAscending.js   |    16 -
 node_modules/lodash/internal/compareMultiple.js    |    44 -
 node_modules/lodash/internal/composeArgs.js        |    34 -
 node_modules/lodash/internal/composeArgsRight.js   |    36 -
 node_modules/lodash/internal/createAggregator.js   |    35 -
 node_modules/lodash/internal/createAssigner.js     |    41 -
 node_modules/lodash/internal/createBaseEach.js     |    31 -
 node_modules/lodash/internal/createBaseFor.js      |    27 -
 node_modules/lodash/internal/createBindWrapper.js  |    22 -
 node_modules/lodash/internal/createCache.js        |    21 -
 node_modules/lodash/internal/createCompounder.js   |    26 -
 node_modules/lodash/internal/createCtorWrapper.js  |    37 -
 node_modules/lodash/internal/createCurry.js        |    23 -
 node_modules/lodash/internal/createDefaults.js     |    22 -
 node_modules/lodash/internal/createExtremum.js     |    33 -
 node_modules/lodash/internal/createFind.js         |    25 -
 node_modules/lodash/internal/createFindIndex.js    |    21 -
 node_modules/lodash/internal/createFindKey.js      |    18 -
 node_modules/lodash/internal/createFlow.js         |    74 -
 node_modules/lodash/internal/createForEach.js      |    20 -
 node_modules/lodash/internal/createForIn.js        |    20 -
 node_modules/lodash/internal/createForOwn.js       |    19 -
 .../lodash/internal/createHybridWrapper.js         |   111 -
 node_modules/lodash/internal/createObjectMapper.js |    26 -
 node_modules/lodash/internal/createPadDir.js       |    18 -
 node_modules/lodash/internal/createPadding.js      |    29 -
 node_modules/lodash/internal/createPartial.js      |    20 -
 .../lodash/internal/createPartialWrapper.js        |    43 -
 node_modules/lodash/internal/createReduce.js       |    22 -
 node_modules/lodash/internal/createRound.js        |    23 -
 node_modules/lodash/internal/createSortedIndex.js  |    20 -
 node_modules/lodash/internal/createWrapper.js      |    86 -
 node_modules/lodash/internal/deburrLetter.js       |    33 -
 node_modules/lodash/internal/equalArrays.js        |    51 -
 node_modules/lodash/internal/equalByTag.js         |    48 -
 node_modules/lodash/internal/equalObjects.js       |    67 -
 node_modules/lodash/internal/escapeHtmlChar.js     |    22 -
 node_modules/lodash/internal/escapeRegExpChar.js   |    38 -
 node_modules/lodash/internal/escapeStringChar.js   |    22 -
 node_modules/lodash/internal/getData.js            |    15 -
 node_modules/lodash/internal/getFuncName.js        |    25 -
 node_modules/lodash/internal/getLength.js          |    15 -
 node_modules/lodash/internal/getMatchData.js       |    21 -
 node_modules/lodash/internal/getNative.js          |    16 -
 node_modules/lodash/internal/getView.js            |    33 -
 node_modules/lodash/internal/indexOfNaN.js         |    23 -
 node_modules/lodash/internal/initCloneArray.js     |    26 -
 node_modules/lodash/internal/initCloneByTag.js     |    63 -
 node_modules/lodash/internal/initCloneObject.js    |    16 -
 node_modules/lodash/internal/invokePath.js         |    26 -
 node_modules/lodash/internal/isArrayLike.js        |    15 -
 node_modules/lodash/internal/isIndex.js            |    24 -
 node_modules/lodash/internal/isIterateeCall.js     |    28 -
 node_modules/lodash/internal/isKey.js              |    28 -
 node_modules/lodash/internal/isLaziable.js         |    27 -
 node_modules/lodash/internal/isLength.js           |    20 -
 node_modules/lodash/internal/isObjectLike.js       |    12 -
 node_modules/lodash/internal/isSpace.js            |    14 -
 node_modules/lodash/internal/isStrictComparable.js |    15 -
 node_modules/lodash/internal/lazyClone.js          |    23 -
 node_modules/lodash/internal/lazyReverse.js        |    23 -
 node_modules/lodash/internal/lazyValue.js          |    72 -
 node_modules/lodash/internal/mapDelete.js          |    14 -
 node_modules/lodash/internal/mapGet.js             |    14 -
 node_modules/lodash/internal/mapHas.js             |    20 -
 node_modules/lodash/internal/mapSet.js             |    18 -
 node_modules/lodash/internal/mergeData.js          |    89 -
 node_modules/lodash/internal/mergeDefaults.js      |    15 -
 node_modules/lodash/internal/metaMap.js            |     9 -
 node_modules/lodash/internal/pickByArray.js        |    28 -
 node_modules/lodash/internal/pickByCallback.js     |    22 -
 node_modules/lodash/internal/reEscape.js           |     4 -
 node_modules/lodash/internal/reEvaluate.js         |     4 -
 node_modules/lodash/internal/reInterpolate.js      |     4 -
 node_modules/lodash/internal/realNames.js          |     4 -
 node_modules/lodash/internal/reorder.js            |    29 -
 node_modules/lodash/internal/replaceHolders.js     |    28 -
 node_modules/lodash/internal/setData.js            |    41 -
 node_modules/lodash/internal/shimKeys.js           |    41 -
 node_modules/lodash/internal/sortedUniq.js         |    29 -
 node_modules/lodash/internal/toIterable.js         |    22 -
 node_modules/lodash/internal/toObject.js           |    14 -
 node_modules/lodash/internal/toPath.js             |    28 -
 node_modules/lodash/internal/trimmedLeftIndex.js   |    19 -
 node_modules/lodash/internal/trimmedRightIndex.js  |    18 -
 node_modules/lodash/internal/unescapeHtmlChar.js   |    22 -
 node_modules/lodash/internal/wrapperClone.js       |    18 -
 node_modules/lodash/lang.js                        |    32 -
 node_modules/lodash/lang/clone.js                  |    70 -
 node_modules/lodash/lang/cloneDeep.js              |    55 -
 node_modules/lodash/lang/eq.js                     |     1 -
 node_modules/lodash/lang/gt.js                     |    25 -
 node_modules/lodash/lang/gte.js                    |    25 -
 node_modules/lodash/lang/isArguments.js            |    34 -
 node_modules/lodash/lang/isArray.js                |    40 -
 node_modules/lodash/lang/isBoolean.js              |    35 -
 node_modules/lodash/lang/isDate.js                 |    35 -
 node_modules/lodash/lang/isElement.js              |    24 -
 node_modules/lodash/lang/isEmpty.js                |    47 -
 node_modules/lodash/lang/isEqual.js                |    54 -
 node_modules/lodash/lang/isError.js                |    36 -
 node_modules/lodash/lang/isFinite.js               |    35 -
 node_modules/lodash/lang/isFunction.js             |    38 -
 node_modules/lodash/lang/isMatch.js                |    49 -
 node_modules/lodash/lang/isNaN.js                  |    34 -
 node_modules/lodash/lang/isNative.js               |    48 -
 node_modules/lodash/lang/isNull.js                 |    21 -
 node_modules/lodash/lang/isNumber.js               |    41 -
 node_modules/lodash/lang/isObject.js               |    28 -
 node_modules/lodash/lang/isPlainObject.js          |    71 -
 node_modules/lodash/lang/isRegExp.js               |    35 -
 node_modules/lodash/lang/isString.js               |    35 -
 node_modules/lodash/lang/isTypedArray.js           |    74 -
 node_modules/lodash/lang/isUndefined.js            |    21 -
 node_modules/lodash/lang/lt.js                     |    25 -
 node_modules/lodash/lang/lte.js                    |    25 -
 node_modules/lodash/lang/toArray.js                |    32 -
 node_modules/lodash/lang/toPlainObject.js          |    31 -
 node_modules/lodash/math.js                        |     9 -
 node_modules/lodash/math/add.js                    |    19 -
 node_modules/lodash/math/ceil.js                   |    25 -
 node_modules/lodash/math/floor.js                  |    25 -
 node_modules/lodash/math/max.js                    |    56 -
 node_modules/lodash/math/min.js                    |    56 -
 node_modules/lodash/math/round.js                  |    25 -
 node_modules/lodash/math/sum.js                    |    50 -
 node_modules/lodash/number.js                      |     4 -
 node_modules/lodash/number/inRange.js              |    47 -
 node_modules/lodash/number/random.js               |    70 -
 node_modules/lodash/object.js                      |    31 -
 node_modules/lodash/object/assign.js               |    43 -
 node_modules/lodash/object/create.js               |    47 -
 node_modules/lodash/object/defaults.js             |    25 -
 node_modules/lodash/object/defaultsDeep.js         |    25 -
 node_modules/lodash/object/extend.js               |     1 -
 node_modules/lodash/object/findKey.js              |    54 -
 node_modules/lodash/object/findLastKey.js          |    54 -
 node_modules/lodash/object/forIn.js                |    33 -
 node_modules/lodash/object/forInRight.js           |    31 -
 node_modules/lodash/object/forOwn.js               |    33 -
 node_modules/lodash/object/forOwnRight.js          |    31 -
 node_modules/lodash/object/functions.js            |    23 -
 node_modules/lodash/object/get.js                  |    33 -
 node_modules/lodash/object/has.js                  |    57 -
 node_modules/lodash/object/invert.js               |    60 -
 node_modules/lodash/object/keys.js                 |    45 -
 node_modules/lodash/object/keysIn.js               |    64 -
 node_modules/lodash/object/mapKeys.js              |    25 -
 node_modules/lodash/object/mapValues.js            |    46 -
 node_modules/lodash/object/merge.js                |    54 -
 node_modules/lodash/object/methods.js              |     1 -
 node_modules/lodash/object/omit.js                 |    47 -
 node_modules/lodash/object/pairs.js                |    33 -
 node_modules/lodash/object/pick.js                 |    42 -
 node_modules/lodash/object/result.js               |    49 -
 node_modules/lodash/object/set.js                  |    55 -
 node_modules/lodash/object/transform.js            |    61 -
 node_modules/lodash/object/values.js               |    33 -
 node_modules/lodash/object/valuesIn.js             |    31 -
 node_modules/lodash/package.json                   |    84 -
 node_modules/lodash/string.js                      |    25 -
 node_modules/lodash/string/camelCase.js            |    27 -
 node_modules/lodash/string/capitalize.js           |    21 -
 node_modules/lodash/string/deburr.js               |    29 -
 node_modules/lodash/string/endsWith.js             |    40 -
 node_modules/lodash/string/escape.js               |    48 -
 node_modules/lodash/string/escapeRegExp.js         |    32 -
 node_modules/lodash/string/kebabCase.js            |    26 -
 node_modules/lodash/string/pad.js                  |    47 -
 node_modules/lodash/string/padLeft.js              |    27 -
 node_modules/lodash/string/padRight.js             |    27 -
 node_modules/lodash/string/parseInt.js             |    46 -
 node_modules/lodash/string/repeat.js               |    47 -
 node_modules/lodash/string/snakeCase.js            |    26 -
 node_modules/lodash/string/startCase.js            |    26 -
 node_modules/lodash/string/startsWith.js           |    36 -
 node_modules/lodash/string/template.js             |   226 -
 node_modules/lodash/string/templateSettings.js     |    67 -
 node_modules/lodash/string/trim.js                 |    42 -
 node_modules/lodash/string/trimLeft.js             |    36 -
 node_modules/lodash/string/trimRight.js            |    36 -
 node_modules/lodash/string/trunc.js                |   105 -
 node_modules/lodash/string/unescape.js             |    33 -
 node_modules/lodash/string/words.js                |    38 -
 node_modules/lodash/support.js                     |    10 -
 node_modules/lodash/utility.js                     |    18 -
 node_modules/lodash/utility/attempt.js             |    32 -
 node_modules/lodash/utility/callback.js            |    53 -
 node_modules/lodash/utility/constant.js            |    23 -
 node_modules/lodash/utility/identity.js            |    20 -
 node_modules/lodash/utility/iteratee.js            |     1 -
 node_modules/lodash/utility/matches.js             |    33 -
 node_modules/lodash/utility/matchesProperty.js     |    32 -
 node_modules/lodash/utility/method.js              |    33 -
 node_modules/lodash/utility/methodOf.js            |    32 -
 node_modules/lodash/utility/mixin.js               |    82 -
 node_modules/lodash/utility/noop.js                |    19 -
 node_modules/lodash/utility/property.js            |    31 -
 node_modules/lodash/utility/propertyOf.js          |    30 -
 node_modules/lodash/utility/range.js               |    66 -
 node_modules/lodash/utility/times.js               |    60 -
 node_modules/lodash/utility/uniqueId.js            |    27 -
 node_modules/minimatch/package.json                |    80 +-
 node_modules/once/package.json                     |    66 +-
 node_modules/os-homedir/index.js                   |    24 -
 node_modules/os-homedir/package.json               |    76 -
 node_modules/os-homedir/readme.md                  |    31 -
 node_modules/os-tmpdir/index.js                    |    25 -
 node_modules/os-tmpdir/license                     |    21 -
 node_modules/os-tmpdir/package.json                |    77 -
 node_modules/os-tmpdir/readme.md                   |    32 -
 node_modules/osenv/.npmignore                      |    13 -
 node_modules/osenv/.travis.yml                     |     9 -
 node_modules/osenv/LICENSE                         |    15 -
 node_modules/osenv/README.md                       |    63 -
 node_modules/osenv/osenv.js                        |    72 -
 node_modules/osenv/package.json                    |    70 -
 node_modules/osenv/test/unix.js                    |    71 -
 node_modules/osenv/test/windows.js                 |    74 -
 node_modules/osenv/x.tap                           |    39 -
 node_modules/path-is-absolute/package.json         |    67 +-
 node_modules/plist/.travis.yml                     |    15 +-
 node_modules/plist/History.md                      |    53 +-
 node_modules/plist/LICENSE                         |     2 +-
 node_modules/plist/README.md                       |    84 +-
 node_modules/plist/index.js                        |    13 +
 node_modules/plist/lib/build.js                    |     1 -
 node_modules/plist/lib/node.js                     |    49 -
 node_modules/plist/lib/parse.js                    |   175 +-
 node_modules/plist/lib/plist.js                    |    23 -
 node_modules/plist/package.json                    |    89 +-
 node_modules/sax/package.json                      |    58 +-
 node_modules/underscore/LICENSE                    |     2 +-
 node_modules/underscore/README.md                  |     6 +
 node_modules/underscore/package.json               |   103 +-
 node_modules/underscore/underscore-min.js          |     7 +-
 node_modules/underscore/underscore-min.js.map      |     1 +
 node_modules/underscore/underscore-min.map         |     1 -
 node_modules/underscore/underscore.js              |   702 +-
 node_modules/unorm/package.json                    |    58 +-
 node_modules/util-deprecate/History.md             |    16 -
 node_modules/util-deprecate/LICENSE                |    24 -
 node_modules/util-deprecate/README.md              |    53 -
 node_modules/util-deprecate/browser.js             |    67 -
 node_modules/util-deprecate/node.js                |     6 -
 node_modules/util-deprecate/package.json           |    60 -
 node_modules/wrappy/package.json                   |    63 +-
 node_modules/xmlbuilder/CHANGELOG.md               |   395 +
 node_modules/xmlbuilder/README.md                  |     5 +-
 node_modules/xmlbuilder/lib/Utility.js             |   139 +
 node_modules/xmlbuilder/lib/XMLAttribute.js        |    13 +-
 node_modules/xmlbuilder/lib/XMLBuilder.js          |    69 -
 node_modules/xmlbuilder/lib/XMLCData.js            |    27 +-
 node_modules/xmlbuilder/lib/XMLComment.js          |    27 +-
 node_modules/xmlbuilder/lib/XMLDTDAttList.js       |    42 +-
 node_modules/xmlbuilder/lib/XMLDTDElement.js       |    35 +-
 node_modules/xmlbuilder/lib/XMLDTDEntity.js        |    54 +-
 node_modules/xmlbuilder/lib/XMLDTDNotation.js      |    43 +-
 node_modules/xmlbuilder/lib/XMLDeclaration.js      |    35 +-
 node_modules/xmlbuilder/lib/XMLDocType.js          |   107 +-
 node_modules/xmlbuilder/lib/XMLDocument.js         |    48 +
 node_modules/xmlbuilder/lib/XMLDocumentCB.js       |   402 +
 node_modules/xmlbuilder/lib/XMLElement.js          |   133 +-
 node_modules/xmlbuilder/lib/XMLNode.js             |   189 +-
 .../xmlbuilder/lib/XMLProcessingInstruction.js     |    42 +-
 node_modules/xmlbuilder/lib/XMLRaw.js              |    27 +-
 node_modules/xmlbuilder/lib/XMLStreamWriter.js     |   278 +
 node_modules/xmlbuilder/lib/XMLStringWriter.js     |   302 +
 node_modules/xmlbuilder/lib/XMLStringifier.js      |    55 +-
 node_modules/xmlbuilder/lib/XMLText.js             |    27 +-
 node_modules/xmlbuilder/lib/XMLWriterBase.js       |    68 +
 node_modules/xmlbuilder/lib/index.js               |    49 +-
 node_modules/xmlbuilder/package.json               |    72 +-
 node_modules/xmldom/package.json                   |    73 +-
 package.json                                       |     2 +-
 540 files changed, 4324 insertions(+), 29339 deletions(-)

diff --git a/node_modules/ansi/package.json b/node_modules/ansi/package.json
index 3a08976..f876559 100644
--- a/node_modules/ansi/package.json
+++ b/node_modules/ansi/package.json
@@ -1,32 +1,46 @@
 {
   "_args": [
     [
-      "ansi@0.3.1",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "ansi@^0.3.1",
+        "scope": null,
+        "escapedName": "ansi",
+        "name": "ansi",
+        "rawSpec": "^0.3.1",
+        "spec": ">=0.3.1 <0.4.0",
+        "type": "range"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
-  "_from": "ansi@0.3.1",
+  "_from": "ansi@>=0.3.1 <0.4.0",
   "_id": "ansi@0.3.1",
-  "_inBundle": false,
-  "_integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=",
+  "_inCache": true,
   "_location": "/ansi",
+  "_nodeVersion": "5.3.0",
+  "_npmUser": {
+    "name": "tootallnate",
+    "email": "nathan@tootallnate.net"
+  },
+  "_npmVersion": "3.3.12",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "ansi@0.3.1",
-    "name": "ansi",
+    "raw": "ansi@^0.3.1",
+    "scope": null,
     "escapedName": "ansi",
-    "rawSpec": "0.3.1",
-    "saveSpec": null,
-    "fetchSpec": "0.3.1"
+    "name": "ansi",
+    "rawSpec": "^0.3.1",
+    "spec": ">=0.3.1 <0.4.0",
+    "type": "range"
   },
   "_requiredBy": [
     "/cordova-common"
   ],
   "_resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz",
-  "_spec": "0.3.1",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_shasum": "0c42d4fb17160d5a9af1e484bace1c66922c1b21",
+  "_shrinkwrap": null,
+  "_spec": "ansi@^0.3.1",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Nathan Rajlich",
     "email": "nathan@tootallnate.net",
@@ -35,7 +49,15 @@
   "bugs": {
     "url": "https://github.com/TooTallNate/ansi.js/issues"
   },
+  "dependencies": {},
   "description": "Advanced ANSI formatting tool for Node.js",
+  "devDependencies": {},
+  "directories": {},
+  "dist": {
+    "shasum": "0c42d4fb17160d5a9af1e484bace1c66922c1b21",
+    "tarball": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz"
+  },
+  "gitHead": "4d0d4af94e0bdaa648bd7262acd3bde4b98d5246",
   "homepage": "https://github.com/TooTallNate/ansi.js#readme",
   "keywords": [
     "ansi",
@@ -49,10 +71,23 @@
   ],
   "license": "MIT",
   "main": "./lib/ansi.js",
+  "maintainers": [
+    {
+      "name": "TooTallNate",
+      "email": "nathan@tootallnate.net"
+    },
+    {
+      "name": "tootallnate",
+      "email": "nathan@tootallnate.net"
+    }
+  ],
   "name": "ansi",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git://github.com/TooTallNate/ansi.js.git"
   },
+  "scripts": {},
   "version": "0.3.1"
 }
diff --git a/node_modules/balanced-match/index.js b/node_modules/balanced-match/index.js
index e8d8587..1685a76 100644
--- a/node_modules/balanced-match/index.js
+++ b/node_modules/balanced-match/index.js
@@ -1,3 +1,4 @@
+'use strict';
 module.exports = balanced;
 function balanced(a, b, str) {
   if (a instanceof RegExp) a = maybeMatch(a, str);
diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json
index c6c7fb9..51cc4d0 100644
--- a/node_modules/balanced-match/package.json
+++ b/node_modules/balanced-match/package.json
@@ -1,32 +1,50 @@
 {
   "_args": [
     [
-      "balanced-match@0.4.2",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "balanced-match@^1.0.0",
+        "scope": null,
+        "escapedName": "balanced-match",
+        "name": "balanced-match",
+        "rawSpec": "^1.0.0",
+        "spec": ">=1.0.0 <2.0.0",
+        "type": "range"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/brace-expansion"
     ]
   ],
-  "_from": "balanced-match@0.4.2",
-  "_id": "balanced-match@0.4.2",
-  "_inBundle": false,
-  "_integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+  "_from": "balanced-match@>=1.0.0 <2.0.0",
+  "_id": "balanced-match@1.0.0",
+  "_inCache": true,
   "_location": "/balanced-match",
+  "_nodeVersion": "7.8.0",
+  "_npmOperationalInternal": {
+    "host": "s3://npm-registry-packages",
+    "tmp": "tmp/balanced-match-1.0.0.tgz_1497251909645_0.8755026108119637"
+  },
+  "_npmUser": {
+    "name": "juliangruber",
+    "email": "julian@juliangruber.com"
+  },
+  "_npmVersion": "4.2.0",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "balanced-match@0.4.2",
-    "name": "balanced-match",
+    "raw": "balanced-match@^1.0.0",
+    "scope": null,
     "escapedName": "balanced-match",
-    "rawSpec": "0.4.2",
-    "saveSpec": null,
-    "fetchSpec": "0.4.2"
+    "name": "balanced-match",
+    "rawSpec": "^1.0.0",
+    "spec": ">=1.0.0 <2.0.0",
+    "type": "range"
   },
   "_requiredBy": [
     "/brace-expansion"
   ],
-  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
-  "_spec": "0.4.2",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+  "_shasum": "89b4d199ab2bee49de164ea02b89ce462d71b767",
+  "_shrinkwrap": null,
+  "_spec": "balanced-match@^1.0.0",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/brace-expansion",
   "author": {
     "name": "Julian Gruber",
     "email": "mail@juliangruber.com",
@@ -38,8 +56,15 @@
   "dependencies": {},
   "description": "Match balanced character pairs, like \"{\" and \"}\"",
   "devDependencies": {
+    "matcha": "^0.7.0",
     "tape": "^4.6.0"
   },
+  "directories": {},
+  "dist": {
+    "shasum": "89b4d199ab2bee49de164ea02b89ce462d71b767",
+    "tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
+  },
+  "gitHead": "d701a549a7653a874eebce7eca25d3577dc868ac",
   "homepage": "https://github.com/juliangruber/balanced-match",
   "keywords": [
     "match",
@@ -50,12 +75,21 @@
   ],
   "license": "MIT",
   "main": "index.js",
+  "maintainers": [
+    {
+      "name": "juliangruber",
+      "email": "julian@juliangruber.com"
+    }
+  ],
   "name": "balanced-match",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git://github.com/juliangruber/balanced-match.git"
   },
   "scripts": {
+    "bench": "make bench",
     "test": "make test"
   },
   "testling": {
@@ -74,5 +108,5 @@
       "android-browser/4.2..latest"
     ]
   },
-  "version": "0.4.2"
+  "version": "1.0.0"
 }
diff --git a/node_modules/base64-js/.travis.yml b/node_modules/base64-js/.travis.yml
deleted file mode 100644
index 939cb51..0000000
--- a/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/base64-js/LICENSE.MIT b/node_modules/base64-js/LICENSE
similarity index 100%
rename from node_modules/base64-js/LICENSE.MIT
rename to node_modules/base64-js/LICENSE
diff --git a/node_modules/base64-js/README.md b/node_modules/base64-js/README.md
index ed31d1a..e546d86 100644
--- a/node_modules/base64-js/README.md
+++ b/node_modules/base64-js/README.md
@@ -21,11 +21,12 @@ With [npm](https://npmjs.org) do:
 
 `var base64 = require('base64-js')`
 
-`base64` has two exposed functions, `toByteArray` and `fromByteArray`, which both take a single argument.
+`base64` has three exposed functions, `byteLength`, `toByteArray` and `fromByteArray`, which both take a single argument.
 
+* `byteLength` - Takes a base64 string and returns length of byte array
 * `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
+MIT
diff --git a/node_modules/base64-js/base64js.min.js b/node_modules/base64-js/base64js.min.js
new file mode 100644
index 0000000..22ad807
--- /dev/null
+++ b/node_modules/base64-js/base64js.min.js
@@ -0,0 +1 @@
+(function(r){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=r()}else if(typeof define==="function"&&define.amd){define([],r)}else{var e;if(typeof window!=="undefined"){e=window}else if(typeof global!=="undefined"){e=global}else if(typeof self!=="undefined"){e=self}else{e=this}e.base64js=r()}})(function(){var r,e,t;return function r(e,t,n){function o(i,a){if(!t[i]){if(!e[i]){var u=typeof require=="function"&&require;if(!a&&u)return u(i,!0);if(f)return f(i,!0);va [...]
diff --git a/node_modules/base64-js/bench/bench.js b/node_modules/base64-js/bench/bench.js
deleted file mode 100644
index 0689e08..0000000
--- a/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/base64-js/index.js b/node_modules/base64-js/index.js
new file mode 100644
index 0000000..8e806ac
--- /dev/null
+++ b/node_modules/base64-js/index.js
@@ -0,0 +1,114 @@
+'use strict'
+
+exports.byteLength = byteLength
+exports.toByteArray = toByteArray
+exports.fromByteArray = fromByteArray
+
+var lookup = []
+var revLookup = []
+var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
+
+var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+for (var i = 0, len = code.length; i < len; ++i) {
+  lookup[i] = code[i]
+  revLookup[code.charCodeAt(i)] = i
+}
+
+revLookup['-'.charCodeAt(0)] = 62
+revLookup['_'.charCodeAt(0)] = 63
+
+function placeHoldersCount (b64) {
+  var len = b64.length
+  if (len % 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
+  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
+}
+
+function byteLength (b64) {
+  // base64 is 4/3 + up to two characters of the original data
+  return b64.length * 3 / 4 - placeHoldersCount(b64)
+}
+
+function toByteArray (b64) {
+  var i, j, l, tmp, placeHolders, arr
+  var len = b64.length
+  placeHolders = placeHoldersCount(b64)
+
+  arr = new Arr(len * 3 / 4 - placeHolders)
+
+  // if there are placeholders, only get up to the last complete 4 chars
+  l = placeHolders > 0 ? len - 4 : len
+
+  var L = 0
+
+  for (i = 0, j = 0; i < l; i += 4, j += 3) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
+    arr[L++] = (tmp >> 16) & 0xFF
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  if (placeHolders === 2) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
+    arr[L++] = tmp & 0xFF
+  } else if (placeHolders === 1) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  return arr
+}
+
+function tripletToBase64 (num) {
+  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
+}
+
+function encodeChunk (uint8, start, end) {
+  var tmp
+  var output = []
+  for (var i = start; i < end; i += 3) {
+    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
+    output.push(tripletToBase64(tmp))
+  }
+  return output.join('')
+}
+
+function fromByteArray (uint8) {
+  var tmp
+  var len = uint8.length
+  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
+  var output = ''
+  var parts = []
+  var maxChunkLength = 16383 // must be multiple of 3
+
+  // go through the array every three bytes, we'll deal with trailing stuff later
+  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
+  }
+
+  // pad the end with zeros, but make sure to not forget the extra bytes
+  if (extraBytes === 1) {
+    tmp = uint8[len - 1]
+    output += lookup[tmp >> 2]
+    output += lookup[(tmp << 4) & 0x3F]
+    output += '=='
+  } else if (extraBytes === 2) {
+    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
+    output += lookup[tmp >> 10]
+    output += lookup[(tmp >> 4) & 0x3F]
+    output += lookup[(tmp << 2) & 0x3F]
+    output += '='
+  }
+
+  parts.push(output)
+
+  return parts.join('')
+}
diff --git a/node_modules/base64-js/lib/b64.js b/node_modules/base64-js/lib/b64.js
deleted file mode 100644
index 46001d2..0000000
--- a/node_modules/base64-js/lib/b64.js
+++ /dev/null
@@ -1,124 +0,0 @@
-var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-
-;(function (exports) {
-	'use strict';
-
-  var Arr = (typeof Uint8Array !== 'undefined')
-    ? Uint8Array
-    : Array
-
-	var PLUS   = '+'.charCodeAt(0)
-	var SLASH  = '/'.charCodeAt(0)
-	var NUMBER = '0'.charCodeAt(0)
-	var LOWER  = 'a'.charCodeAt(0)
-	var UPPER  = 'A'.charCodeAt(0)
-	var PLUS_URL_SAFE = '-'.charCodeAt(0)
-	var SLASH_URL_SAFE = '_'.charCodeAt(0)
-
-	function decode (elt) {
-		var code = elt.charCodeAt(0)
-		if (code === PLUS ||
-		    code === PLUS_URL_SAFE)
-			return 62 // '+'
-		if (code === SLASH ||
-		    code === SLASH_URL_SAFE)
-			return 63 // '/'
-		if (code < NUMBER)
-			return -1 //no match
-		if (code < NUMBER + 10)
-			return code - NUMBER + 26 + 26
-		if (code < UPPER + 26)
-			return code - UPPER
-		if (code < LOWER + 26)
-			return code - LOWER + 26
-	}
-
-	function b64ToByteArray (b64) {
-		var i, j, l, tmp, placeHolders, arr
-
-		if (b64.length % 4 > 0) {
-			throw new Error('Invalid string. Length must be a multiple of 4')
-		}
-
-		// the number of equal signs (place holders)
-		// if there are two placeholders, than the two characters before it
-		// represent one byte
-		// if there is only one, then the three characters before it represent 2 bytes
-		// this is just a cheap hack to not do indexOf twice
-		var len = b64.length
-		placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
-
-		// base64 is 4/3 + up to two characters of the original data
-		arr = new Arr(b64.length * 3 / 4 - placeHolders)
-
-		// if there are placeholders, only get up to the last complete 4 chars
-		l = placeHolders > 0 ? b64.length - 4 : b64.length
-
-		var L = 0
-
-		function push (v) {
-			arr[L++] = v
-		}
-
-		for (i = 0, j = 0; i < l; i += 4, j += 3) {
-			tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
-			push((tmp & 0xFF0000) >> 16)
-			push((tmp & 0xFF00) >> 8)
-			push(tmp & 0xFF)
-		}
-
-		if (placeHolders === 2) {
-			tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
-			push(tmp & 0xFF)
-		} else if (placeHolders === 1) {
-			tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
-			push((tmp >> 8) & 0xFF)
-			push(tmp & 0xFF)
-		}
-
-		return arr
-	}
-
-	function uint8ToBase64 (uint8) {
-		var i,
-			extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
-			output = "",
-			temp, length
-
-		function encode (num) {
-			return lookup.charAt(num)
-		}
-
-		function tripletToBase64 (num) {
-			return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
-		}
-
-		// go through the array every three bytes, we'll deal with trailing stuff later
-		for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
-			temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
-			output += tripletToBase64(temp)
-		}
-
-		// pad the end with zeros, but make sure to not forget the extra bytes
-		switch (extraBytes) {
-			case 1:
-				temp = uint8[uint8.length - 1]
-				output += encode(temp >> 2)
-				output += encode((temp << 4) & 0x3F)
-				output += '=='
-				break
-			case 2:
-				temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
-				output += encode(temp >> 10)
-				output += encode((temp >> 4) & 0x3F)
-				output += encode((temp << 2) & 0x3F)
-				output += '='
-				break
-		}
-
-		return output
-	}
-
-	exports.toByteArray = b64ToByteArray
-	exports.fromByteArray = uint8ToBase64
-}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
diff --git a/node_modules/base64-js/package.json b/node_modules/base64-js/package.json
index 801b9a1..991661b 100644
--- a/node_modules/base64-js/package.json
+++ b/node_modules/base64-js/package.json
@@ -1,32 +1,50 @@
 {
   "_args": [
     [
-      "base64-js@0.0.8",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "base64-js@1.2.0",
+        "scope": null,
+        "escapedName": "base64-js",
+        "name": "base64-js",
+        "rawSpec": "1.2.0",
+        "spec": "1.2.0",
+        "type": "version"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/plist"
     ]
   ],
-  "_from": "base64-js@0.0.8",
-  "_id": "base64-js@0.0.8",
-  "_inBundle": false,
-  "_integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=",
+  "_from": "base64-js@1.2.0",
+  "_id": "base64-js@1.2.0",
+  "_inCache": true,
   "_location": "/base64-js",
+  "_nodeVersion": "6.5.0",
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/base64-js-1.2.0.tgz_1474574119286_0.4763944323640317"
+  },
+  "_npmUser": {
+    "name": "feross",
+    "email": "feross@feross.org"
+  },
+  "_npmVersion": "3.10.3",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "base64-js@0.0.8",
-    "name": "base64-js",
+    "raw": "base64-js@1.2.0",
+    "scope": null,
     "escapedName": "base64-js",
-    "rawSpec": "0.0.8",
-    "saveSpec": null,
-    "fetchSpec": "0.0.8"
+    "name": "base64-js",
+    "rawSpec": "1.2.0",
+    "spec": "1.2.0",
+    "type": "version"
   },
   "_requiredBy": [
     "/plist"
   ],
-  "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
-  "_spec": "0.0.8",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz",
+  "_shasum": "a39992d723584811982be5e290bb6a53d86700f1",
+  "_shrinkwrap": null,
+  "_spec": "base64-js@1.2.0",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/plist",
   "author": {
     "name": "T. Jameson Little",
     "email": "t.jameson.little@gmail.com"
@@ -37,33 +55,51 @@
   "dependencies": {},
   "description": "Base64 encoding/decoding in pure JS",
   "devDependencies": {
-    "tape": "~2.3.2"
+    "benchmark": "^2.1.0",
+    "browserify": "^13.0.0",
+    "standard": "*",
+    "tape": "4.x",
+    "uglify-js": "^2.6.2"
   },
-  "engines": {
-    "node": ">= 0.4"
+  "directories": {},
+  "dist": {
+    "shasum": "a39992d723584811982be5e290bb6a53d86700f1",
+    "tarball": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz"
   },
-  "homepage": "https://github.com/beatgammit/base64-js#readme",
+  "files": [
+    "test",
+    "index.js",
+    "base64js.min.js"
+  ],
+  "gitHead": "18bb7b2f20af653e60ae186bd879d3c4e6e6d8e6",
+  "homepage": "https://github.com/beatgammit/base64-js",
+  "keywords": [
+    "base64"
+  ],
   "license": "MIT",
-  "main": "lib/b64.js",
+  "main": "index.js",
+  "maintainers": [
+    {
+      "name": "beatgammit",
+      "email": "t.jameson.little@gmail.com"
+    },
+    {
+      "name": "feross",
+      "email": "feross@feross.org"
+    }
+  ],
   "name": "base64-js",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git://github.com/beatgammit/base64-js.git"
   },
   "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"
-    ]
+    "build": "browserify -s base64js -r ./ | uglifyjs -m > base64js.min.js",
+    "lint": "standard",
+    "test": "npm run lint && npm run unit",
+    "unit": "tape test/*.js"
   },
-  "version": "0.0.8"
+  "version": "1.2.0"
 }
diff --git a/node_modules/base64-js/test/big-data.js b/node_modules/base64-js/test/big-data.js
new file mode 100644
index 0000000..be16ebe
--- /dev/null
+++ b/node_modules/base64-js/test/big-data.js
@@ -0,0 +1,24 @@
+var test = require('tape')
+var b64 = require('../')
+
+test('convert big data to base64', function (t) {
+  var b64str, arr, i, length
+  var big = new Uint8Array(64 * 1024 * 1024)
+  for (i = 0, length = big.length; i < length; ++i) {
+    big[i] = i % 256
+  }
+  b64str = b64.fromByteArray(big)
+  arr = b64.toByteArray(b64str)
+  t.ok(equal(arr, big))
+  t.end()
+})
+
+function equal (a, b) {
+  var i
+  var length = a.length
+  if (length !== b.length) return false
+  for (i = 0; i < length; ++i) {
+    if (a[i] !== b[i]) return false
+  }
+  return true
+}
diff --git a/node_modules/base64-js/test/convert.js b/node_modules/base64-js/test/convert.js
index 60b09c0..d68e105 100644
--- a/node_modules/base64-js/test/convert.js
+++ b/node_modules/base64-js/test/convert.js
@@ -1,51 +1,48 @@
-var test = require('tape'),
-  b64 = require('../lib/b64'),
-	checks = [
-		'a',
-		'aa',
-		'aaa',
-		'hi',
-		'hi!',
-		'hi!!',
-		'sup',
-		'sup?',
-		'sup?!'
-	];
+var test = require('tape')
+var b64 = require('../')
+var checks = [
+  'a',
+  'aa',
+  'aaa',
+  'hi',
+  'hi!',
+  'hi!!',
+  'sup',
+  'sup?',
+  'sup?!'
+]
 
 test('convert to base64 and back', function (t) {
-  t.plan(checks.length);
+  t.plan(checks.length * 2)
 
   for (var i = 0; i < checks.length; i++) {
-    var check = checks[i],
-      b64Str,
-      arr,
-      str;
+    var check = checks[i]
+    var b64Str, arr, str
 
-    b64Str = b64.fromByteArray(map(check, function (char) { return char.charCodeAt(0); }));
+    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('');
+    arr = b64.toByteArray(b64Str)
+    str = map(arr, function (byte) { return String.fromCharCode(byte) }).join('')
 
-    t.equal(check, str, 'Checked ' + check);
+    t.equal(check, str, 'Checked ' + check)
+    t.equal(b64.byteLength(b64Str), arr.length, 'Checked length for ' + 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;
+  var res = []
+  var 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
 }
diff --git a/node_modules/base64-js/test/url-safe.js b/node_modules/base64-js/test/url-safe.js
index dc437e9..3203b33 100644
--- a/node_modules/base64-js/test/url-safe.js
+++ b/node_modules/base64-js/test/url-safe.js
@@ -1,18 +1,18 @@
-var test = require('tape'),
-  b64 = require('../lib/b64');
+var test = require('tape')
+var b64 = require('../')
 
 test('decode url-safe style base64 strings', function (t) {
-  var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff];
+  var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff]
 
-  var actual = b64.toByteArray('//++/++/++//');
+  var actual = b64.toByteArray('//++/++/++//')
   for (var i = 0; i < actual.length; i++) {
     t.equal(actual[i], expected[i])
   }
 
-  actual = b64.toByteArray('__--_--_--__');
-  for (var i = 0; i < actual.length; i++) {
+  actual = b64.toByteArray('__--_--_--__')
+  for (i = 0; i < actual.length; i++) {
     t.equal(actual[i], expected[i])
   }
-  
-  t.end();
-});
+
+  t.end()
+})
diff --git a/node_modules/big-integer/BigInteger.d.ts b/node_modules/big-integer/BigInteger.d.ts
index d70e401..a367aa1 100644
--- a/node_modules/big-integer/BigInteger.d.ts
+++ b/node_modules/big-integer/BigInteger.d.ts
@@ -101,6 +101,11 @@ declare namespace bigInt {
         and(number: BigNumber): BigInteger;
 
         /**
+         * Returns the number of digits required to represent a bigInt in binary.
+         */
+        bitLength(): BigInteger;
+
+        /**
          * Performs a comparison between two numbers. If the numbers are equal, it returns 0.
          * If the first number is greater, it returns 1. If the first number is lesser, it returns -1.
          */
@@ -338,6 +343,12 @@ declare namespace bigInt {
         times(number: BigNumber): BigInteger;
 
         /**
+         *
+         * Converts a bigInt to an object representing it as an array of integers module the given radix.
+         */
+         toArray(radix: number): BaseArray;
+
+        /**
          * Converts a bigInt into a native Javascript number. Loses precision for numbers outside the range.
          */
         toJSNumber(): number;
@@ -2366,4 +2377,9 @@ declare namespace bigInt {
         '998': BigInteger;
         '999': BigInteger;
     }
+
+    interface BaseArray {
+        value: number[],
+        isNegative: boolean
+    }
 }
diff --git a/node_modules/big-integer/BigInteger.js b/node_modules/big-integer/BigInteger.js
index 9a65a5f..697e9c8 100644
--- a/node_modules/big-integer/BigInteger.js
+++ b/node_modules/big-integer/BigInteger.js
@@ -179,7 +179,7 @@ var bigInt = (function (undefined) {
     function subtractAny(a, b, sign) {
         var value;
         if (compareAbs(a, b) >= 0) {
-            value = subtract(a,b);
+            value = subtract(a, b);
         } else {
             value = subtract(b, a);
             sign = !sign;
@@ -354,16 +354,16 @@ var bigInt = (function (undefined) {
         return new BigInteger(multiplyLong(b, smallToArray(a)), sign);
     }
     SmallInteger.prototype._multiplyBySmall = function (a) {
-            if (isPrecise(a.value * this.value)) {
-                return new SmallInteger(a.value * this.value);
-            }
-            return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);
+        if (isPrecise(a.value * this.value)) {
+            return new SmallInteger(a.value * this.value);
+        }
+        return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);
     };
     BigInteger.prototype._multiplyBySmall = function (a) {
-            if (a.value === 0) return Integer[0];
-            if (a.value === 1) return this;
-            if (a.value === -1) return this.negate();
-            return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);
+        if (a.value === 0) return Integer[0];
+        if (a.value === 1) return this;
+        if (a.value === -1) return this.negate();
+        return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);
     };
     SmallInteger.prototype.multiply = function (v) {
         return parseValue(v)._multiplyBySmall(this);
@@ -416,7 +416,7 @@ var bigInt = (function (undefined) {
         for (shift = a_l - b_l; shift >= 0; shift--) {
             quotientDigit = base - 1;
             if (remainder[shift + b_l] !== divisorMostSignificantDigit) {
-              quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);
+                quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);
             }
             // quotientDigit <= base - 1
             carry = 0;
@@ -799,7 +799,7 @@ var bigInt = (function (undefined) {
         for (i = 0; i < a.length; i++) {
             x = bigInt(a[i]).modPow(b, n);
             if (x.equals(Integer[1]) || x.equals(nPrev)) continue;
-            for (t = true, d = b; t && d.lesser(nPrev) ; d = d.multiply(2)) {
+            for (t = true, d = b; t && d.lesser(nPrev); d = d.multiply(2)) {
                 x = x.square().mod(n);
                 if (x.equals(nPrev)) t = false;
             }
@@ -975,6 +975,29 @@ var bigInt = (function (undefined) {
         return x & -x;
     }
 
+    function integerLogarithm(value, base) {
+        if (base.compareTo(value) <= 0) {
+            var tmp = integerLogarithm(value, base.square(base));
+            var p = tmp.p;
+            var e = tmp.e;
+            var t = p.multiply(base);
+            return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };
+        }
+        return { p: bigInt(1), e: 0 };
+    }
+
+    BigInteger.prototype.bitLength = function () {
+        var n = this;
+        if (n.compareTo(bigInt(0)) < 0) {
+            n = n.negate().subtract(bigInt(1));
+        }
+        if (n.compareTo(bigInt(0)) === 0) {
+            return bigInt(0);
+        }
+        return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));
+    }
+    SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;
+
     function max(a, b) {
         a = parseValue(a);
         b = parseValue(b);
@@ -1036,26 +1059,26 @@ var bigInt = (function (undefined) {
     }
     var parseBase = function (text, base) {
         var length = text.length;
-		var i;
-		var absBase = Math.abs(base);
-		for(var i = 0; i < length; i++) {
-			var c = text[i].toLowerCase();
-			if(c === "-") continue;
-			if(/[a-z0-9]/.test(c)) {
-			    if(/[0-9]/.test(c) && +c >= absBase) {
-					if(c === "1" && absBase === 1) continue;
+        var i;
+        var absBase = Math.abs(base);
+        for (var i = 0; i < length; i++) {
+            var c = text[i].toLowerCase();
+            if (c === "-") continue;
+            if (/[a-z0-9]/.test(c)) {
+                if (/[0-9]/.test(c) && +c >= absBase) {
+                    if (c === "1" && absBase === 1) continue;
+                    throw new Error(c + " is not a valid digit in base " + base + ".");
+                } else if (c.charCodeAt(0) - 87 >= absBase) {
                     throw new Error(c + " is not a valid digit in base " + base + ".");
-				} else if(c.charCodeAt(0) - 87 >= absBase) {
-					throw new Error(c + " is not a valid digit in base " + base + ".");
-				}
-			}
-		}
+                }
+            }
+        }
         if (2 <= base && base <= 36) {
             if (length <= LOG_MAX_INT / Math.log(base)) {
-				var result = parseInt(text, base);
-				if(isNaN(result)) {
-					throw new Error(c + " is not a valid digit in base " + base + ".");
-				}
+                var result = parseInt(text, base);
+                if (isNaN(result)) {
+                    throw new Error(c + " is not a valid digit in base " + base + ".");
+                }
                 return new SmallInteger(parseInt(text, base));
             }
         }
@@ -1087,32 +1110,50 @@ var bigInt = (function (undefined) {
     }
 
     function stringify(digit) {
-        var v = digit.value;
-        if (typeof v === "number") v = [v];
-        if (v.length === 1 && v[0] <= 35) {
-            return "0123456789abcdefghijklmnopqrstuvwxyz".charAt(v[0]);
+        if (digit <= 35) {
+            return "0123456789abcdefghijklmnopqrstuvwxyz".charAt(digit);
         }
-        return "<" + v + ">";
+        return "<" + digit + ">";
     }
+
     function toBase(n, base) {
         base = bigInt(base);
         if (base.isZero()) {
-            if (n.isZero()) return "0";
+            if (n.isZero()) return { value: [0], isNegative: false };
             throw new Error("Cannot convert nonzero numbers to base 0.");
         }
         if (base.equals(-1)) {
-            if (n.isZero()) return "0";
-            if (n.isNegative()) return new Array(1 - n).join("10");
-            return "1" + new Array(+n).join("01");
-        }
-        var minusSign = "";
+            if (n.isZero()) return { value: [0], isNegative: false };
+            if (n.isNegative())
+                return {
+                    value: [].concat.apply([], Array.apply(null, Array(-n))
+                        .map(Array.prototype.valueOf, [1, 0])
+                    ),
+                    isNegative: false
+                };
+
+            var arr = Array.apply(null, Array(+n - 1))
+                .map(Array.prototype.valueOf, [0, 1]);
+            arr.unshift([1]);
+            return {
+                value: [].concat.apply([], arr),
+                isNegative: false
+            };
+        }
+
+        var neg = false;
         if (n.isNegative() && base.isPositive()) {
-            minusSign = "-";
+            neg = true;
             n = n.abs();
         }
         if (base.equals(1)) {
-            if (n.isZero()) return "0";
-            return minusSign + new Array(+n + 1).join(1);
+            if (n.isZero()) return { value: [0], isNegative: false };
+
+            return {
+                value: Array.apply(null, Array(+n))
+                    .map(Number.prototype.valueOf, 1),
+                isNegative: neg
+            };
         }
         var out = [];
         var left = n, divmod;
@@ -1124,15 +1165,28 @@ var bigInt = (function (undefined) {
                 digit = base.minus(digit).abs();
                 left = left.next();
             }
-            out.push(stringify(digit));
+            out.push(digit.toJSNumber());
         }
-        out.push(stringify(left));
-        return minusSign + out.reverse().join("");
+        out.push(left.toJSNumber());
+        return { value: out.reverse(), isNegative: neg };
     }
 
+    function toBaseString(n, base) {
+        var arr = toBase(n, base);
+        return (arr.isNegative ? "-" : "") + arr.value.map(stringify).join('');
+    }
+
+    BigInteger.prototype.toArray = function (radix) {
+        return toBase(this, radix);
+    };
+
+    SmallInteger.prototype.toArray = function (radix) {
+        return toBase(this, radix);
+    };
+
     BigInteger.prototype.toString = function (radix) {
         if (radix === undefined) radix = 10;
-        if (radix !== 10) return toBase(this, radix);
+        if (radix !== 10) return toBaseString(this, radix);
         var v = this.value, l = v.length, str = String(v[--l]), zeros = "0000000", digit;
         while (--l >= 0) {
             digit = String(v[l]);
@@ -1144,13 +1198,13 @@ var bigInt = (function (undefined) {
 
     SmallInteger.prototype.toString = function (radix) {
         if (radix === undefined) radix = 10;
-        if (radix != 10) return toBase(this, radix);
+        if (radix != 10) return toBaseString(this, radix);
         return String(this.value);
     };
-    BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function() { return this.toString(); }
+    BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }
 
     BigInteger.prototype.valueOf = function () {
-        return +this.toString();
+        return parseInt(this.toString(), 10);
     };
     BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;
 
@@ -1160,42 +1214,42 @@ var bigInt = (function (undefined) {
     SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;
 
     function parseStringValue(v) {
-            if (isPrecise(+v)) {
-                var x = +v;
-                if (x === truncate(x))
-                    return new SmallInteger(x);
-                throw "Invalid integer: " + v;
-            }
-            var sign = v[0] === "-";
-            if (sign) v = v.slice(1);
-            var split = v.split(/e/i);
-            if (split.length > 2) throw new Error("Invalid integer: " + split.join("e"));
-            if (split.length === 2) {
-                var exp = split[1];
-                if (exp[0] === "+") exp = exp.slice(1);
-                exp = +exp;
-                if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error("Invalid integer: " + exp + " is not a valid exponent.");
-                var text = split[0];
-                var decimalPlace = text.indexOf(".");
-                if (decimalPlace >= 0) {
-                    exp -= text.length - decimalPlace - 1;
-                    text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);
-                }
-                if (exp < 0) throw new Error("Cannot include negative exponent part for integers");
-                text += (new Array(exp + 1)).join("0");
-                v = text;
+        if (isPrecise(+v)) {
+            var x = +v;
+            if (x === truncate(x))
+                return new SmallInteger(x);
+            throw new Error("Invalid integer: " + v);
+        }
+        var sign = v[0] === "-";
+        if (sign) v = v.slice(1);
+        var split = v.split(/e/i);
+        if (split.length > 2) throw new Error("Invalid integer: " + split.join("e"));
+        if (split.length === 2) {
+            var exp = split[1];
+            if (exp[0] === "+") exp = exp.slice(1);
+            exp = +exp;
+            if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error("Invalid integer: " + exp + " is not a valid exponent.");
+            var text = split[0];
+            var decimalPlace = text.indexOf(".");
+            if (decimalPlace >= 0) {
+                exp -= text.length - decimalPlace - 1;
+                text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);
             }
-            var isValid = /^([0-9][0-9]*)$/.test(v);
-            if (!isValid) throw new Error("Invalid integer: " + v);
-            var r = [], max = v.length, l = LOG_BASE, min = max - l;
-            while (max > 0) {
-                r.push(+v.slice(min, max));
-                min -= l;
-                if (min < 0) min = 0;
-                max -= l;
-            }
-            trim(r);
-            return new BigInteger(r, sign);
+            if (exp < 0) throw new Error("Cannot include negative exponent part for integers");
+            text += (new Array(exp + 1)).join("0");
+            v = text;
+        }
+        var isValid = /^([0-9][0-9]*)$/.test(v);
+        if (!isValid) throw new Error("Invalid integer: " + v);
+        var r = [], max = v.length, l = LOG_BASE, min = max - l;
+        while (max > 0) {
+            r.push(+v.slice(min, max));
+            min -= l;
+            if (min < 0) min = 0;
+            max -= l;
+        }
+        trim(r);
+        return new BigInteger(r, sign);
     }
 
     function parseNumberValue(v) {
@@ -1244,8 +1298,8 @@ if (typeof module !== "undefined" && module.hasOwnProperty("exports")) {
 }
 
 //amd check
-if ( typeof define === "function" && define.amd ) {
-  define( "big-integer", [], function() {
-    return bigInt;
-  });
+if (typeof define === "function" && define.amd) {
+    define("big-integer", [], function () {
+        return bigInt;
+    });
 }
diff --git a/node_modules/big-integer/BigInteger.min.js b/node_modules/big-integer/BigInteger.min.js
index a868e44..c775f97 100644
--- a/node_modules/big-integer/BigInteger.min.js
+++ b/node_modules/big-integer/BigInteger.min.js
@@ -1 +1 @@
-var bigInt=function(undefined){"use strict";var BASE=1e7,LOG_BASE=7,MAX_INT=9007199254740992,MAX_INT_ARR=smallToArray(MAX_INT),LOG_MAX_INT=Math.log(MAX_INT);function Integer(v,radix){if(typeof v==="undefined")return Integer[0];if(typeof radix!=="undefined")return+radix===10?parseValue(v):parseBase(v,radix);return parseValue(v)}function BigInteger(value,sign){this.value=value;this.sign=sign;this.isSmall=false}BigInteger.prototype=Object.create(Integer.prototype);function SmallInteger(valu [...]
\ No newline at end of file
+var bigInt=function(undefined){"use strict";var BASE=1e7,LOG_BASE=7,MAX_INT=9007199254740992,MAX_INT_ARR=smallToArray(MAX_INT),LOG_MAX_INT=Math.log(MAX_INT);function Integer(v,radix){if(typeof v==="undefined")return Integer[0];if(typeof radix!=="undefined")return+radix===10?parseValue(v):parseBase(v,radix);return parseValue(v)}function BigInteger(value,sign){this.value=value;this.sign=sign;this.isSmall=false}BigInteger.prototype=Object.create(Integer.prototype);function SmallInteger(valu [...]
\ No newline at end of file
diff --git a/node_modules/big-integer/README.md b/node_modules/big-integer/README.md
index 5824f7e..55ab8d3 100644
--- a/node_modules/big-integer/README.md
+++ b/node_modules/big-integer/README.md
@@ -92,6 +92,12 @@ Performs the bitwise AND operation. The operands are treated as if they were rep
  - `bigInt(6).and(3)` => `2`
  - `bigInt(6).and(-3)` => `4`
 
+#### `bitLength()`
+
+Returns the number of digits required to represent a bigInt in binary.
+
+ - `bigInt(5)` => `3` (since 5 is `101` in binary, which is three digits long)
+
 #### `compare(number)`
 
 Performs a comparison between two numbers. If the numbers are equal, it returns `0`. If the first number is greater, it returns `1`. If the first number is lesser, it returns `-1`.
@@ -406,6 +412,50 @@ Alias for the `multiply` method.
  
 [View benchmarks for this method](http://peterolson.github.io/BigInteger.js/benchmark/#Multiplication)
 
+#### `toArray(radix)`
+
+Converts a bigInt into an object with the properties "value" and "isNegative." "Value" is an array of integers modulo the given radix. "isNegative" is a boolean that represents the sign of the result.
+
+ - `bigInt("1e9").toArray(10)` => {
+     value: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+     isNegative: false
+   }
+ - `bigInt("1e9").toArray(16)` => {
+     value: [3, 11, 9, 10, 12, 10, 0, 0],
+     isNegative: false
+   }
+ - `bigInt(567890).toArray(100)` => {
+     value: [56, 78, 90],
+     isNegative: false
+   }
+
+Negative bases are supported.
+
+ - `bigInt(12345).toArray(-10)` => {
+     value: [2, 8, 4, 6, 5],
+     isNegative: false
+   }
+
+Base 1 and base -1 are also supported.
+
+ - `bigInt(-15).toArray(1)` => {
+     value: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
+     isNegative: true
+   }
+ - `bigInt(-15).toArray(-1)` => {
+     value: [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+             0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
+     isNegative: false
+   }
+
+Base 0 is only allowed for the number zero.
+
+ - `bigInt(0).toArray(0)` => {
+     value: [0],
+     isNegative: false
+   }
+ - `bigInt(1).toArray(0)` => `Error: Cannot convert nonzero numbers to base 0.`
+
 #### `toJSNumber()`
 
 Converts a bigInt into a native Javascript number. Loses precision for numbers outside the range `[-9007199254740992, 9007199254740992]`.
diff --git a/node_modules/big-integer/package.json b/node_modules/big-integer/package.json
index 623f4c2..4ce10bd 100644
--- a/node_modules/big-integer/package.json
+++ b/node_modules/big-integer/package.json
@@ -1,32 +1,50 @@
 {
   "_args": [
     [
-      "big-integer@1.6.26",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "big-integer@^1.6.7",
+        "scope": null,
+        "escapedName": "big-integer",
+        "name": "big-integer",
+        "rawSpec": "^1.6.7",
+        "spec": ">=1.6.7 <2.0.0",
+        "type": "range"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/bplist-parser"
     ]
   ],
-  "_from": "big-integer@1.6.26",
-  "_id": "big-integer@1.6.26",
-  "_inBundle": false,
-  "_integrity": "sha1-OvFnL6Ytry1eyvrPblqg0l4Cwcg=",
+  "_from": "big-integer@>=1.6.7 <2.0.0",
+  "_id": "big-integer@1.6.31",
+  "_inCache": true,
   "_location": "/big-integer",
+  "_nodeVersion": "9.3.0",
+  "_npmOperationalInternal": {
+    "host": "s3://npm-registry-packages",
+    "tmp": "tmp/big-integer_1.6.31_1528424277906_0.6871956934367633"
+  },
+  "_npmUser": {
+    "name": "peterolson",
+    "email": "peter.e.c.olson+npm@gmail.com"
+  },
+  "_npmVersion": "6.0.0",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "big-integer@1.6.26",
-    "name": "big-integer",
+    "raw": "big-integer@^1.6.7",
+    "scope": null,
     "escapedName": "big-integer",
-    "rawSpec": "1.6.26",
-    "saveSpec": null,
-    "fetchSpec": "1.6.26"
+    "name": "big-integer",
+    "rawSpec": "^1.6.7",
+    "spec": ">=1.6.7 <2.0.0",
+    "type": "range"
   },
   "_requiredBy": [
     "/bplist-parser"
   ],
-  "_resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.26.tgz",
-  "_spec": "1.6.26",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.31.tgz",
+  "_shasum": "6d7852486e67c642502dcc03f7225a245c9fc7fa",
+  "_shrinkwrap": null,
+  "_spec": "big-integer@^1.6.7",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/bplist-parser",
   "author": {
     "name": "Peter Olson",
     "email": "peter.e.c.olson+npm@gmail.com"
@@ -36,14 +54,16 @@
     "url": "https://github.com/peterolson/BigInteger.js/issues"
   },
   "contributors": [],
+  "dependencies": {},
   "description": "An arbitrary length integer library for Javascript",
   "devDependencies": {
-    "@types/lodash": "^4.14.64",
-    "@types/node": "^7.0.22",
+    "@types/lodash": "^4.14.109",
+    "@types/node": "^7.0.65",
     "coveralls": "^2.11.4",
     "jasmine": "2.1.x",
     "jasmine-core": "^2.3.4",
-    "karma": "^0.13.3",
+    "karma": "^0.13.22",
+    "karma-cli": "^1.0.1",
     "karma-coverage": "^0.4.2",
     "karma-jasmine": "^0.3.6",
     "karma-phantomjs-launcher": "^1.0.4",
@@ -51,9 +71,19 @@
     "typescript": "^2.3.3",
     "uglifyjs": "^2.4.10"
   },
+  "directories": {},
+  "dist": {
+    "integrity": "sha512-lDbZNHHwxDKnjP7LWg2leO+tjs4SyVs2Z83dsR1Idbe2urRnxZAUdeQ8YBhHaGaWK/4WM3mz+RlbZsgqck17CA==",
+    "shasum": "6d7852486e67c642502dcc03f7225a245c9fc7fa",
+    "tarball": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.31.tgz",
+    "fileCount": 8,
+    "unpackedSize": 162590,
+    "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGedXCRA9TVsSAnZWagAAHJgQAKCArFGVxNuQhZ0//2mc\n4qzOfSkqZ7RGn/HgwMSRXK+ePSgqCQ+NsyRzE4gxrqFDMS5HUSPOaWH3UwTC\n4s7ThCKsqdeag9NtbY34dOEckR//O4ltsuYS1NI+04xSxttTS6fJv7tArn0A\nbWBh6GBaGtqMLZDsUa4qNH3i5Tbgl3b5/sSkAMU3m2olNcuNQ9amVqEFHPyU\n//wYSJ7YSje490xnZXXUHLI5utPGZjzNrYtjbZSfRbZLOfO/6msiyqEa+OBc\ngoTs3Nrra7dCU84CPJBHnKmxDBA6Ip0cGZ9fLwZFZy0Cq14N0T9gwnFGihG [...]
+  },
   "engines": {
     "node": ">=0.6"
   },
+  "gitHead": "178dd190121336aa18d95976d1e9f89af702dd00",
   "homepage": "https://github.com/peterolson/BigInteger.js#readme",
   "keywords": [
     "math",
@@ -68,15 +98,23 @@
   ],
   "license": "Unlicense",
   "main": "./BigInteger",
+  "maintainers": [
+    {
+      "name": "peterolson",
+      "email": "peter.e.c.olson+npm@gmail.com"
+    }
+  ],
   "name": "big-integer",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git+ssh://git@github.com/peterolson/BigInteger.js.git"
   },
   "scripts": {
     "minify": "uglifyjs BigInteger.js -o BigInteger.min.js",
-    "test": "tsc && node_modules/.bin/karma start my.conf.js && node spec/tsDefinitions.js"
+    "test": "tsc && karma start my.conf.js && node spec/tsDefinitions.js"
   },
   "typings": "./BigInteger.d.ts",
-  "version": "1.6.26"
+  "version": "1.6.31"
 }
diff --git a/node_modules/bplist-parser/package.json b/node_modules/bplist-parser/package.json
index 8a48455..8e5e34e 100644
--- a/node_modules/bplist-parser/package.json
+++ b/node_modules/bplist-parser/package.json
@@ -1,32 +1,46 @@
 {
   "_args": [
     [
-      "bplist-parser@0.1.1",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "bplist-parser@^0.1.0",
+        "scope": null,
+        "escapedName": "bplist-parser",
+        "name": "bplist-parser",
+        "rawSpec": "^0.1.0",
+        "spec": ">=0.1.0 <0.2.0",
+        "type": "range"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
-  "_from": "bplist-parser@0.1.1",
+  "_from": "bplist-parser@>=0.1.0 <0.2.0",
   "_id": "bplist-parser@0.1.1",
-  "_inBundle": false,
-  "_integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=",
+  "_inCache": true,
   "_location": "/bplist-parser",
+  "_nodeVersion": "5.1.0",
+  "_npmUser": {
+    "name": "joeferner",
+    "email": "joe@fernsroth.com"
+  },
+  "_npmVersion": "3.4.0",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "bplist-parser@0.1.1",
-    "name": "bplist-parser",
+    "raw": "bplist-parser@^0.1.0",
+    "scope": null,
     "escapedName": "bplist-parser",
-    "rawSpec": "0.1.1",
-    "saveSpec": null,
-    "fetchSpec": "0.1.1"
+    "name": "bplist-parser",
+    "rawSpec": "^0.1.0",
+    "spec": ">=0.1.0 <0.2.0",
+    "type": "range"
   },
   "_requiredBy": [
     "/cordova-common"
   ],
   "_resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz",
-  "_spec": "0.1.1",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_shasum": "d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6",
+  "_shrinkwrap": null,
+  "_spec": "bplist-parser@^0.1.0",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Joe Ferner",
     "email": "joe.ferner@nearinfinity.com"
@@ -41,6 +55,12 @@
   "devDependencies": {
     "nodeunit": "~0.9.1"
   },
+  "directories": {},
+  "dist": {
+    "shasum": "d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6",
+    "tarball": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz"
+  },
+  "gitHead": "c4f22650de2cc95edd21a6e609ff0654a2b951bd",
   "homepage": "https://github.com/nearinfinity/node-bplist-parser#readme",
   "keywords": [
     "bplist",
@@ -49,7 +69,15 @@
   ],
   "license": "MIT",
   "main": "bplistParser.js",
+  "maintainers": [
+    {
+      "name": "joeferner",
+      "email": "joe@fernsroth.com"
+    }
+  ],
   "name": "bplist-parser",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/nearinfinity/node-bplist-parser.git"
diff --git a/node_modules/os-homedir/license b/node_modules/brace-expansion/LICENSE
similarity index 83%
rename from node_modules/os-homedir/license
rename to node_modules/brace-expansion/LICENSE
index 654d0bf..de32266 100644
--- a/node_modules/os-homedir/license
+++ b/node_modules/brace-expansion/LICENSE
@@ -1,6 +1,6 @@
-The MIT License (MIT)
+MIT License
 
-Copyright (c) Sindre Sorhus <si...@gmail.com> (sindresorhus.com)
+Copyright (c) 2013 Julian Gruber <ju...@juliangruber.com>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/brace-expansion/README.md b/node_modules/brace-expansion/README.md
index 1793929..6b4e0e1 100644
--- a/node_modules/brace-expansion/README.md
+++ b/node_modules/brace-expansion/README.md
@@ -5,6 +5,7 @@ as known from sh/bash, in JavaScript.
 
 [![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion)
 [![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion)
+[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/)
 
 [![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion)
 
@@ -62,7 +63,7 @@ Valid expansions are:
 // {a,b,...}
 ```
 
-A comma seperated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.
+A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.
 
 ```js
 /^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
@@ -97,6 +98,12 @@ npm install brace-expansion
 - [Julian Gruber](https://github.com/juliangruber)
 - [Isaac Z. Schlueter](https://github.com/isaacs)
 
+## Sponsors
+
+This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)!
+
+Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)!
+
 ## License
 
 (MIT)
diff --git a/node_modules/brace-expansion/index.js b/node_modules/brace-expansion/index.js
index 955f27c..0478be8 100644
--- a/node_modules/brace-expansion/index.js
+++ b/node_modules/brace-expansion/index.js
@@ -106,7 +106,7 @@ function expand(str, isTop) {
   var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
   var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
   var isSequence = isNumericSequence || isAlphaSequence;
-  var isOptions = /^(.*,)+(.+)?$/.test(m.body);
+  var isOptions = m.body.indexOf(',') >= 0;
   if (!isSequence && !isOptions) {
     // {a},b}
     if (m.post.match(/,.*\}/)) {
diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json
index a680fc9..e1a3656 100644
--- a/node_modules/brace-expansion/package.json
+++ b/node_modules/brace-expansion/package.json
@@ -1,32 +1,50 @@
 {
   "_args": [
     [
-      "brace-expansion@1.1.6",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "brace-expansion@^1.1.7",
+        "scope": null,
+        "escapedName": "brace-expansion",
+        "name": "brace-expansion",
+        "rawSpec": "^1.1.7",
+        "spec": ">=1.1.7 <2.0.0",
+        "type": "range"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/minimatch"
     ]
   ],
-  "_from": "brace-expansion@1.1.6",
-  "_id": "brace-expansion@1.1.6",
-  "_inBundle": false,
-  "_integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=",
+  "_from": "brace-expansion@>=1.1.7 <2.0.0",
+  "_id": "brace-expansion@1.1.11",
+  "_inCache": true,
   "_location": "/brace-expansion",
+  "_nodeVersion": "9.0.0",
+  "_npmOperationalInternal": {
+    "host": "s3://npm-registry-packages",
+    "tmp": "tmp/brace-expansion_1.1.11_1518248541320_0.33962849281003904"
+  },
+  "_npmUser": {
+    "name": "juliangruber",
+    "email": "julian@juliangruber.com"
+  },
+  "_npmVersion": "5.5.1",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "brace-expansion@1.1.6",
-    "name": "brace-expansion",
+    "raw": "brace-expansion@^1.1.7",
+    "scope": null,
     "escapedName": "brace-expansion",
-    "rawSpec": "1.1.6",
-    "saveSpec": null,
-    "fetchSpec": "1.1.6"
+    "name": "brace-expansion",
+    "rawSpec": "^1.1.7",
+    "spec": ">=1.1.7 <2.0.0",
+    "type": "range"
   },
   "_requiredBy": [
     "/minimatch"
   ],
-  "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
-  "_spec": "1.1.6",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+  "_shasum": "3c7fcbf529d87226f3d2f52b966ff5271eb441dd",
+  "_shrinkwrap": null,
+  "_spec": "brace-expansion@^1.1.7",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/minimatch",
   "author": {
     "name": "Julian Gruber",
     "email": "mail@juliangruber.com",
@@ -36,23 +54,46 @@
     "url": "https://github.com/juliangruber/brace-expansion/issues"
   },
   "dependencies": {
-    "balanced-match": "^0.4.1",
+    "balanced-match": "^1.0.0",
     "concat-map": "0.0.1"
   },
   "description": "Brace expansion as known from sh/bash",
   "devDependencies": {
+    "matcha": "^0.7.0",
     "tape": "^4.6.0"
   },
+  "directories": {},
+  "dist": {
+    "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+    "shasum": "3c7fcbf529d87226f3d2f52b966ff5271eb441dd",
+    "tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+    "fileCount": 4,
+    "unpackedSize": 11059
+  },
+  "gitHead": "01a21de7441549d26ac0c0a9ff91385d16e5c21c",
   "homepage": "https://github.com/juliangruber/brace-expansion",
   "keywords": [],
   "license": "MIT",
   "main": "index.js",
+  "maintainers": [
+    {
+      "name": "isaacs",
+      "email": "isaacs@npmjs.com"
+    },
+    {
+      "name": "juliangruber",
+      "email": "julian@juliangruber.com"
+    }
+  ],
   "name": "brace-expansion",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git://github.com/juliangruber/brace-expansion.git"
   },
   "scripts": {
+    "bench": "matcha test/perf/bench.js",
     "gentest": "bash test/generate.sh",
     "test": "tape test/*.js"
   },
@@ -72,5 +113,5 @@
       "android-browser/4.2..latest"
     ]
   },
-  "version": "1.1.6"
+  "version": "1.1.11"
 }
diff --git a/node_modules/concat-map/package.json b/node_modules/concat-map/package.json
index 0d21359..f5cf0d2 100644
--- a/node_modules/concat-map/package.json
+++ b/node_modules/concat-map/package.json
@@ -1,37 +1,45 @@
 {
   "_args": [
     [
-      "concat-map@0.0.1",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "concat-map@0.0.1",
+        "scope": null,
+        "escapedName": "concat-map",
+        "name": "concat-map",
+        "rawSpec": "0.0.1",
+        "spec": "0.0.1",
+        "type": "version"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/brace-expansion"
     ]
   ],
   "_from": "concat-map@0.0.1",
   "_id": "concat-map@0.0.1",
-  "_inBundle": false,
-  "_integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+  "_inCache": true,
   "_location": "/concat-map",
+  "_npmUser": {
+    "name": "substack",
+    "email": "mail@substack.net"
+  },
+  "_npmVersion": "1.3.21",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
     "raw": "concat-map@0.0.1",
-    "name": "concat-map",
+    "scope": null,
     "escapedName": "concat-map",
+    "name": "concat-map",
     "rawSpec": "0.0.1",
-    "saveSpec": null,
-    "fetchSpec": "0.0.1"
+    "spec": "0.0.1",
+    "type": "version"
   },
   "_requiredBy": [
-    "/brace-expansion",
-    "/eslint-plugin-node/brace-expansion",
-    "/eslint/brace-expansion",
-    "/globby/brace-expansion",
-    "/jasmine/brace-expansion",
-    "/rimraf/brace-expansion"
+    "/brace-expansion"
   ],
   "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-  "_spec": "0.0.1",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
+  "_shrinkwrap": null,
+  "_spec": "concat-map@0.0.1",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/brace-expansion",
   "author": {
     "name": "James Halliday",
     "email": "mail@substack.net",
@@ -40,6 +48,7 @@
   "bugs": {
     "url": "https://github.com/substack/node-concat-map/issues"
   },
+  "dependencies": {},
   "description": "concatenative mapdashery",
   "devDependencies": {
     "tape": "~2.4.0"
@@ -48,7 +57,11 @@
     "example": "example",
     "test": "test"
   },
-  "homepage": "https://github.com/substack/node-concat-map#readme",
+  "dist": {
+    "shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
+    "tarball": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+  },
+  "homepage": "https://github.com/substack/node-concat-map",
   "keywords": [
     "concat",
     "concatMap",
@@ -58,7 +71,15 @@
   ],
   "license": "MIT",
   "main": "index.js",
+  "maintainers": [
+    {
+      "name": "substack",
+      "email": "mail@substack.net"
+    }
+  ],
   "name": "concat-map",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git://github.com/substack/node-concat-map.git"
diff --git a/node_modules/cordova-common/.eslintrc.yml b/node_modules/cordova-common/.eslintrc.yml
index 7701c82..21a8e7b 100644
--- a/node_modules/cordova-common/.eslintrc.yml
+++ b/node_modules/cordova-common/.eslintrc.yml
@@ -8,4 +8,6 @@ rules:
   padded-blocks: off
   operator-linebreak: off
   no-throw-literal: off
-  
\ No newline at end of file
+  no-unused-vars:
+    - error
+    - args: after-used
diff --git a/node_modules/cordova-common/.github/PULL_REQUEST_TEMPLATE.md b/node_modules/cordova-common/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..91582f4
--- /dev/null
+++ b/node_modules/cordova-common/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,22 @@
+<!--
+Please make sure the checklist boxes are all checked before submitting the PR. The checklist
+is intended as a quick reference, for complete details please see our Contributor Guidelines:
+
+http://cordova.apache.org/contribute/contribute_guidelines.html
+
+Thanks!
+-->
+
+### Platforms affected
+
+
+### What does this PR do?
+
+
+### What testing has been done on this change?
+
+
+### Checklist
+- [ ] [Reported an issue](http://cordova.apache.org/contribute/issues.html) in the JIRA database
+- [ ] Commit message follows the format: "CB-3232: (android) Fix bug with resolving file paths", where CB-xxxx is the JIRA ID & "android" is the platform affected.
+- [ ] Added automated test coverage as appropriate for this change.
diff --git a/node_modules/cordova-common/.jscs.json b/node_modules/cordova-common/.jscs.json
deleted file mode 100644
index 5cc7e26..0000000
--- a/node_modules/cordova-common/.jscs.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "disallowMixedSpacesAndTabs": true,
-    "disallowTrailingWhitespace": true,
-    "validateLineBreaks": "LF",
-    "validateIndentation": 4,
-    "requireLineFeedAtFileEnd": true,
-
-    "disallowSpaceAfterPrefixUnaryOperators": true,
-    "disallowSpaceBeforePostfixUnaryOperators": true,
-    "requireSpaceAfterLineComment": true,
-    "requireCapitalizedConstructors": true,
-
-    "disallowSpacesInNamedFunctionExpression": {
-        "beforeOpeningRoundBrace": true
-    },
-
-    "requireSpaceAfterKeywords": [
-      "if",
-      "else",
-      "for",
-      "while",
-      "do"
-    ]
-}
diff --git a/node_modules/cordova-common/.npmignore b/node_modules/cordova-common/.npmignore
new file mode 100644
index 0000000..5d14118
--- /dev/null
+++ b/node_modules/cordova-common/.npmignore
@@ -0,0 +1,2 @@
+spec
+coverage
diff --git a/node_modules/cordova-common/.travis.yml b/node_modules/cordova-common/.travis.yml
index 4592c3e..b4e310d 100644
--- a/node_modules/cordova-common/.travis.yml
+++ b/node_modules/cordova-common/.travis.yml
@@ -6,6 +6,7 @@ node_js:
   - "4"
   - "6"
   - "8"
+  - "10"
 install:
   - npm install
   - npm install -g codecov
diff --git a/node_modules/cordova-common/README.md b/node_modules/cordova-common/README.md
index 5659c57..422c98b 100644
--- a/node_modules/cordova-common/README.md
+++ b/node_modules/cordova-common/README.md
@@ -24,11 +24,11 @@
 [![NPM](https://nodei.co/npm/cordova-common.png)](https://nodei.co/npm/cordova-common/)
 
 # cordova-common
-Expoeses shared functionality used by [cordova-lib](https://github.com/apache/cordova-lib/) and Cordova platforms.
+Exposes shared functionality used by [cordova-lib](https://github.com/apache/cordova-lib/) and Cordova platforms.
 ## Exposed APIs
 
 ### `events`
-  
+
 Represents special instance of NodeJS EventEmitter which is intended to be used to post events to cordova-lib and cordova-cli
 
 Usage:
@@ -122,7 +122,7 @@ superspawn.spawn('adb', ['devices'])
 
 ### `xmlHelpers`
 
-A set of utility methods for dealing with xml files.
+A set of utility methods for dealing with XML files.
 
 Usage:
 ```js
@@ -148,10 +148,8 @@ mungeUtil
 
 ## Setup
 * Clone this repository onto your local machine
-    `git clone https://git-wip-us.apache.org/repos/asf/cordova-lib.git`
-* In terminal, navigate to the inner cordova-common directory
-    `cd cordova-lib/cordova-common`
-* Install dependencies and npm-link
-    `npm install && npm link`
+    `git clone https://github.com/apache/cordova-common.git`
+* Navigate to cordova-common directory, install dependencies and npm-link
+    `cd cordova-common && npm install && npm link`
 * Navigate to cordova-lib directory and link cordova-common
-    `cd ../cordova-lib && npm link cordova-common && npm install`
+    `cd <cordova-lib directory> && npm link cordova-common && npm install`
diff --git a/node_modules/cordova-common/RELEASENOTES.md b/node_modules/cordova-common/RELEASENOTES.md
index 5dda362..51d1580 100644
--- a/node_modules/cordova-common/RELEASENOTES.md
+++ b/node_modules/cordova-common/RELEASENOTES.md
@@ -20,6 +20,26 @@
 -->
 # Cordova-common Release Notes
 
+### 2.2.4 (June 15, 2018)
+
+* Revert change to update dependencies in package.json (needed to resolve issues with cordova-ios@4)
+* Revert change to use strip-bom package to strip BOM
+* Continue to use plist@^3.0.1 in package.json
+
+### 2.2.3 (June 1, 2018)
+* Revert a minor refactoring that was incompatible with NodeJS 4.x. No change to functionality.
+
+### 2.2.2 (May 30, 2018)
+* [CB-13979](https://issues.apache.org/jira/browse/CB-13979) More consistency for `config.xml` lookups
+* [CB-14064](https://issues.apache.org/jira/browse/CB-14064) Remove Node 4 from CI matrix
+* [CB-14088](https://issues.apache.org/jira/browse/CB-14088) Update dependencies
+* [CB-11691](https://issues.apache.org/jira/browse/CB-11691) Fix for modifying binary plists
+* [CB-13770](https://issues.apache.org/jira/browse/CB-13770) Warn when <edit-config> or <config-file> not found
+* [CB-13471](https://issues.apache.org/jira/browse/CB-13471) Fix tests and path issues for **Windows**
+* [CB-13471](https://issues.apache.org/jira/browse/CB-13471) added unit test for config file provider
+* [CB-13744](https://issues.apache.org/jira/browse/CB-13744) Recognize storyboards as XML files
+* [CB-13674](https://issues.apache.org/jira/browse/CB-13674) Incremented package version to -dev
+
 ### 2.2.1 (Dec 14, 2017)
 * [CB-13674](https://issues.apache.org/jira/browse/CB-13674): updated dependencies
 
diff --git a/node_modules/cordova-common/appveyor.yml b/node_modules/cordova-common/appveyor.yml
index ffe5194..5302ae0 100644
--- a/node_modules/cordova-common/appveyor.yml
+++ b/node_modules/cordova-common/appveyor.yml
@@ -6,7 +6,8 @@ environment:
   - nodejs_version: "4"
   - nodejs_version: "6"
   - nodejs_version: "8"
-  
+  - nodejs_version: "10"
+
 install:
   - ps: Install-Product node $env:nodejs_version
   - npm install
diff --git a/node_modules/cordova-common/node_modules/elementtree/Makefile b/node_modules/cordova-common/node_modules/elementtree/Makefile
old mode 100644
new mode 100755
diff --git a/node_modules/cordova-common/node_modules/elementtree/package.json b/node_modules/cordova-common/node_modules/elementtree/package.json
index 244b02f..d2cc1dd 100644
--- a/node_modules/cordova-common/node_modules/elementtree/package.json
+++ b/node_modules/cordova-common/node_modules/elementtree/package.json
@@ -1,32 +1,45 @@
 {
   "_args": [
     [
-      "elementtree@0.1.6",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "elementtree@0.1.6",
+        "scope": null,
+        "escapedName": "elementtree",
+        "name": "elementtree",
+        "rawSpec": "0.1.6",
+        "spec": "0.1.6",
+        "type": "version"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
   "_from": "elementtree@0.1.6",
   "_id": "elementtree@0.1.6",
-  "_inBundle": false,
-  "_integrity": "sha1-KsTEbqMFFsjEy9teOsdBjlkt4gw=",
+  "_inCache": true,
   "_location": "/cordova-common/elementtree",
+  "_npmUser": {
+    "name": "rphillips",
+    "email": "ryan@trolocsis.com"
+  },
+  "_npmVersion": "1.3.24",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
     "raw": "elementtree@0.1.6",
-    "name": "elementtree",
+    "scope": null,
     "escapedName": "elementtree",
+    "name": "elementtree",
     "rawSpec": "0.1.6",
-    "saveSpec": null,
-    "fetchSpec": "0.1.6"
+    "spec": "0.1.6",
+    "type": "version"
   },
   "_requiredBy": [
     "/cordova-common"
   ],
   "_resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz",
-  "_spec": "0.1.6",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_shasum": "2ac4c46ea30516c8c4cbdb5e3ac7418e592de20c",
+  "_shrinkwrap": null,
+  "_spec": "elementtree@0.1.6",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Rackspace US, Inc."
   },
@@ -53,6 +66,10 @@
   "directories": {
     "lib": "lib"
   },
+  "dist": {
+    "shasum": "2ac4c46ea30516c8c4cbdb5e3ac7418e592de20c",
+    "tarball": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz"
+  },
   "engines": {
     "node": ">= 0.4.0"
   },
@@ -71,7 +88,15 @@
     }
   ],
   "main": "lib/elementtree.js",
+  "maintainers": [
+    {
+      "name": "rphillips",
+      "email": "ryan@trolocsis.com"
+    }
+  ],
   "name": "elementtree",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git://github.com/racker/node-elementtree.git"
diff --git a/node_modules/cordova-common/package.json b/node_modules/cordova-common/package.json
index 11f7fca..41c5c8a 100644
--- a/node_modules/cordova-common/package.json
+++ b/node_modules/cordova-common/package.json
@@ -1,34 +1,61 @@
 {
   "_args": [
     [
-      "cordova-common@2.2.1",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "brodybits/cordova-common#plist-2-patch",
+        "scope": null,
+        "escapedName": null,
+        "name": null,
+        "rawSpec": "brodybits/cordova-common#plist-2-patch",
+        "spec": "github:brodybits/cordova-common#plist-2-patch",
+        "type": "hosted",
+        "hosted": {
+          "type": "github",
+          "ssh": "git@github.com:brodybits/cordova-common.git#plist-2-patch",
+          "sshUrl": "git+ssh://git@github.com/brodybits/cordova-common.git#plist-2-patch",
+          "httpsUrl": "git+https://github.com/brodybits/cordova-common.git#plist-2-patch",
+          "gitUrl": "git://github.com/brodybits/cordova-common.git#plist-2-patch",
+          "shortcut": "github:brodybits/cordova-common#plist-2-patch",
+          "directUrl": "https://raw.githubusercontent.com/brodybits/cordova-common/plist-2-patch/package.json"
+        }
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows"
     ]
   ],
-  "_from": "cordova-common@2.2.1",
-  "_id": "cordova-common@2.2.1",
-  "_inBundle": false,
-  "_integrity": "sha1-cAm8WRcpyqcoWliM/Wp7VM2DTww=",
+  "_from": "brodybits/cordova-common#plist-2-patch",
+  "_id": "cordova-common@2.2.5-dev",
+  "_inCache": true,
   "_location": "/cordova-common",
   "_phantomChildren": {
     "sax": "0.3.5"
   },
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "cordova-common@2.2.1",
-    "name": "cordova-common",
-    "escapedName": "cordova-common",
-    "rawSpec": "2.2.1",
-    "saveSpec": null,
-    "fetchSpec": "2.2.1"
+    "raw": "brodybits/cordova-common#plist-2-patch",
+    "scope": null,
+    "escapedName": null,
+    "name": null,
+    "rawSpec": "brodybits/cordova-common#plist-2-patch",
+    "spec": "github:brodybits/cordova-common#plist-2-patch",
+    "type": "hosted",
+    "hosted": {
+      "type": "github",
+      "ssh": "git@github.com:brodybits/cordova-common.git#plist-2-patch",
+      "sshUrl": "git+ssh://git@github.com/brodybits/cordova-common.git#plist-2-patch",
+      "httpsUrl": "git+https://github.com/brodybits/cordova-common.git#plist-2-patch",
+      "gitUrl": "git://github.com/brodybits/cordova-common.git#plist-2-patch",
+      "shortcut": "github:brodybits/cordova-common#plist-2-patch",
+      "directUrl": "https://raw.githubusercontent.com/brodybits/cordova-common/plist-2-patch/package.json"
+    }
   },
   "_requiredBy": [
+    "#USER",
     "/"
   ],
-  "_resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-2.2.1.tgz",
-  "_spec": "2.2.1",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_resolved": "git://github.com/brodybits/cordova-common.git#ad5c29fe4534bee4c0c4869a03698c90e6e563ff",
+  "_shasum": "65b108e0377b8bf87329659bc6343fec96d62982",
+  "_shrinkwrap": null,
+  "_spec": "brodybits/cordova-common#plist-2-patch",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows",
   "author": {
     "name": "Apache Software Foundation"
   },
@@ -44,10 +71,8 @@
     "elementtree": "0.1.6",
     "glob": "^5.0.13",
     "minimatch": "^3.0.0",
-    "osenv": "^0.1.3",
-    "plist": "^1.2.0",
+    "plist": "^2.1.0",
     "q": "^1.4.1",
-    "semver": "^5.0.1",
     "shelljs": "^0.5.3",
     "underscore": "^1.8.3",
     "unorm": "^1.3.3"
@@ -63,25 +88,30 @@
     "eslint-plugin-standard": "^3.0.1",
     "istanbul": "^0.4.5",
     "jasmine": "^2.5.2",
+    "osenv": "^0.1.3",
     "promise-matchers": "^0.9.6",
     "rewire": "^2.5.1"
   },
   "engines": {
     "node": ">=4.0.0"
   },
-  "homepage": "https://github.com/apache/cordova-lib#readme",
+  "gitHead": "ad5c29fe4534bee4c0c4869a03698c90e6e563ff",
+  "homepage": "https://github.com/apache/cordova-common#readme",
   "license": "Apache-2.0",
   "main": "cordova-common.js",
   "name": "cordova-common",
+  "optionalDependencies": {},
+  "readme": "<!--\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2. [...]
+  "readmeFilename": "README.md",
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/apache/cordova-lib.git"
+    "url": "git+https://github.com/apache/cordova-common.git"
   },
   "scripts": {
     "cover": "istanbul cover --root src --print detail jasmine",
-    "eslint": "eslint src && eslint spec",
+    "eslint": "eslint src spec",
     "jasmine": "jasmine JASMINE_CONFIG_PATH=spec/support/jasmine.json",
     "test": "npm run eslint && npm run jasmine"
   },
-  "version": "2.2.1"
+  "version": "2.2.5-dev"
 }
diff --git a/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js b/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
index 1780d25..e7ad0e2 100644
--- a/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
+++ b/node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
@@ -79,6 +79,8 @@ function PlatformMunger_apply_file_munge (file, munge, remove) {
             if (config_file.exists) {
                 if (remove) config_file.prune_child(selector, munge.parents[selector][xml_child]);
                 else config_file.graft_child(selector, munge.parents[selector][xml_child]);
+            } else {
+                events.emit('warn', 'config file ' + file + ' requested for changes not found at ' + config_file.filepath + ', ignoring');
             }
         }
     }
diff --git a/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js b/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
index ec4a28a..2e5ed5f 100644
--- a/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
+++ b/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
@@ -71,7 +71,7 @@ function ConfigFile_load () {
     var ext = path.extname(filepath);
     // Windows8 uses an appxmanifest, and wp8 will likely use
     // the same in a future release
-    if (ext === '.xml' || ext === '.appxmanifest') {
+    if (ext === '.xml' || ext === '.appxmanifest' || ext === '.storyboard') {
         self.type = 'xml';
         self.data = modules.xml_helpers.parseElementtreeSync(filepath);
     } else {
@@ -82,7 +82,7 @@ function ConfigFile_load () {
         //       Do we still need to support binary plist?
         //       If yes, use plist.parseStringSync() and read the file once.
         self.data = isBinaryPlist(filepath) ?
-            modules.bplist.parseBuffer(fs.readFileSync(filepath)) :
+            modules.bplist.parseBuffer(fs.readFileSync(filepath))[0] :
             modules.plist.parse(fs.readFileSync(filepath, 'utf8'));
     }
 }
@@ -166,6 +166,8 @@ function resolveConfigFilePath (project_dir, platform, file) {
     var filepath = path.join(project_dir, file);
     var matches;
 
+    file = path.normalize(file);
+
     if (file.indexOf('*') > -1) {
         // handle wildcards in targets using glob.
         matches = modules.glob.sync(path.join(project_dir, '**', file));
@@ -195,7 +197,7 @@ function resolveConfigFilePath (project_dir, platform, file) {
         } else if (file.endsWith('strings.xml')) {
             // Plugins really shouldn't mess with strings.xml, since it's able to be localized
             filepath = path.join(project_dir, 'app', 'src', 'main', 'res', 'values', 'strings.xml');
-        } else if (file.match(/res\/xml/)) {
+        } else if (file.includes(path.join('res', 'xml'))) {
             // Catch-all for all other stored XML configuration in legacy plugins
             var config_file = path.basename(file);
             filepath = path.join(project_dir, 'app', 'src', 'main', 'res', 'xml', config_file);
diff --git a/node_modules/cordova-common/src/ConfigParser/ConfigParser.js b/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
index 095ccf2..1a98c3a 100644
--- a/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
+++ b/node_modules/cordova-common/src/ConfigParser/ConfigParser.js
@@ -86,12 +86,17 @@ function findElementAttributeValue (attributeName, elems) {
     return value || '';
 }
 
+function removeChildren (el, selector) {
+    const matches = el.findall(selector);
+    matches.forEach(child => el.remove(child));
+}
+
 ConfigParser.prototype = {
     getAttribute: function (attr) {
         return this.doc.getroot().attrib[attr];
     },
 
-    packageName: function (id) {
+    packageName: function () {
         return this.getAttribute('id');
     },
     setPackageName: function (id) {
@@ -161,7 +166,7 @@ ConfigParser.prototype = {
         pref.attrib.value = value;
     },
     getPlatformPreference: function (name, platform) {
-        return findElementAttributeValue(name, this.doc.findall('platform[@name=\'' + platform + '\']/preference'));
+        return findElementAttributeValue(name, this.doc.findall('./platform[@name="' + platform + '"]/preference'));
     },
     getPreference: function (name, platform) {
 
@@ -185,7 +190,7 @@ ConfigParser.prototype = {
         var ret = [];
         var staticResources = [];
         if (platform) { // platform specific icons
-            this.doc.findall('platform[@name=\'' + platform + '\']/' + resourceName).forEach(function (elt) {
+            this.doc.findall('./platform[@name="' + platform + '"]/' + resourceName).forEach(function (elt) {
                 elt.platform = platform; // mark as platform specific resource
                 staticResources.push(elt);
             });
@@ -274,7 +279,7 @@ ConfigParser.prototype = {
         var fileResources = [];
 
         if (platform) { // platform specific resources
-            fileResources = this.doc.findall('platform[@name=\'' + platform + '\']/resource-file').map(function (tag) {
+            fileResources = this.doc.findall('./platform[@name="' + platform + '"]/resource-file').map(function (tag) {
                 return {
                     platform: platform,
                     src: tag.attrib.src,
@@ -428,17 +433,10 @@ ConfigParser.prototype = {
      * @param id name of the plugin
      */
     removePlugin: function (id) {
-        if (id) {
-            var plugins = this.doc.findall('./plugin/[@name="' + id + '"]')
-                .concat(this.doc.findall('./feature/param[@name="id"][@value="' + id + '"]/..'));
-            var children = this.doc.getroot().getchildren();
-            plugins.forEach(function (plugin) {
-                var idx = children.indexOf(plugin);
-                if (idx > -1) {
-                    children.splice(idx, 1);
-                }
-            });
-        }
+        if (!id) return;
+        const root = this.doc.getroot();
+        removeChildren(root, `./plugin/[@name="${id}"]`);
+        removeChildren(root, `./feature/param[@name="id"][@value="${id}"]/..`);
     },
 
     // Add any element to the root
@@ -469,14 +467,7 @@ ConfigParser.prototype = {
      * @param  {String} name the engine name.
      */
     removeEngine: function (name) {
-        var engines = this.doc.findall('./engine/[@name="' + name + '"]');
-        for (var i = 0; i < engines.length; i++) {
-            var children = this.doc.getroot().getchildren();
-            var idx = children.indexOf(engines[i]);
-            if (idx > -1) {
-                children.splice(idx, 1);
-            }
-        }
+        removeChildren(this.doc.getroot(), `./engine/[@name="${name}"]`);
     },
     getEngines: function () {
         var engines = this.doc.findall('./engine');
@@ -539,9 +530,7 @@ ConfigParser.prototype = {
     },
     /* Get all edit-config tags */
     getEditConfigs: function (platform) {
-        var platform_tag = this.doc.find('./platform[@name="' + platform + '"]');
-        var platform_edit_configs = platform_tag ? platform_tag.findall('edit-config') : [];
-
+        var platform_edit_configs = this.doc.findall('./platform[@name="' + platform + '"]/edit-config');
         var edit_configs = this.doc.findall('edit-config').concat(platform_edit_configs);
 
         return edit_configs.map(function (tag) {
@@ -559,9 +548,7 @@ ConfigParser.prototype = {
 
     /* Get all config-file tags */
     getConfigFiles: function (platform) {
-        var platform_tag = this.doc.find('./platform[@name="' + platform + '"]');
-        var platform_config_files = platform_tag ? platform_tag.findall('config-file') : [];
-
+        var platform_config_files = this.doc.findall('./platform[@name="' + platform + '"]/config-file');
         var config_files = this.doc.findall('config-file').concat(platform_config_files);
 
         return config_files.map(function (tag) {
diff --git a/node_modules/cordova-common/src/ConfigParser/README.md b/node_modules/cordova-common/src/ConfigParser/README.md
deleted file mode 100644
index e5cd1bf..0000000
--- a/node_modules/cordova-common/src/ConfigParser/README.md
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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.
-#
--->
-
-# Cordova-Lib
-
-## ConfigParser
-
-wraps a valid cordova config.xml file 
-
-### Usage
-
-### Include the ConfigParser module in a projet
-
-    var ConfigParser = require('cordova-lib').configparser;
-
-### Create a new ConfigParser
-
-    var config = new ConfigParser('path/to/config/xml/');
-    
-### Utility Functions
-
-#### packageName(id)
-returns document root 'id' attribute value
-#### Usage
-
-    config.packageName: function(id) 
-
-/*
- * sets document root element 'id' attribute to @id
- *
- * @id - new id value
- *
- */
-#### setPackageName(id)
-set document root 'id' attribute to 
- function(id) {
-        this.doc.getroot().attrib['id'] = id;
-    },
-
-### 
-    name: function() {
-        return getNodeTextSafe(this.doc.find('name'));
-    },
-    setName: function(name) {
-        var el = findOrCreate(this.doc, 'name');
-        el.text = name;
-    },
-
-### read the description element
-    
-    config.description()
-
-    var text = "New and improved description of App"
-    setDescription(text)
-    
-### version management
-    version()
-    android_versionCode()
-    ios_CFBundleVersion()
-    setVersion()
-    
-### read author element
-
-   config.author();
-
-### read preference
-
-    config.getPreference(name);
diff --git a/node_modules/cordova-common/src/FileUpdater.js b/node_modules/cordova-common/src/FileUpdater.js
index c4eeb97..ea5d9e2 100644
--- a/node_modules/cordova-common/src/FileUpdater.js
+++ b/node_modules/cordova-common/src/FileUpdater.js
@@ -186,7 +186,7 @@ function updatePath (sourcePath, targetPath, options, log) {
         throw new Error('A target path is required.');
     }
 
-    log = log || function (message) { };
+    log = log || function () { };
 
     return updatePathInternal(sourcePath, targetPath, options, log);
 }
@@ -213,7 +213,7 @@ function updatePaths (pathMap, options, log) {
         throw new Error('An object mapping from target paths to source paths is required.');
     }
 
-    log = log || function (message) { };
+    log = log || function () { };
 
     var updated = false;
 
@@ -266,7 +266,7 @@ function mergeAndUpdateDir (sourceDirs, targetDir, options, log) {
         throw new Error('A target directory path is required.');
     }
 
-    log = log || function (message) { };
+    log = log || function () { };
 
     var rootDir = (options && options.rootDir) || '';
 
diff --git a/node_modules/cordova-common/src/util/xml-helpers.js b/node_modules/cordova-common/src/util/xml-helpers.js
index e2c8fd3..6b5d70f 100644
--- a/node_modules/cordova-common/src/util/xml-helpers.js
+++ b/node_modules/cordova-common/src/util/xml-helpers.js
@@ -328,7 +328,7 @@ function mergeXml (src, dest, platform, clobber) {
         });
 
         // write new preferences
-        Object.keys(prefHash).forEach(function (key, index) {
+        Object.keys(prefHash).forEach(function (key) {
             var element = et.SubElement(xml, 'preference');
             element.set('name', key);
             element.set('value', this[key]);
diff --git a/node_modules/cordova-registry-mapper/package.json b/node_modules/cordova-registry-mapper/package.json
index 8bdee00..b34d1c8 100644
--- a/node_modules/cordova-registry-mapper/package.json
+++ b/node_modules/cordova-registry-mapper/package.json
@@ -1,42 +1,63 @@
 {
   "_args": [
     [
-      "cordova-registry-mapper@1.1.15",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "cordova-registry-mapper@^1.1.8",
+        "scope": null,
+        "escapedName": "cordova-registry-mapper",
+        "name": "cordova-registry-mapper",
+        "rawSpec": "^1.1.8",
+        "spec": ">=1.1.8 <2.0.0",
+        "type": "range"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
-  "_from": "cordova-registry-mapper@1.1.15",
+  "_from": "cordova-registry-mapper@>=1.1.8 <2.0.0",
   "_id": "cordova-registry-mapper@1.1.15",
-  "_inBundle": false,
-  "_integrity": "sha1-4kS5GFuBdUc7/2B5MkkFEV+D3Hw=",
+  "_inCache": true,
   "_location": "/cordova-registry-mapper",
+  "_nodeVersion": "5.4.1",
+  "_npmUser": {
+    "name": "stevegill",
+    "email": "stevengill97@gmail.com"
+  },
+  "_npmVersion": "3.5.3",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "cordova-registry-mapper@1.1.15",
-    "name": "cordova-registry-mapper",
+    "raw": "cordova-registry-mapper@^1.1.8",
+    "scope": null,
     "escapedName": "cordova-registry-mapper",
-    "rawSpec": "1.1.15",
-    "saveSpec": null,
-    "fetchSpec": "1.1.15"
+    "name": "cordova-registry-mapper",
+    "rawSpec": "^1.1.8",
+    "spec": ">=1.1.8 <2.0.0",
+    "type": "range"
   },
   "_requiredBy": [
     "/cordova-common"
   ],
   "_resolved": "https://registry.npmjs.org/cordova-registry-mapper/-/cordova-registry-mapper-1.1.15.tgz",
-  "_spec": "1.1.15",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_shasum": "e244b9185b8175473bff6079324905115f83dc7c",
+  "_shrinkwrap": null,
+  "_spec": "cordova-registry-mapper@^1.1.8",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Steve Gill"
   },
   "bugs": {
     "url": "https://github.com/stevengill/cordova-registry-mapper/issues"
   },
+  "dependencies": {},
   "description": "Maps old plugin ids to new plugin names for fetching from npm",
   "devDependencies": {
     "tape": "^3.5.0"
   },
+  "directories": {},
+  "dist": {
+    "shasum": "e244b9185b8175473bff6079324905115f83dc7c",
+    "tarball": "https://registry.npmjs.org/cordova-registry-mapper/-/cordova-registry-mapper-1.1.15.tgz"
+  },
+  "gitHead": "00af0f028ec94154a364eeabe38b8e22320647bd",
   "homepage": "https://github.com/stevengill/cordova-registry-mapper#readme",
   "keywords": [
     "cordova",
@@ -44,7 +65,15 @@
   ],
   "license": "Apache version 2.0",
   "main": "index.js",
+  "maintainers": [
+    {
+      "name": "stevegill",
+      "email": "stevengill97@gmail.com"
+    }
+  ],
   "name": "cordova-registry-mapper",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/stevengill/cordova-registry-mapper.git"
diff --git a/node_modules/glob/package.json b/node_modules/glob/package.json
index 7da0c77..6f4dd50 100644
--- a/node_modules/glob/package.json
+++ b/node_modules/glob/package.json
@@ -1,33 +1,46 @@
 {
   "_args": [
     [
-      "glob@5.0.15",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "glob@^5.0.13",
+        "scope": null,
+        "escapedName": "glob",
+        "name": "glob",
+        "rawSpec": "^5.0.13",
+        "spec": ">=5.0.13 <6.0.0",
+        "type": "range"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/cordova-common"
     ]
   ],
-  "_from": "glob@5.0.15",
+  "_from": "glob@>=5.0.13 <6.0.0",
   "_id": "glob@5.0.15",
-  "_inBundle": false,
-  "_integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+  "_inCache": true,
   "_location": "/glob",
+  "_nodeVersion": "4.0.0",
+  "_npmUser": {
+    "name": "isaacs",
+    "email": "isaacs@npmjs.com"
+  },
+  "_npmVersion": "3.3.2",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "glob@5.0.15",
-    "name": "glob",
+    "raw": "glob@^5.0.13",
+    "scope": null,
     "escapedName": "glob",
-    "rawSpec": "5.0.15",
-    "saveSpec": null,
-    "fetchSpec": "5.0.15"
+    "name": "glob",
+    "rawSpec": "^5.0.13",
+    "spec": ">=5.0.13 <6.0.0",
+    "type": "range"
   },
   "_requiredBy": [
-    "/cordova-common",
-    "/istanbul"
+    "/cordova-common"
   ],
   "_resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
-  "_spec": "5.0.15",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1",
+  "_shrinkwrap": null,
+  "_spec": "glob@^5.0.13",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/cordova-common",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",
@@ -50,6 +63,11 @@
     "tap": "^1.1.4",
     "tick": "0.0.6"
   },
+  "directories": {},
+  "dist": {
+    "shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1",
+    "tarball": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz"
+  },
   "engines": {
     "node": "*"
   },
@@ -58,10 +76,19 @@
     "sync.js",
     "common.js"
   ],
+  "gitHead": "3a7e71d453dd80e75b196fd262dd23ed54beeceb",
   "homepage": "https://github.com/isaacs/node-glob#readme",
   "license": "ISC",
   "main": "glob.js",
+  "maintainers": [
+    {
+      "name": "isaacs",
+      "email": "i@izs.me"
+    }
+  ],
   "name": "glob",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git://github.com/isaacs/node-glob.git"
diff --git a/node_modules/inflight/package.json b/node_modules/inflight/package.json
index 5b14383..0b9c67e 100644
--- a/node_modules/inflight/package.json
+++ b/node_modules/inflight/package.json
@@ -1,36 +1,50 @@
 {
   "_args": [
     [
-      "inflight@1.0.6",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "inflight@^1.0.4",
+        "scope": null,
+        "escapedName": "inflight",
+        "name": "inflight",
+        "rawSpec": "^1.0.4",
+        "spec": ">=1.0.4 <2.0.0",
+        "type": "range"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/glob"
     ]
   ],
-  "_from": "inflight@1.0.6",
+  "_from": "inflight@>=1.0.4 <2.0.0",
   "_id": "inflight@1.0.6",
-  "_inBundle": false,
-  "_integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+  "_inCache": true,
   "_location": "/inflight",
+  "_nodeVersion": "6.5.0",
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/inflight-1.0.6.tgz_1476330807696_0.10388551792129874"
+  },
+  "_npmUser": {
+    "name": "isaacs",
+    "email": "i@izs.me"
+  },
+  "_npmVersion": "3.10.7",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "inflight@1.0.6",
-    "name": "inflight",
+    "raw": "inflight@^1.0.4",
+    "scope": null,
     "escapedName": "inflight",
-    "rawSpec": "1.0.6",
-    "saveSpec": null,
-    "fetchSpec": "1.0.6"
+    "name": "inflight",
+    "rawSpec": "^1.0.4",
+    "spec": ">=1.0.4 <2.0.0",
+    "type": "range"
   },
   "_requiredBy": [
-    "/eslint/glob",
-    "/glob",
-    "/globby/glob",
-    "/jasmine/glob",
-    "/rimraf/glob"
+    "/glob"
   ],
   "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-  "_spec": "1.0.6",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_shasum": "49bd6331d7d02d0c09bc910a1075ba8165b56df9",
+  "_shrinkwrap": null,
+  "_spec": "inflight@^1.0.4",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/glob",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",
@@ -47,13 +61,39 @@
   "devDependencies": {
     "tap": "^7.1.2"
   },
+  "directories": {},
+  "dist": {
+    "shasum": "49bd6331d7d02d0c09bc910a1075ba8165b56df9",
+    "tarball": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
+  },
   "files": [
     "inflight.js"
   ],
+  "gitHead": "a547881738c8f57b27795e584071d67cf6ac1a57",
   "homepage": "https://github.com/isaacs/inflight",
   "license": "ISC",
   "main": "inflight.js",
+  "maintainers": [
+    {
+      "name": "iarna",
+      "email": "me@re-becca.org"
+    },
+    {
+      "name": "isaacs",
+      "email": "i@izs.me"
+    },
+    {
+      "name": "othiym23",
+      "email": "ogd@aoaioxxysz.net"
+    },
+    {
+      "name": "zkat",
+      "email": "kat@sykosomatic.org"
+    }
+  ],
   "name": "inflight",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/npm/inflight.git"
diff --git a/node_modules/inherits/package.json b/node_modules/inherits/package.json
index b0575e5..ac12981 100644
--- a/node_modules/inherits/package.json
+++ b/node_modules/inherits/package.json
@@ -1,50 +1,69 @@
 {
   "_args": [
     [
-      "inherits@2.0.3",
-      "C:\\Projects\\Cordova\\cordova-windows"
+      {
+        "raw": "inherits@2",
+        "scope": null,
+        "escapedName": "inherits",
+        "name": "inherits",
+        "rawSpec": "2",
+        "spec": ">=2.0.0 <3.0.0",
+        "type": "range"
+      },
+      "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/glob"
     ]
   ],
-  "_from": "inherits@2.0.3",
+  "_from": "inherits@>=2.0.0 <3.0.0",
   "_id": "inherits@2.0.3",
-  "_inBundle": false,
-  "_integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+  "_inCache": true,
   "_location": "/inherits",
+  "_nodeVersion": "6.5.0",
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/inherits-2.0.3.tgz_1473295776489_0.08142363070510328"
+  },
+  "_npmUser": {
+    "name": "isaacs",
+    "email": "i@izs.me"
+  },
+  "_npmVersion": "3.10.7",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "inherits@2.0.3",
-    "name": "inherits",
+    "raw": "inherits@2",
+    "scope": null,
     "escapedName": "inherits",
-    "rawSpec": "2.0.3",
-    "saveSpec": null,
-    "fetchSpec": "2.0.3"
+    "name": "inherits",
+    "rawSpec": "2",
+    "spec": ">=2.0.0 <3.0.0",
+    "type": "range"
   },
   "_requiredBy": [
-    "/concat-stream",
-    "/eslint/glob",
-    "/glob",
-    "/globby/glob",
-    "/jasmine/glob",
-    "/readable-stream",
-    "/rimraf/glob"
+    "/glob"
   ],
   "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-  "_spec": "2.0.3",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_shasum": "633c2c83e3da42a502f52466022480f4208261de",
+  "_shrinkwrap": null,
+  "_spec": "inherits@2",
+  "_where": "/Users/brodybits/Documents/cordova/cordova-windows/node_modules/glob",
   "browser": "./inherits_browser.js",
   "bugs": {
     "url": "https://github.com/isaacs/inherits/issues"
   },
+  "dependencies": {},
   "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
   "devDependencies": {
     "tap": "^7.1.0"
   },
+  "directories": {},
+  "dist": {
+    "shasum": "633c2c83e3da42a502f52466022480f4208261de",
+    "tarball": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
+  },
   "files": [
     "inherits.js",
     "inherits_browser.js"
   ],
+  "gitHead": "e05d0fb27c61a3ec687214f0476386b765364d5f",
   "homepage": "https://github.com/isaacs/inherits#readme",
   "keywords": [
     "inheritance",
@@ -58,7 +77,15 @@
   ],
   "license": "ISC",
   "main": "./inherits.js",
+  "maintainers": [
+    {
+      "name": "isaacs",
+      "email": "i@izs.me"
+    }
+  ],
   "name": "inherits",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git://github.com/isaacs/inherits.git"
diff --git a/node_modules/lodash/LICENSE b/node_modules/lodash/LICENSE
deleted file mode 100644
index 9cd87e5..0000000
--- a/node_modules/lodash/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
-Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/lodash/README.md b/node_modules/lodash/README.md
deleted file mode 100644
index fd98e5c..0000000
--- a/node_modules/lodash/README.md
+++ /dev/null
@@ -1,121 +0,0 @@
-# lodash v3.10.1
-
-The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) exported as [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) modules.
-
-Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli):
-```bash
-$ lodash modularize modern exports=node -o ./
-$ lodash modern -d -o ./index.js
-```
-
-## Installation
-
-Using npm:
-
-```bash
-$ {sudo -H} npm i -g npm
-$ npm i --save lodash
-```
-
-In Node.js/io.js:
-
-```js
-// load the modern build
-var _ = require('lodash');
-// or a method category
-var array = require('lodash/array');
-// or a method (great for smaller builds with browserify/webpack)
-var chunk = require('lodash/array/chunk');
-```
-
-See the [package source](https://github.com/lodash/lodash/tree/3.10.1-npm) for more details.
-
-**Note:**<br>
-Don’t assign values to the [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL.<br>
-Install [n_](https://www.npmjs.com/package/n_) for a REPL that includes lodash by default.
-
-## Module formats
-
-lodash is also available in a variety of other builds & module formats.
-
- * npm packages for [modern](https://www.npmjs.com/package/lodash), [compatibility](https://www.npmjs.com/package/lodash-compat), & [per method](https://www.npmjs.com/browse/keyword/lodash-modularized) builds
- * AMD modules for [modern](https://github.com/lodash/lodash/tree/3.10.1-amd) & [compatibility](https://github.com/lodash/lodash-compat/tree/3.10.1-amd) builds
- * ES modules for the [modern](https://github.com/lodash/lodash/tree/3.10.1-es) build
-
-## Further Reading
-
-  * [API Documentation](https://lodash.com/docs)
-  * [Build Differences](https://github.com/lodash/lodash/wiki/Build-Differences)
-  * [Changelog](https://github.com/lodash/lodash/wiki/Changelog)
-  * [Roadmap](https://github.com/lodash/lodash/wiki/Roadmap)
-  * [More Resources](https://github.com/lodash/lodash/wiki/Resources)
-
-## Features
-
- * ~100% [code coverage](https://coveralls.io/r/lodash)
- * Follows [semantic versioning](http://semver.org/) for releases
- * [Lazily evaluated](http://filimanjaro.com/blog/2014/introducing-lazy-evaluation/) chaining
- * [_(…)](https://lodash.com/docs#_) supports implicit chaining
- * [_.ary](https://lodash.com/docs#ary) & [_.rearg](https://lodash.com/docs#rearg) to change function argument limits & order
- * [_.at](https://lodash.com/docs#at) for cherry-picking collection values
- * [_.attempt](https://lodash.com/docs#attempt) to execute functions which may error without a try-catch
- * [_.before](https://lodash.com/docs#before) to complement [_.after](https://lodash.com/docs#after)
- * [_.bindKey](https://lodash.com/docs#bindKey) for binding [*“lazy”*](http://michaux.ca/articles/lazy-function-definition-pattern) defined methods
- * [_.chunk](https://lodash.com/docs#chunk) for splitting an array into chunks of a given size
- * [_.clone](https://lodash.com/docs#clone) supports shallow cloning of `Date` & `RegExp` objects
- * [_.cloneDeep](https://lodash.com/docs#cloneDeep) for deep cloning arrays & objects
- * [_.curry](https://lodash.com/docs#curry) & [_.curryRight](https://lodash.com/docs#curryRight) for creating [curried](http://hughfdjackson.com/javascript/why-curry-helps/) functions
- * [_.debounce](https://lodash.com/docs#debounce) & [_.throttle](https://lodash.com/docs#throttle) are cancelable & accept options for more control
- * [_.defaultsDeep](https://lodash.com/docs#defaultsDeep) for recursively assigning default properties
- * [_.fill](https://lodash.com/docs#fill) to fill arrays with values
- * [_.findKey](https://lodash.com/docs#findKey) for finding keys
- * [_.flow](https://lodash.com/docs#flow) to complement [_.flowRight](https://lodash.com/docs#flowRight) (a.k.a `_.compose`)
- * [_.forEach](https://lodash.com/docs#forEach) supports exiting early
- * [_.forIn](https://lodash.com/docs#forIn) for iterating all enumerable properties
- * [_.forOwn](https://lodash.com/docs#forOwn) for iterating own properties
- * [_.get](https://lodash.com/docs#get) & [_.set](https://lodash.com/docs#set) for deep property getting & setting
- * [_.gt](https://lodash.com/docs#gt), [_.gte](https://lodash.com/docs#gte), [_.lt](https://lodash.com/docs#lt), & [_.lte](https://lodash.com/docs#lte) relational methods
- * [_.inRange](https://lodash.com/docs#inRange) for checking whether a number is within a given range
- * [_.isNative](https://lodash.com/docs#isNative) to check for native functions
- * [_.isPlainObject](https://lodash.com/docs#isPlainObject) & [_.toPlainObject](https://lodash.com/docs#toPlainObject) to check for & convert to `Object` objects
- * [_.isTypedArray](https://lodash.com/docs#isTypedArray) to check for typed arrays
- * [_.mapKeys](https://lodash.com/docs#mapKeys) for mapping keys to an object
- * [_.matches](https://lodash.com/docs#matches) supports deep object comparisons
- * [_.matchesProperty](https://lodash.com/docs#matchesProperty) to complement [_.matches](https://lodash.com/docs#matches) & [_.property](https://lodash.com/docs#property)
- * [_.merge](https://lodash.com/docs#merge) for a deep [_.extend](https://lodash.com/docs#extend)
- * [_.method](https://lodash.com/docs#method) & [_.methodOf](https://lodash.com/docs#methodOf) to create functions that invoke methods
- * [_.modArgs](https://lodash.com/docs#modArgs) for more advanced functional composition
- * [_.parseInt](https://lodash.com/docs#parseInt) for consistent cross-environment behavior
- * [_.pull](https://lodash.com/docs#pull), [_.pullAt](https://lodash.com/docs#pullAt), & [_.remove](https://lodash.com/docs#remove) for mutating arrays
- * [_.random](https://lodash.com/docs#random) supports returning floating-point numbers
- * [_.restParam](https://lodash.com/docs#restParam) & [_.spread](https://lodash.com/docs#spread) for applying rest parameters & spreading arguments to functions
- * [_.runInContext](https://lodash.com/docs#runInContext) for collisionless mixins & easier mocking
- * [_.slice](https://lodash.com/docs#slice) for creating subsets of array-like values
- * [_.sortByAll](https://lodash.com/docs#sortByAll) & [_.sortByOrder](https://lodash.com/docs#sortByOrder) for sorting by multiple properties & orders
- * [_.support](https://lodash.com/docs#support) for flagging environment features
- * [_.template](https://lodash.com/docs#template) supports [*“imports”*](https://lodash.com/docs#templateSettings-imports) options & [ES template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components)
- * [_.transform](https://lodash.com/docs#transform) as a powerful alternative to [_.reduce](https://lodash.com/docs#reduce) for transforming objects
- * [_.unzipWith](https://lodash.com/docs#unzipWith) & [_.zipWith](https://lodash.com/docs#zipWith) to specify how grouped values should be combined
- * [_.valuesIn](https://lodash.com/docs#valuesIn) for getting values of all enumerable properties
- * [_.xor](https://lodash.com/docs#xor) to complement [_.difference](https://lodash.com/docs#difference), [_.intersection](https://lodash.com/docs#intersection), & [_.union](https://lodash.com/docs#union)
- * [_.add](https://lodash.com/docs#add), [_.round](https://lodash.com/docs#round), [_.sum](https://lodash.com/docs#sum), &
-   [more](https://lodash.com/docs "_.ceil & _.floor") math methods
- * [_.bind](https://lodash.com/docs#bind), [_.curry](https://lodash.com/docs#curry), [_.partial](https://lodash.com/docs#partial), &
-   [more](https://lodash.com/docs "_.bindKey, _.curryRight, _.partialRight") support customizable argument placeholders
- * [_.capitalize](https://lodash.com/docs#capitalize), [_.trim](https://lodash.com/docs#trim), &
-   [more](https://lodash.com/docs "_.camelCase, _.deburr, _.endsWith, _.escapeRegExp, _.kebabCase, _.pad, _.padLeft, _.padRight, _.repeat, _.snakeCase, _.startCase, _.startsWith, _.trimLeft, _.trimRight, _.trunc, _.words") string methods
- * [_.clone](https://lodash.com/docs#clone), [_.isEqual](https://lodash.com/docs#isEqual), &
-   [more](https://lodash.com/docs "_.assign, _.cloneDeep, _.merge") accept customizer callbacks
- * [_.dropWhile](https://lodash.com/docs#dropWhile), [_.takeWhile](https://lodash.com/docs#takeWhile), &
-   [more](https://lodash.com/docs "_.drop, _.dropRight, _.dropRightWhile, _.take, _.takeRight, _.takeRightWhile") to complement [_.first](https://lodash.com/docs#first), [_.initial](https://lodash.com/docs#initial), [_.last](https://lodash.com/docs#last), & [_.rest](https://lodash.com/docs#rest)
- * [_.findLast](https://lodash.com/docs#findLast), [_.findLastKey](https://lodash.com/docs#findLastKey), &
-   [more](https://lodash.com/docs "_.curryRight, _.dropRight, _.dropRightWhile, _.flowRight, _.forEachRight, _.forInRight, _.forOwnRight, _.padRight, partialRight, _.takeRight, _.trimRight, _.takeRightWhile") right-associative methods
- * [_.includes](https://lodash.com/docs#includes), [_.toArray](https://lodash.com/docs#toArray), &
-   [more](https://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.findLast, _.findWhere, _.forEach, _.forEachRight, _.groupBy, _.indexBy, _.invoke, _.map, _.max, _.min, _.partition, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.size, _.some, _.sortBy, _.sortByAll, _.sortByOrder, _.sum, _.where") accept strings
- * [_#commit](https://lodash.com/docs#prototype-commit) & [_#plant](https://lodash.com/docs#prototype-plant) for working with chain sequences
- * [_#thru](https://lodash.com/docs#thru) to pass values thru a chain sequence
-
-## Support
-
-Tested in Chrome 43-44, Firefox 38-39, IE 6-11, MS Edge, Safari 5-8, ChakraNode 0.12.2, io.js 2.5.0, Node.js 0.8.28, 0.10.40, & 0.12.7, PhantomJS 1.9.8, RingoJS 0.11, & Rhino 1.7.6.
-Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available. Special thanks to [Sauce Labs](https://saucelabs.com/) for providing automated browser testing.
diff --git a/node_modules/lodash/array.js b/node_modules/lodash/array.js
deleted file mode 100644
index e5121fa..0000000
--- a/node_modules/lodash/array.js
+++ /dev/null
@@ -1,44 +0,0 @@
-module.exports = {
-  'chunk': require('./array/chunk'),
-  'compact': require('./array/compact'),
-  'difference': require('./array/difference'),
-  'drop': require('./array/drop'),
-  'dropRight': require('./array/dropRight'),
-  'dropRightWhile': require('./array/dropRightWhile'),
-  'dropWhile': require('./array/dropWhile'),
-  'fill': require('./array/fill'),
-  'findIndex': require('./array/findIndex'),
-  'findLastIndex': require('./array/findLastIndex'),
-  'first': require('./array/first'),
-  'flatten': require('./array/flatten'),
-  'flattenDeep': require('./array/flattenDeep'),
-  'head': require('./array/head'),
-  'indexOf': require('./array/indexOf'),
-  'initial': require('./array/initial'),
-  'intersection': require('./array/intersection'),
-  'last': require('./array/last'),
-  'lastIndexOf': require('./array/lastIndexOf'),
-  'object': require('./array/object'),
-  'pull': require('./array/pull'),
-  'pullAt': require('./array/pullAt'),
-  'remove': require('./array/remove'),
-  'rest': require('./array/rest'),
-  'slice': require('./array/slice'),
-  'sortedIndex': require('./array/sortedIndex'),
-  'sortedLastIndex': require('./array/sortedLastIndex'),
-  'tail': require('./array/tail'),
-  'take': require('./array/take'),
-  'takeRight': require('./array/takeRight'),
-  'takeRightWhile': require('./array/takeRightWhile'),
-  'takeWhile': require('./array/takeWhile'),
-  'union': require('./array/union'),
-  'uniq': require('./array/uniq'),
-  'unique': require('./array/unique'),
-  'unzip': require('./array/unzip'),
-  'unzipWith': require('./array/unzipWith'),
-  'without': require('./array/without'),
-  'xor': require('./array/xor'),
-  'zip': require('./array/zip'),
-  'zipObject': require('./array/zipObject'),
-  'zipWith': require('./array/zipWith')
-};
diff --git a/node_modules/lodash/array/chunk.js b/node_modules/lodash/array/chunk.js
deleted file mode 100644
index c8be1fb..0000000
--- a/node_modules/lodash/array/chunk.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var baseSlice = require('../internal/baseSlice'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeCeil = Math.ceil,
-    nativeFloor = Math.floor,
-    nativeMax = Math.max;
-
-/**
- * Creates an array of elements split into groups the length of `size`.
- * If `collection` can't be split evenly, the final chunk will be the remaining
- * elements.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to process.
- * @param {number} [size=1] The length of each chunk.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
- * @returns {Array} Returns the new array containing chunks.
- * @example
- *
- * _.chunk(['a', 'b', 'c', 'd'], 2);
- * // => [['a', 'b'], ['c', 'd']]
- *
- * _.chunk(['a', 'b', 'c', 'd'], 3);
- * // => [['a', 'b', 'c'], ['d']]
- */
-function chunk(array, size, guard) {
-  if (guard ? isIterateeCall(array, size, guard) : size == null) {
-    size = 1;
-  } else {
-    size = nativeMax(nativeFloor(size) || 1, 1);
-  }
-  var index = 0,
-      length = array ? array.length : 0,
-      resIndex = -1,
-      result = Array(nativeCeil(length / size));
-
-  while (index < length) {
-    result[++resIndex] = baseSlice(array, index, (index += size));
-  }
-  return result;
-}
-
-module.exports = chunk;
diff --git a/node_modules/lodash/array/compact.js b/node_modules/lodash/array/compact.js
deleted file mode 100644
index 1dc1c55..0000000
--- a/node_modules/lodash/array/compact.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Creates an array with all falsey values removed. The values `false`, `null`,
- * `0`, `""`, `undefined`, and `NaN` are falsey.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to compact.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.compact([0, 1, false, 2, '', 3]);
- * // => [1, 2, 3]
- */
-function compact(array) {
-  var index = -1,
-      length = array ? array.length : 0,
-      resIndex = -1,
-      result = [];
-
-  while (++index < length) {
-    var value = array[index];
-    if (value) {
-      result[++resIndex] = value;
-    }
-  }
-  return result;
-}
-
-module.exports = compact;
diff --git a/node_modules/lodash/array/difference.js b/node_modules/lodash/array/difference.js
deleted file mode 100644
index 128932a..0000000
--- a/node_modules/lodash/array/difference.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseDifference = require('../internal/baseDifference'),
-    baseFlatten = require('../internal/baseFlatten'),
-    isArrayLike = require('../internal/isArrayLike'),
-    isObjectLike = require('../internal/isObjectLike'),
-    restParam = require('../function/restParam');
-
-/**
- * Creates an array of unique `array` values not included in the other
- * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The arrays of values to exclude.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.difference([1, 2, 3], [4, 2]);
- * // => [1, 3]
- */
-var difference = restParam(function(array, values) {
-  return (isObjectLike(array) && isArrayLike(array))
-    ? baseDifference(array, baseFlatten(values, false, true))
-    : [];
-});
-
-module.exports = difference;
diff --git a/node_modules/lodash/array/drop.js b/node_modules/lodash/array/drop.js
deleted file mode 100644
index 039a0b5..0000000
--- a/node_modules/lodash/array/drop.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseSlice = require('../internal/baseSlice'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * Creates a slice of `array` with `n` elements dropped from the beginning.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to drop.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.drop([1, 2, 3]);
- * // => [2, 3]
- *
- * _.drop([1, 2, 3], 2);
- * // => [3]
- *
- * _.drop([1, 2, 3], 5);
- * // => []
- *
- * _.drop([1, 2, 3], 0);
- * // => [1, 2, 3]
- */
-function drop(array, n, guard) {
-  var length = array ? array.length : 0;
-  if (!length) {
-    return [];
-  }
-  if (guard ? isIterateeCall(array, n, guard) : n == null) {
-    n = 1;
-  }
-  return baseSlice(array, n < 0 ? 0 : n);
-}
-
-module.exports = drop;
diff --git a/node_modules/lodash/array/dropRight.js b/node_modules/lodash/array/dropRight.js
deleted file mode 100644
index 14b5eb6..0000000
--- a/node_modules/lodash/array/dropRight.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var baseSlice = require('../internal/baseSlice'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * Creates a slice of `array` with `n` elements dropped from the end.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to drop.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.dropRight([1, 2, 3]);
- * // => [1, 2]
- *
- * _.dropRight([1, 2, 3], 2);
- * // => [1]
- *
- * _.dropRight([1, 2, 3], 5);
- * // => []
- *
- * _.dropRight([1, 2, 3], 0);
- * // => [1, 2, 3]
- */
-function dropRight(array, n, guard) {
-  var length = array ? array.length : 0;
-  if (!length) {
-    return [];
-  }
-  if (guard ? isIterateeCall(array, n, guard) : n == null) {
-    n = 1;
-  }
-  n = length - (+n || 0);
-  return baseSlice(array, 0, n < 0 ? 0 : n);
-}
-
-module.exports = dropRight;
diff --git a/node_modules/lodash/array/dropRightWhile.js b/node_modules/lodash/array/dropRightWhile.js
deleted file mode 100644
index be158bd..0000000
--- a/node_modules/lodash/array/dropRightWhile.js
+++ /dev/null
@@ -1,59 +0,0 @@
-var baseCallback = require('../internal/baseCallback'),
-    baseWhile = require('../internal/baseWhile');
-
-/**
- * Creates a slice of `array` excluding elements dropped from the end.
- * Elements are dropped until `predicate` returns falsey. The predicate is
- * bound to `thisArg` and invoked with three arguments: (value, index, array).
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that match the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.dropRightWhile([1, 2, 3], function(n) {
- *   return n > 1;
- * });
- * // => [1]
- *
- * var users = [
- *   { 'user': 'barney',  'active': true },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': false }
- * ];
- *
- * // using the `_.matches` callback shorthand
- * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');
- * // => ['barney', 'fred']
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.pluck(_.dropRightWhile(users, 'active', false), 'user');
- * // => ['barney']
- *
- * // using the `_.property` callback shorthand
- * _.pluck(_.dropRightWhile(users, 'active'), 'user');
- * // => ['barney', 'fred', 'pebbles']
- */
-function dropRightWhile(array, predicate, thisArg) {
-  return (array && array.length)
-    ? baseWhile(array, baseCallback(predicate, thisArg, 3), true, true)
-    : [];
-}
-
-module.exports = dropRightWhile;
diff --git a/node_modules/lodash/array/dropWhile.js b/node_modules/lodash/array/dropWhile.js
deleted file mode 100644
index d9eabae..0000000
--- a/node_modules/lodash/array/dropWhile.js
+++ /dev/null
@@ -1,59 +0,0 @@
-var baseCallback = require('../internal/baseCallback'),
-    baseWhile = require('../internal/baseWhile');
-
-/**
- * Creates a slice of `array` excluding elements dropped from the beginning.
- * Elements are dropped until `predicate` returns falsey. The predicate is
- * bound to `thisArg` and invoked with three arguments: (value, index, array).
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.dropWhile([1, 2, 3], function(n) {
- *   return n < 3;
- * });
- * // => [3]
- *
- * var users = [
- *   { 'user': 'barney',  'active': false },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': true }
- * ];
- *
- * // using the `_.matches` callback shorthand
- * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user');
- * // => ['fred', 'pebbles']
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.pluck(_.dropWhile(users, 'active', false), 'user');
- * // => ['pebbles']
- *
- * // using the `_.property` callback shorthand
- * _.pluck(_.dropWhile(users, 'active'), 'user');
- * // => ['barney', 'fred', 'pebbles']
- */
-function dropWhile(array, predicate, thisArg) {
-  return (array && array.length)
-    ? baseWhile(array, baseCallback(predicate, thisArg, 3), true)
-    : [];
-}
-
-module.exports = dropWhile;
diff --git a/node_modules/lodash/array/fill.js b/node_modules/lodash/array/fill.js
deleted file mode 100644
index 2c8f6da..0000000
--- a/node_modules/lodash/array/fill.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var baseFill = require('../internal/baseFill'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * Fills elements of `array` with `value` from `start` up to, but not
- * including, `end`.
- *
- * **Note:** This method mutates `array`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to fill.
- * @param {*} value The value to fill `array` with.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _.fill(array, 'a');
- * console.log(array);
- * // => ['a', 'a', 'a']
- *
- * _.fill(Array(3), 2);
- * // => [2, 2, 2]
- *
- * _.fill([4, 6, 8], '*', 1, 2);
- * // => [4, '*', 8]
- */
-function fill(array, value, start, end) {
-  var length = array ? array.length : 0;
-  if (!length) {
-    return [];
-  }
-  if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
-    start = 0;
-    end = length;
-  }
-  return baseFill(array, value, start, end);
-}
-
-module.exports = fill;
diff --git a/node_modules/lodash/array/findIndex.js b/node_modules/lodash/array/findIndex.js
deleted file mode 100644
index 2a6b8e1..0000000
--- a/node_modules/lodash/array/findIndex.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var createFindIndex = require('../internal/createFindIndex');
-
-/**
- * This method is like `_.find` except that it returns the index of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to search.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'active': false },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.findIndex(users, function(chr) {
- *   return chr.user == 'barney';
- * });
- * // => 0
- *
- * // using the `_.matches` callback shorthand
- * _.findIndex(users, { 'user': 'fred', 'active': false });
- * // => 1
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.findIndex(users, 'active', false);
- * // => 0
- *
- * // using the `_.property` callback shorthand
- * _.findIndex(users, 'active');
- * // => 2
- */
-var findIndex = createFindIndex();
-
-module.exports = findIndex;
diff --git a/node_modules/lodash/array/findLastIndex.js b/node_modules/lodash/array/findLastIndex.js
deleted file mode 100644
index d6d8eca..0000000
--- a/node_modules/lodash/array/findLastIndex.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var createFindIndex = require('../internal/createFindIndex');
-
-/**
- * This method is like `_.findIndex` except that it iterates over elements
- * of `collection` from right to left.
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to search.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'active': true },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': false }
- * ];
- *
- * _.findLastIndex(users, function(chr) {
- *   return chr.user == 'pebbles';
- * });
- * // => 2
- *
- * // using the `_.matches` callback shorthand
- * _.findLastIndex(users, { 'user': 'barney', 'active': true });
- * // => 0
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.findLastIndex(users, 'active', false);
- * // => 2
- *
- * // using the `_.property` callback shorthand
- * _.findLastIndex(users, 'active');
- * // => 0
- */
-var findLastIndex = createFindIndex(true);
-
-module.exports = findLastIndex;
diff --git a/node_modules/lodash/array/first.js b/node_modules/lodash/array/first.js
deleted file mode 100644
index b3b9c79..0000000
--- a/node_modules/lodash/array/first.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Gets the first element of `array`.
- *
- * @static
- * @memberOf _
- * @alias head
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the first element of `array`.
- * @example
- *
- * _.first([1, 2, 3]);
- * // => 1
- *
- * _.first([]);
- * // => undefined
- */
-function first(array) {
-  return array ? array[0] : undefined;
-}
-
-module.exports = first;
diff --git a/node_modules/lodash/array/flatten.js b/node_modules/lodash/array/flatten.js
deleted file mode 100644
index dc2eff8..0000000
--- a/node_modules/lodash/array/flatten.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var baseFlatten = require('../internal/baseFlatten'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * Flattens a nested array. If `isDeep` is `true` the array is recursively
- * flattened, otherwise it's only flattened a single level.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to flatten.
- * @param {boolean} [isDeep] Specify a deep flatten.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flatten([1, [2, 3, [4]]]);
- * // => [1, 2, 3, [4]]
- *
- * // using `isDeep`
- * _.flatten([1, [2, 3, [4]]], true);
- * // => [1, 2, 3, 4]
- */
-function flatten(array, isDeep, guard) {
-  var length = array ? array.length : 0;
-  if (guard && isIterateeCall(array, isDeep, guard)) {
-    isDeep = false;
-  }
-  return length ? baseFlatten(array, isDeep) : [];
-}
-
-module.exports = flatten;
diff --git a/node_modules/lodash/array/flattenDeep.js b/node_modules/lodash/array/flattenDeep.js
deleted file mode 100644
index 9f775fe..0000000
--- a/node_modules/lodash/array/flattenDeep.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var baseFlatten = require('../internal/baseFlatten');
-
-/**
- * Recursively flattens a nested array.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to recursively flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flattenDeep([1, [2, 3, [4]]]);
- * // => [1, 2, 3, 4]
- */
-function flattenDeep(array) {
-  var length = array ? array.length : 0;
-  return length ? baseFlatten(array, true) : [];
-}
-
-module.exports = flattenDeep;
diff --git a/node_modules/lodash/array/head.js b/node_modules/lodash/array/head.js
deleted file mode 100644
index 1961b08..0000000
--- a/node_modules/lodash/array/head.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./first');
diff --git a/node_modules/lodash/array/indexOf.js b/node_modules/lodash/array/indexOf.js
deleted file mode 100644
index 4cfc682..0000000
--- a/node_modules/lodash/array/indexOf.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var baseIndexOf = require('../internal/baseIndexOf'),
-    binaryIndex = require('../internal/binaryIndex');
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Gets the index at which the first occurrence of `value` is found in `array`
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
- * for equality comparisons. If `fromIndex` is negative, it's used as the offset
- * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`
- * performs a faster binary search.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to search.
- * @param {*} value The value to search for.
- * @param {boolean|number} [fromIndex=0] The index to search from or `true`
- *  to perform a binary search on a sorted array.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.indexOf([1, 2, 1, 2], 2);
- * // => 1
- *
- * // using `fromIndex`
- * _.indexOf([1, 2, 1, 2], 2, 2);
- * // => 3
- *
- * // performing a binary search
- * _.indexOf([1, 1, 2, 2], 2, true);
- * // => 2
- */
-function indexOf(array, value, fromIndex) {
-  var length = array ? array.length : 0;
-  if (!length) {
-    return -1;
-  }
-  if (typeof fromIndex == 'number') {
-    fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
-  } else if (fromIndex) {
-    var index = binaryIndex(array, value);
-    if (index < length &&
-        (value === value ? (value === array[index]) : (array[index] !== array[index]))) {
-      return index;
-    }
-    return -1;
-  }
-  return baseIndexOf(array, value, fromIndex || 0);
-}
-
-module.exports = indexOf;
diff --git a/node_modules/lodash/array/initial.js b/node_modules/lodash/array/initial.js
deleted file mode 100644
index 59b7a7d..0000000
--- a/node_modules/lodash/array/initial.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var dropRight = require('./dropRight');
-
-/**
- * Gets all but the last element of `array`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to query.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.initial([1, 2, 3]);
- * // => [1, 2]
- */
-function initial(array) {
-  return dropRight(array, 1);
-}
-
-module.exports = initial;
diff --git a/node_modules/lodash/array/intersection.js b/node_modules/lodash/array/intersection.js
deleted file mode 100644
index f218432..0000000
--- a/node_modules/lodash/array/intersection.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var baseIndexOf = require('../internal/baseIndexOf'),
-    cacheIndexOf = require('../internal/cacheIndexOf'),
-    createCache = require('../internal/createCache'),
-    isArrayLike = require('../internal/isArrayLike'),
-    restParam = require('../function/restParam');
-
-/**
- * Creates an array of unique values that are included in all of the provided
- * arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of shared values.
- * @example
- * _.intersection([1, 2], [4, 2], [2, 1]);
- * // => [2]
- */
-var intersection = restParam(function(arrays) {
-  var othLength = arrays.length,
-      othIndex = othLength,
-      caches = Array(length),
-      indexOf = baseIndexOf,
-      isCommon = true,
-      result = [];
-
-  while (othIndex--) {
-    var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];
-    caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;
-  }
-  var array = arrays[0],
-      index = -1,
-      length = array ? array.length : 0,
-      seen = caches[0];
-
-  outer:
-  while (++index < length) {
-    value = array[index];
-    if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {
-      var othIndex = othLength;
-      while (--othIndex) {
-        var cache = caches[othIndex];
-        if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {
-          continue outer;
-        }
-      }
-      if (seen) {
-        seen.push(value);
-      }
-      result.push(value);
-    }
-  }
-  return result;
-});
-
-module.exports = intersection;
diff --git a/node_modules/lodash/array/last.js b/node_modules/lodash/array/last.js
deleted file mode 100644
index 299af31..0000000
--- a/node_modules/lodash/array/last.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * Gets the last element of `array`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the last element of `array`.
- * @example
- *
- * _.last([1, 2, 3]);
- * // => 3
- */
-function last(array) {
-  var length = array ? array.length : 0;
-  return length ? array[length - 1] : undefined;
-}
-
-module.exports = last;
diff --git a/node_modules/lodash/array/lastIndexOf.js b/node_modules/lodash/array/lastIndexOf.js
deleted file mode 100644
index 02b8062..0000000
--- a/node_modules/lodash/array/lastIndexOf.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var binaryIndex = require('../internal/binaryIndex'),
-    indexOfNaN = require('../internal/indexOfNaN');
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
-    nativeMin = Math.min;
-
-/**
- * This method is like `_.indexOf` except that it iterates over elements of
- * `array` from right to left.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to search.
- * @param {*} value The value to search for.
- * @param {boolean|number} [fromIndex=array.length-1] The index to search from
- *  or `true` to perform a binary search on a sorted array.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.lastIndexOf([1, 2, 1, 2], 2);
- * // => 3
- *
- * // using `fromIndex`
- * _.lastIndexOf([1, 2, 1, 2], 2, 2);
- * // => 1
- *
- * // performing a binary search
- * _.lastIndexOf([1, 1, 2, 2], 2, true);
- * // => 3
- */
-function lastIndexOf(array, value, fromIndex) {
-  var length = array ? array.length : 0;
-  if (!length) {
-    return -1;
-  }
-  var index = length;
-  if (typeof fromIndex == 'number') {
-    index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1;
-  } else if (fromIndex) {
-    index = binaryIndex(array, value, true) - 1;
-    var other = array[index];
-    if (value === value ? (value === other) : (other !== other)) {
-      return index;
-    }
-    return -1;
-  }
-  if (value !== value) {
-    return indexOfNaN(array, index, true);
-  }
-  while (index--) {
-    if (array[index] === value) {
-      return index;
-    }
-  }
-  return -1;
-}
-
-module.exports = lastIndexOf;
diff --git a/node_modules/lodash/array/object.js b/node_modules/lodash/array/object.js
deleted file mode 100644
index f4a3453..0000000
--- a/node_modules/lodash/array/object.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./zipObject');
diff --git a/node_modules/lodash/array/pull.js b/node_modules/lodash/array/pull.js
deleted file mode 100644
index 7bcbb4a..0000000
--- a/node_modules/lodash/array/pull.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var baseIndexOf = require('../internal/baseIndexOf');
-
-/** Used for native method references. */
-var arrayProto = Array.prototype;
-
-/** Native method references. */
-var splice = arrayProto.splice;
-
-/**
- * Removes all provided values from `array` using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * **Note:** Unlike `_.without`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to modify.
- * @param {...*} [values] The values to remove.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [1, 2, 3, 1, 2, 3];
- *
- * _.pull(array, 2, 3);
- * console.log(array);
- * // => [1, 1]
- */
-function pull() {
-  var args = arguments,
-      array = args[0];
-
-  if (!(array && array.length)) {
-    return array;
-  }
-  var index = 0,
-      indexOf = baseIndexOf,
-      length = args.length;
-
-  while (++index < length) {
-    var fromIndex = 0,
-        value = args[index];
-
-    while ((fromIndex = indexOf(array, value, fromIndex)) > -1) {
-      splice.call(array, fromIndex, 1);
-    }
-  }
-  return array;
-}
-
-module.exports = pull;
diff --git a/node_modules/lodash/array/pullAt.js b/node_modules/lodash/array/pullAt.js
deleted file mode 100644
index 4ca2476..0000000
--- a/node_modules/lodash/array/pullAt.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var baseAt = require('../internal/baseAt'),
-    baseCompareAscending = require('../internal/baseCompareAscending'),
-    baseFlatten = require('../internal/baseFlatten'),
-    basePullAt = require('../internal/basePullAt'),
-    restParam = require('../function/restParam');
-
-/**
- * Removes elements from `array` corresponding to the given indexes and returns
- * an array of the removed elements. Indexes may be specified as an array of
- * indexes or as individual arguments.
- *
- * **Note:** Unlike `_.at`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to modify.
- * @param {...(number|number[])} [indexes] The indexes of elements to remove,
- *  specified as individual indexes or arrays of indexes.
- * @returns {Array} Returns the new array of removed elements.
- * @example
- *
- * var array = [5, 10, 15, 20];
- * var evens = _.pullAt(array, 1, 3);
- *
- * console.log(array);
- * // => [5, 15]
- *
- * console.log(evens);
- * // => [10, 20]
- */
-var pullAt = restParam(function(array, indexes) {
-  indexes = baseFlatten(indexes);
-
-  var result = baseAt(array, indexes);
-  basePullAt(array, indexes.sort(baseCompareAscending));
-  return result;
-});
-
-module.exports = pullAt;
diff --git a/node_modules/lodash/array/remove.js b/node_modules/lodash/array/remove.js
deleted file mode 100644
index 0cf979b..0000000
--- a/node_modules/lodash/array/remove.js
+++ /dev/null
@@ -1,64 +0,0 @@
-var baseCallback = require('../internal/baseCallback'),
-    basePullAt = require('../internal/basePullAt');
-
-/**
- * Removes all elements from `array` that `predicate` returns truthy for
- * and returns an array of the removed elements. The predicate is bound to
- * `thisArg` and invoked with three arguments: (value, index, array).
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * **Note:** Unlike `_.filter`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {Array} Returns the new array of removed elements.
- * @example
- *
- * var array = [1, 2, 3, 4];
- * var evens = _.remove(array, function(n) {
- *   return n % 2 == 0;
- * });
- *
- * console.log(array);
- * // => [1, 3]
- *
- * console.log(evens);
- * // => [2, 4]
- */
-function remove(array, predicate, thisArg) {
-  var result = [];
-  if (!(array && array.length)) {
-    return result;
-  }
-  var index = -1,
-      indexes = [],
-      length = array.length;
-
-  predicate = baseCallback(predicate, thisArg, 3);
-  while (++index < length) {
-    var value = array[index];
-    if (predicate(value, index, array)) {
-      result.push(value);
-      indexes.push(index);
-    }
-  }
-  basePullAt(array, indexes);
-  return result;
-}
-
-module.exports = remove;
diff --git a/node_modules/lodash/array/rest.js b/node_modules/lodash/array/rest.js
deleted file mode 100644
index 9bfb734..0000000
--- a/node_modules/lodash/array/rest.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var drop = require('./drop');
-
-/**
- * Gets all but the first element of `array`.
- *
- * @static
- * @memberOf _
- * @alias tail
- * @category Array
- * @param {Array} array The array to query.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.rest([1, 2, 3]);
- * // => [2, 3]
- */
-function rest(array) {
-  return drop(array, 1);
-}
-
-module.exports = rest;
diff --git a/node_modules/lodash/array/slice.js b/node_modules/lodash/array/slice.js
deleted file mode 100644
index 48ef1a1..0000000
--- a/node_modules/lodash/array/slice.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var baseSlice = require('../internal/baseSlice'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * Creates a slice of `array` from `start` up to, but not including, `end`.
- *
- * **Note:** This method is used instead of `Array#slice` to support node
- * lists in IE < 9 and to ensure dense arrays are returned.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
-function slice(array, start, end) {
-  var length = array ? array.length : 0;
-  if (!length) {
-    return [];
-  }
-  if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
-    start = 0;
-    end = length;
-  }
-  return baseSlice(array, start, end);
-}
-
-module.exports = slice;
diff --git a/node_modules/lodash/array/sortedIndex.js b/node_modules/lodash/array/sortedIndex.js
deleted file mode 100644
index 6903bca..0000000
--- a/node_modules/lodash/array/sortedIndex.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var createSortedIndex = require('../internal/createSortedIndex');
-
-/**
- * Uses a binary search to determine the lowest index at which `value` should
- * be inserted into `array` in order to maintain its sort order. If an iteratee
- * function is provided it's invoked for `value` and each element of `array`
- * to compute their sort ranking. The iteratee is bound to `thisArg` and
- * invoked with one argument; (value).
- *
- * If a property name is provided for `iteratee` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `iteratee` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {number} Returns the index at which `value` should be inserted
- *  into `array`.
- * @example
- *
- * _.sortedIndex([30, 50], 40);
- * // => 1
- *
- * _.sortedIndex([4, 4, 5, 5], 5);
- * // => 2
- *
- * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } };
- *
- * // using an iteratee function
- * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) {
- *   return this.data[word];
- * }, dict);
- * // => 1
- *
- * // using the `_.property` callback shorthand
- * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');
- * // => 1
- */
-var sortedIndex = createSortedIndex();
-
-module.exports = sortedIndex;
diff --git a/node_modules/lodash/array/sortedLastIndex.js b/node_modules/lodash/array/sortedLastIndex.js
deleted file mode 100644
index 81a4a86..0000000
--- a/node_modules/lodash/array/sortedLastIndex.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var createSortedIndex = require('../internal/createSortedIndex');
-
-/**
- * This method is like `_.sortedIndex` except that it returns the highest
- * index at which `value` should be inserted into `array` in order to
- * maintain its sort order.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {number} Returns the index at which `value` should be inserted
- *  into `array`.
- * @example
- *
- * _.sortedLastIndex([4, 4, 5, 5], 5);
- * // => 4
- */
-var sortedLastIndex = createSortedIndex(true);
-
-module.exports = sortedLastIndex;
diff --git a/node_modules/lodash/array/tail.js b/node_modules/lodash/array/tail.js
deleted file mode 100644
index c5dfe77..0000000
--- a/node_modules/lodash/array/tail.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./rest');
diff --git a/node_modules/lodash/array/take.js b/node_modules/lodash/array/take.js
deleted file mode 100644
index 875917a..0000000
--- a/node_modules/lodash/array/take.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var baseSlice = require('../internal/baseSlice'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * Creates a slice of `array` with `n` elements taken from the beginning.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to take.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.take([1, 2, 3]);
- * // => [1]
- *
- * _.take([1, 2, 3], 2);
- * // => [1, 2]
- *
- * _.take([1, 2, 3], 5);
- * // => [1, 2, 3]
- *
- * _.take([1, 2, 3], 0);
- * // => []
- */
-function take(array, n, guard) {
-  var length = array ? array.length : 0;
-  if (!length) {
-    return [];
-  }
-  if (guard ? isIterateeCall(array, n, guard) : n == null) {
-    n = 1;
-  }
-  return baseSlice(array, 0, n < 0 ? 0 : n);
-}
-
-module.exports = take;
diff --git a/node_modules/lodash/array/takeRight.js b/node_modules/lodash/array/takeRight.js
deleted file mode 100644
index 6e89c87..0000000
--- a/node_modules/lodash/array/takeRight.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var baseSlice = require('../internal/baseSlice'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * Creates a slice of `array` with `n` elements taken from the end.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to take.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.takeRight([1, 2, 3]);
- * // => [3]
- *
- * _.takeRight([1, 2, 3], 2);
- * // => [2, 3]
- *
- * _.takeRight([1, 2, 3], 5);
- * // => [1, 2, 3]
- *
- * _.takeRight([1, 2, 3], 0);
- * // => []
- */
-function takeRight(array, n, guard) {
-  var length = array ? array.length : 0;
-  if (!length) {
-    return [];
-  }
-  if (guard ? isIterateeCall(array, n, guard) : n == null) {
-    n = 1;
-  }
-  n = length - (+n || 0);
-  return baseSlice(array, n < 0 ? 0 : n);
-}
-
-module.exports = takeRight;
diff --git a/node_modules/lodash/array/takeRightWhile.js b/node_modules/lodash/array/takeRightWhile.js
deleted file mode 100644
index 5464d13..0000000
--- a/node_modules/lodash/array/takeRightWhile.js
+++ /dev/null
@@ -1,59 +0,0 @@
-var baseCallback = require('../internal/baseCallback'),
-    baseWhile = require('../internal/baseWhile');
-
-/**
- * Creates a slice of `array` with elements taken from the end. Elements are
- * taken until `predicate` returns falsey. The predicate is bound to `thisArg`
- * and invoked with three arguments: (value, index, array).
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.takeRightWhile([1, 2, 3], function(n) {
- *   return n > 1;
- * });
- * // => [2, 3]
- *
- * var users = [
- *   { 'user': 'barney',  'active': true },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': false }
- * ];
- *
- * // using the `_.matches` callback shorthand
- * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');
- * // => ['pebbles']
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.pluck(_.takeRightWhile(users, 'active', false), 'user');
- * // => ['fred', 'pebbles']
- *
- * // using the `_.property` callback shorthand
- * _.pluck(_.takeRightWhile(users, 'active'), 'user');
- * // => []
- */
-function takeRightWhile(array, predicate, thisArg) {
-  return (array && array.length)
-    ? baseWhile(array, baseCallback(predicate, thisArg, 3), false, true)
-    : [];
-}
-
-module.exports = takeRightWhile;
diff --git a/node_modules/lodash/array/takeWhile.js b/node_modules/lodash/array/takeWhile.js
deleted file mode 100644
index f7e28a1..0000000
--- a/node_modules/lodash/array/takeWhile.js
+++ /dev/null
@@ -1,59 +0,0 @@
-var baseCallback = require('../internal/baseCallback'),
-    baseWhile = require('../internal/baseWhile');
-
-/**
- * Creates a slice of `array` with elements taken from the beginning. Elements
- * are taken until `predicate` returns falsey. The predicate is bound to
- * `thisArg` and invoked with three arguments: (value, index, array).
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.takeWhile([1, 2, 3], function(n) {
- *   return n < 3;
- * });
- * // => [1, 2]
- *
- * var users = [
- *   { 'user': 'barney',  'active': false },
- *   { 'user': 'fred',    'active': false},
- *   { 'user': 'pebbles', 'active': true }
- * ];
- *
- * // using the `_.matches` callback shorthand
- * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user');
- * // => ['barney']
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.pluck(_.takeWhile(users, 'active', false), 'user');
- * // => ['barney', 'fred']
- *
- * // using the `_.property` callback shorthand
- * _.pluck(_.takeWhile(users, 'active'), 'user');
- * // => []
- */
-function takeWhile(array, predicate, thisArg) {
-  return (array && array.length)
-    ? baseWhile(array, baseCallback(predicate, thisArg, 3))
-    : [];
-}
-
-module.exports = takeWhile;
diff --git a/node_modules/lodash/array/union.js b/node_modules/lodash/array/union.js
deleted file mode 100644
index 53cefe4..0000000
--- a/node_modules/lodash/array/union.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var baseFlatten = require('../internal/baseFlatten'),
-    baseUniq = require('../internal/baseUniq'),
-    restParam = require('../function/restParam');
-
-/**
- * Creates an array of unique values, in order, from all of the provided arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * _.union([1, 2], [4, 2], [2, 1]);
- * // => [1, 2, 4]
- */
-var union = restParam(function(arrays) {
-  return baseUniq(baseFlatten(arrays, false, true));
-});
-
-module.exports = union;
diff --git a/node_modules/lodash/array/uniq.js b/node_modules/lodash/array/uniq.js
deleted file mode 100644
index ae937ef..0000000
--- a/node_modules/lodash/array/uniq.js
+++ /dev/null
@@ -1,71 +0,0 @@
-var baseCallback = require('../internal/baseCallback'),
-    baseUniq = require('../internal/baseUniq'),
-    isIterateeCall = require('../internal/isIterateeCall'),
-    sortedUniq = require('../internal/sortedUniq');
-
-/**
- * Creates a duplicate-free version of an array, using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
- * for equality comparisons, in which only the first occurence of each element
- * is kept. Providing `true` for `isSorted` performs a faster search algorithm
- * for sorted arrays. If an iteratee function is provided it's invoked for
- * each element in the array to generate the criterion by which uniqueness
- * is computed. The `iteratee` is bound to `thisArg` and invoked with three
- * arguments: (value, index, array).
- *
- * If a property name is provided for `iteratee` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `iteratee` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @alias unique
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {boolean} [isSorted] Specify the array is sorted.
- * @param {Function|Object|string} [iteratee] The function invoked per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Array} Returns the new duplicate-value-free array.
- * @example
- *
- * _.uniq([2, 1, 2]);
- * // => [2, 1]
- *
- * // using `isSorted`
- * _.uniq([1, 1, 2], true);
- * // => [1, 2]
- *
- * // using an iteratee function
- * _.uniq([1, 2.5, 1.5, 2], function(n) {
- *   return this.floor(n);
- * }, Math);
- * // => [1, 2.5]
- *
- * // using the `_.property` callback shorthand
- * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }, { 'x': 2 }]
- */
-function uniq(array, isSorted, iteratee, thisArg) {
-  var length = array ? array.length : 0;
-  if (!length) {
-    return [];
-  }
-  if (isSorted != null && typeof isSorted != 'boolean') {
-    thisArg = iteratee;
-    iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted;
-    isSorted = false;
-  }
-  iteratee = iteratee == null ? iteratee : baseCallback(iteratee, thisArg, 3);
-  return (isSorted)
-    ? sortedUniq(array, iteratee)
-    : baseUniq(array, iteratee);
-}
-
-module.exports = uniq;
diff --git a/node_modules/lodash/array/unique.js b/node_modules/lodash/array/unique.js
deleted file mode 100644
index 396de1b..0000000
--- a/node_modules/lodash/array/unique.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./uniq');
diff --git a/node_modules/lodash/array/unzip.js b/node_modules/lodash/array/unzip.js
deleted file mode 100644
index 0a539fa..0000000
--- a/node_modules/lodash/array/unzip.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var arrayFilter = require('../internal/arrayFilter'),
-    arrayMap = require('../internal/arrayMap'),
-    baseProperty = require('../internal/baseProperty'),
-    isArrayLike = require('../internal/isArrayLike');
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * This method is like `_.zip` except that it accepts an array of grouped
- * elements and creates an array regrouping the elements to their pre-zip
- * configuration.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array of grouped elements to process.
- * @returns {Array} Returns the new array of regrouped elements.
- * @example
- *
- * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]);
- * // => [['fred', 30, true], ['barney', 40, false]]
- *
- * _.unzip(zipped);
- * // => [['fred', 'barney'], [30, 40], [true, false]]
- */
-function unzip(array) {
-  if (!(array && array.length)) {
-    return [];
-  }
-  var index = -1,
-      length = 0;
-
-  array = arrayFilter(array, function(group) {
-    if (isArrayLike(group)) {
-      length = nativeMax(group.length, length);
-      return true;
-    }
-  });
-  var result = Array(length);
-  while (++index < length) {
-    result[index] = arrayMap(array, baseProperty(index));
-  }
-  return result;
-}
-
-module.exports = unzip;
diff --git a/node_modules/lodash/array/unzipWith.js b/node_modules/lodash/array/unzipWith.js
deleted file mode 100644
index 324a2b1..0000000
--- a/node_modules/lodash/array/unzipWith.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var arrayMap = require('../internal/arrayMap'),
-    arrayReduce = require('../internal/arrayReduce'),
-    bindCallback = require('../internal/bindCallback'),
-    unzip = require('./unzip');
-
-/**
- * This method is like `_.unzip` except that it accepts an iteratee to specify
- * how regrouped values should be combined. The `iteratee` is bound to `thisArg`
- * and invoked with four arguments: (accumulator, value, index, group).
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array of grouped elements to process.
- * @param {Function} [iteratee] The function to combine regrouped values.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Array} Returns the new array of regrouped elements.
- * @example
- *
- * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
- * // => [[1, 10, 100], [2, 20, 200]]
- *
- * _.unzipWith(zipped, _.add);
- * // => [3, 30, 300]
- */
-function unzipWith(array, iteratee, thisArg) {
-  var length = array ? array.length : 0;
-  if (!length) {
-    return [];
-  }
-  var result = unzip(array);
-  if (iteratee == null) {
-    return result;
-  }
-  iteratee = bindCallback(iteratee, thisArg, 4);
-  return arrayMap(result, function(group) {
-    return arrayReduce(group, iteratee, undefined, true);
-  });
-}
-
-module.exports = unzipWith;
diff --git a/node_modules/lodash/array/without.js b/node_modules/lodash/array/without.js
deleted file mode 100644
index 2ac3d11..0000000
--- a/node_modules/lodash/array/without.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var baseDifference = require('../internal/baseDifference'),
-    isArrayLike = require('../internal/isArrayLike'),
-    restParam = require('../function/restParam');
-
-/**
- * Creates an array excluding all provided values using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {Array} array The array to filter.
- * @param {...*} [values] The values to exclude.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.without([1, 2, 1, 3], 1, 2);
- * // => [3]
- */
-var without = restParam(function(array, values) {
-  return isArrayLike(array)
-    ? baseDifference(array, values)
-    : [];
-});
-
-module.exports = without;
diff --git a/node_modules/lodash/array/xor.js b/node_modules/lodash/array/xor.js
deleted file mode 100644
index 04ef32a..0000000
--- a/node_modules/lodash/array/xor.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var arrayPush = require('../internal/arrayPush'),
-    baseDifference = require('../internal/baseDifference'),
-    baseUniq = require('../internal/baseUniq'),
-    isArrayLike = require('../internal/isArrayLike');
-
-/**
- * Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
- * of the provided arrays.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of values.
- * @example
- *
- * _.xor([1, 2], [4, 2]);
- * // => [1, 4]
- */
-function xor() {
-  var index = -1,
-      length = arguments.length;
-
-  while (++index < length) {
-    var array = arguments[index];
-    if (isArrayLike(array)) {
-      var result = result
-        ? arrayPush(baseDifference(result, array), baseDifference(array, result))
-        : array;
-    }
-  }
-  return result ? baseUniq(result) : [];
-}
-
-module.exports = xor;
diff --git a/node_modules/lodash/array/zip.js b/node_modules/lodash/array/zip.js
deleted file mode 100644
index 53a6f69..0000000
--- a/node_modules/lodash/array/zip.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var restParam = require('../function/restParam'),
-    unzip = require('./unzip');
-
-/**
- * Creates an array of grouped elements, the first of which contains the first
- * elements of the given arrays, the second of which contains the second elements
- * of the given arrays, and so on.
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {...Array} [arrays] The arrays to process.
- * @returns {Array} Returns the new array of grouped elements.
- * @example
- *
- * _.zip(['fred', 'barney'], [30, 40], [true, false]);
- * // => [['fred', 30, true], ['barney', 40, false]]
- */
-var zip = restParam(unzip);
-
-module.exports = zip;
diff --git a/node_modules/lodash/array/zipObject.js b/node_modules/lodash/array/zipObject.js
deleted file mode 100644
index dec7a21..0000000
--- a/node_modules/lodash/array/zipObject.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var isArray = require('../lang/isArray');
-
-/**
- * The inverse of `_.pairs`; this method returns an object composed from arrays
- * of property names and values. Provide either a single two dimensional array,
- * e.g. `[[key1, value1], [key2, value2]]` or two arrays, one of property names
- * and one of corresponding values.
- *
- * @static
- * @memberOf _
- * @alias object
- * @category Array
- * @param {Array} props The property names.
- * @param {Array} [values=[]] The property values.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.zipObject([['fred', 30], ['barney', 40]]);
- * // => { 'fred': 30, 'barney': 40 }
- *
- * _.zipObject(['fred', 'barney'], [30, 40]);
- * // => { 'fred': 30, 'barney': 40 }
- */
-function zipObject(props, values) {
-  var index = -1,
-      length = props ? props.length : 0,
-      result = {};
-
-  if (length && !values && !isArray(props[0])) {
-    values = [];
-  }
-  while (++index < length) {
-    var key = props[index];
-    if (values) {
-      result[key] = values[index];
-    } else if (key) {
-      result[key[0]] = key[1];
-    }
-  }
-  return result;
-}
-
-module.exports = zipObject;
diff --git a/node_modules/lodash/array/zipWith.js b/node_modules/lodash/array/zipWith.js
deleted file mode 100644
index ad10374..0000000
--- a/node_modules/lodash/array/zipWith.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var restParam = require('../function/restParam'),
-    unzipWith = require('./unzipWith');
-
-/**
- * This method is like `_.zip` except that it accepts an iteratee to specify
- * how grouped values should be combined. The `iteratee` is bound to `thisArg`
- * and invoked with four arguments: (accumulator, value, index, group).
- *
- * @static
- * @memberOf _
- * @category Array
- * @param {...Array} [arrays] The arrays to process.
- * @param {Function} [iteratee] The function to combine grouped values.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Array} Returns the new array of grouped elements.
- * @example
- *
- * _.zipWith([1, 2], [10, 20], [100, 200], _.add);
- * // => [111, 222]
- */
-var zipWith = restParam(function(arrays) {
-  var length = arrays.length,
-      iteratee = length > 2 ? arrays[length - 2] : undefined,
-      thisArg = length > 1 ? arrays[length - 1] : undefined;
-
-  if (length > 2 && typeof iteratee == 'function') {
-    length -= 2;
-  } else {
-    iteratee = (length > 1 && typeof thisArg == 'function') ? (--length, thisArg) : undefined;
-    thisArg = undefined;
-  }
-  arrays.length = length;
-  return unzipWith(arrays, iteratee, thisArg);
-});
-
-module.exports = zipWith;
diff --git a/node_modules/lodash/chain.js b/node_modules/lodash/chain.js
deleted file mode 100644
index 6439627..0000000
--- a/node_modules/lodash/chain.js
+++ /dev/null
@@ -1,16 +0,0 @@
-module.exports = {
-  'chain': require('./chain/chain'),
-  'commit': require('./chain/commit'),
-  'concat': require('./chain/concat'),
-  'lodash': require('./chain/lodash'),
-  'plant': require('./chain/plant'),
-  'reverse': require('./chain/reverse'),
-  'run': require('./chain/run'),
-  'tap': require('./chain/tap'),
-  'thru': require('./chain/thru'),
-  'toJSON': require('./chain/toJSON'),
-  'toString': require('./chain/toString'),
-  'value': require('./chain/value'),
-  'valueOf': require('./chain/valueOf'),
-  'wrapperChain': require('./chain/wrapperChain')
-};
diff --git a/node_modules/lodash/chain/chain.js b/node_modules/lodash/chain/chain.js
deleted file mode 100644
index 453ba1e..0000000
--- a/node_modules/lodash/chain/chain.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var lodash = require('./lodash');
-
-/**
- * Creates a `lodash` object that wraps `value` with explicit method
- * chaining enabled.
- *
- * @static
- * @memberOf _
- * @category Chain
- * @param {*} value The value to wrap.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'age': 36 },
- *   { 'user': 'fred',    'age': 40 },
- *   { 'user': 'pebbles', 'age': 1 }
- * ];
- *
- * var youngest = _.chain(users)
- *   .sortBy('age')
- *   .map(function(chr) {
- *     return chr.user + ' is ' + chr.age;
- *   })
- *   .first()
- *   .value();
- * // => 'pebbles is 1'
- */
-function chain(value) {
-  var result = lodash(value);
-  result.__chain__ = true;
-  return result;
-}
-
-module.exports = chain;
diff --git a/node_modules/lodash/chain/commit.js b/node_modules/lodash/chain/commit.js
deleted file mode 100644
index c732d1b..0000000
--- a/node_modules/lodash/chain/commit.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperCommit');
diff --git a/node_modules/lodash/chain/concat.js b/node_modules/lodash/chain/concat.js
deleted file mode 100644
index 90607d1..0000000
--- a/node_modules/lodash/chain/concat.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperConcat');
diff --git a/node_modules/lodash/chain/lodash.js b/node_modules/lodash/chain/lodash.js
deleted file mode 100644
index 1c3467e..0000000
--- a/node_modules/lodash/chain/lodash.js
+++ /dev/null
@@ -1,125 +0,0 @@
-var LazyWrapper = require('../internal/LazyWrapper'),
-    LodashWrapper = require('../internal/LodashWrapper'),
-    baseLodash = require('../internal/baseLodash'),
-    isArray = require('../lang/isArray'),
-    isObjectLike = require('../internal/isObjectLike'),
-    wrapperClone = require('../internal/wrapperClone');
-
-/** Used for native method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates a `lodash` object which wraps `value` to enable implicit chaining.
- * Methods that operate on and return arrays, collections, and functions can
- * be chained together. Methods that retrieve a single value or may return a
- * primitive value will automatically end the chain returning the unwrapped
- * value. Explicit chaining may be enabled using `_.chain`. The execution of
- * chained methods is lazy, that is, execution is deferred until `_#value`
- * is implicitly or explicitly called.
- *
- * Lazy evaluation allows several methods to support shortcut fusion. Shortcut
- * fusion is an optimization strategy which merge iteratee calls; this can help
- * to avoid the creation of intermediate data structures and greatly reduce the
- * number of iteratee executions.
- *
- * Chaining is supported in custom builds as long as the `_#value` method is
- * directly or indirectly included in the build.
- *
- * In addition to lodash methods, wrappers have `Array` and `String` methods.
- *
- * The wrapper `Array` methods are:
- * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,
- * `splice`, and `unshift`
- *
- * The wrapper `String` methods are:
- * `replace` and `split`
- *
- * The wrapper methods that support shortcut fusion are:
- * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,
- * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,
- * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,
- * and `where`
- *
- * The chainable wrapper methods are:
- * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,
- * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,
- * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defaultsDeep`,
- * `defer`, `delay`, `difference`, `drop`, `dropRight`, `dropRightWhile`,
- * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`,
- * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`,
- * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`,
- * `invoke`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`,
- * `matchesProperty`, `memoize`, `merge`, `method`, `methodOf`, `mixin`,
- * `modArgs`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`,
- * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`,
- * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `restParam`,
- * `reverse`, `set`, `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`,
- * `sortByOrder`, `splice`, `spread`, `take`, `takeRight`, `takeRightWhile`,
- * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`,
- * `transform`, `union`, `uniq`, `unshift`, `unzip`, `unzipWith`, `values`,
- * `valuesIn`, `where`, `without`, `wrap`, `xor`, `zip`, `zipObject`, `zipWith`
- *
- * The wrapper methods that are **not** chainable by default are:
- * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clone`, `cloneDeep`,
- * `deburr`, `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`,
- * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`,
- * `floor`, `get`, `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`,
- * `inRange`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`,
- * `isEmpty`, `isEqual`, `isError`, `isFinite` `isFunction`, `isMatch`,
- * `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, `isPlainObject`,
- * `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`,
- * `last`, `lastIndexOf`, `lt`, `lte`, `max`, `min`, `noConflict`, `noop`,
- * `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, `reduce`,
- * `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `shift`, `size`,
- * `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`,
- * `startsWith`, `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`,
- * `unescape`, `uniqueId`, `value`, and `words`
- *
- * The wrapper method `sample` will return a wrapped value when `n` is provided,
- * otherwise an unwrapped value is returned.
- *
- * @name _
- * @constructor
- * @category Chain
- * @param {*} value The value to wrap in a `lodash` instance.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var wrapped = _([1, 2, 3]);
- *
- * // returns an unwrapped value
- * wrapped.reduce(function(total, n) {
- *   return total + n;
- * });
- * // => 6
- *
- * // returns a wrapped value
- * var squares = wrapped.map(function(n) {
- *   return n * n;
- * });
- *
- * _.isArray(squares);
- * // => false
- *
- * _.isArray(squares.value());
- * // => true
- */
-function lodash(value) {
-  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
-    if (value instanceof LodashWrapper) {
-      return value;
-    }
-    if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) {
-      return wrapperClone(value);
-    }
-  }
-  return new LodashWrapper(value);
-}
-
-// Ensure wrappers are instances of `baseLodash`.
-lodash.prototype = baseLodash.prototype;
-
-module.exports = lodash;
diff --git a/node_modules/lodash/chain/plant.js b/node_modules/lodash/chain/plant.js
deleted file mode 100644
index 04099f2..0000000
--- a/node_modules/lodash/chain/plant.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperPlant');
diff --git a/node_modules/lodash/chain/reverse.js b/node_modules/lodash/chain/reverse.js
deleted file mode 100644
index f72a64a..0000000
--- a/node_modules/lodash/chain/reverse.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperReverse');
diff --git a/node_modules/lodash/chain/run.js b/node_modules/lodash/chain/run.js
deleted file mode 100644
index 5e751a2..0000000
--- a/node_modules/lodash/chain/run.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperValue');
diff --git a/node_modules/lodash/chain/tap.js b/node_modules/lodash/chain/tap.js
deleted file mode 100644
index 3d0257e..0000000
--- a/node_modules/lodash/chain/tap.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * This method invokes `interceptor` and returns `value`. The interceptor is
- * bound to `thisArg` and invoked with one argument; (value). The purpose of
- * this method is to "tap into" a method chain in order to perform operations
- * on intermediate results within the chain.
- *
- * @static
- * @memberOf _
- * @category Chain
- * @param {*} value The value to provide to `interceptor`.
- * @param {Function} interceptor The function to invoke.
- * @param {*} [thisArg] The `this` binding of `interceptor`.
- * @returns {*} Returns `value`.
- * @example
- *
- * _([1, 2, 3])
- *  .tap(function(array) {
- *    array.pop();
- *  })
- *  .reverse()
- *  .value();
- * // => [2, 1]
- */
-function tap(value, interceptor, thisArg) {
-  interceptor.call(thisArg, value);
-  return value;
-}
-
-module.exports = tap;
diff --git a/node_modules/lodash/chain/thru.js b/node_modules/lodash/chain/thru.js
deleted file mode 100644
index a715780..0000000
--- a/node_modules/lodash/chain/thru.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * This method is like `_.tap` except that it returns the result of `interceptor`.
- *
- * @static
- * @memberOf _
- * @category Chain
- * @param {*} value The value to provide to `interceptor`.
- * @param {Function} interceptor The function to invoke.
- * @param {*} [thisArg] The `this` binding of `interceptor`.
- * @returns {*} Returns the result of `interceptor`.
- * @example
- *
- * _('  abc  ')
- *  .chain()
- *  .trim()
- *  .thru(function(value) {
- *    return [value];
- *  })
- *  .value();
- * // => ['abc']
- */
-function thru(value, interceptor, thisArg) {
-  return interceptor.call(thisArg, value);
-}
-
-module.exports = thru;
diff --git a/node_modules/lodash/chain/toJSON.js b/node_modules/lodash/chain/toJSON.js
deleted file mode 100644
index 5e751a2..0000000
--- a/node_modules/lodash/chain/toJSON.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperValue');
diff --git a/node_modules/lodash/chain/toString.js b/node_modules/lodash/chain/toString.js
deleted file mode 100644
index c7bcbf9..0000000
--- a/node_modules/lodash/chain/toString.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperToString');
diff --git a/node_modules/lodash/chain/value.js b/node_modules/lodash/chain/value.js
deleted file mode 100644
index 5e751a2..0000000
--- a/node_modules/lodash/chain/value.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperValue');
diff --git a/node_modules/lodash/chain/valueOf.js b/node_modules/lodash/chain/valueOf.js
deleted file mode 100644
index 5e751a2..0000000
--- a/node_modules/lodash/chain/valueOf.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./wrapperValue');
diff --git a/node_modules/lodash/chain/wrapperChain.js b/node_modules/lodash/chain/wrapperChain.js
deleted file mode 100644
index 3823481..0000000
--- a/node_modules/lodash/chain/wrapperChain.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var chain = require('./chain');
-
-/**
- * Enables explicit method chaining on the wrapper object.
- *
- * @name chain
- * @memberOf _
- * @category Chain
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36 },
- *   { 'user': 'fred',   'age': 40 }
- * ];
- *
- * // without explicit chaining
- * _(users).first();
- * // => { 'user': 'barney', 'age': 36 }
- *
- * // with explicit chaining
- * _(users).chain()
- *   .first()
- *   .pick('user')
- *   .value();
- * // => { 'user': 'barney' }
- */
-function wrapperChain() {
-  return chain(this);
-}
-
-module.exports = wrapperChain;
diff --git a/node_modules/lodash/chain/wrapperCommit.js b/node_modules/lodash/chain/wrapperCommit.js
deleted file mode 100644
index c3d2898..0000000
--- a/node_modules/lodash/chain/wrapperCommit.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var LodashWrapper = require('../internal/LodashWrapper');
-
-/**
- * Executes the chained sequence and returns the wrapped result.
- *
- * @name commit
- * @memberOf _
- * @category Chain
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var array = [1, 2];
- * var wrapped = _(array).push(3);
- *
- * console.log(array);
- * // => [1, 2]
- *
- * wrapped = wrapped.commit();
- * console.log(array);
- * // => [1, 2, 3]
- *
- * wrapped.last();
- * // => 3
- *
- * console.log(array);
- * // => [1, 2, 3]
- */
-function wrapperCommit() {
-  return new LodashWrapper(this.value(), this.__chain__);
-}
-
-module.exports = wrapperCommit;
diff --git a/node_modules/lodash/chain/wrapperConcat.js b/node_modules/lodash/chain/wrapperConcat.js
deleted file mode 100644
index 799156c..0000000
--- a/node_modules/lodash/chain/wrapperConcat.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var arrayConcat = require('../internal/arrayConcat'),
-    baseFlatten = require('../internal/baseFlatten'),
-    isArray = require('../lang/isArray'),
-    restParam = require('../function/restParam'),
-    toObject = require('../internal/toObject');
-
-/**
- * Creates a new array joining a wrapped array with any additional arrays
- * and/or values.
- *
- * @name concat
- * @memberOf _
- * @category Chain
- * @param {...*} [values] The values to concatenate.
- * @returns {Array} Returns the new concatenated array.
- * @example
- *
- * var array = [1];
- * var wrapped = _(array).concat(2, [3], [[4]]);
- *
- * console.log(wrapped.value());
- * // => [1, 2, 3, [4]]
- *
- * console.log(array);
- * // => [1]
- */
-var wrapperConcat = restParam(function(values) {
-  values = baseFlatten(values);
-  return this.thru(function(array) {
-    return arrayConcat(isArray(array) ? array : [toObject(array)], values);
-  });
-});
-
-module.exports = wrapperConcat;
diff --git a/node_modules/lodash/chain/wrapperPlant.js b/node_modules/lodash/chain/wrapperPlant.js
deleted file mode 100644
index 234fe41..0000000
--- a/node_modules/lodash/chain/wrapperPlant.js
+++ /dev/null
@@ -1,45 +0,0 @@
-var baseLodash = require('../internal/baseLodash'),
-    wrapperClone = require('../internal/wrapperClone');
-
-/**
- * Creates a clone of the chained sequence planting `value` as the wrapped value.
- *
- * @name plant
- * @memberOf _
- * @category Chain
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var array = [1, 2];
- * var wrapped = _(array).map(function(value) {
- *   return Math.pow(value, 2);
- * });
- *
- * var other = [3, 4];
- * var otherWrapped = wrapped.plant(other);
- *
- * otherWrapped.value();
- * // => [9, 16]
- *
- * wrapped.value();
- * // => [1, 4]
- */
-function wrapperPlant(value) {
-  var result,
-      parent = this;
-
-  while (parent instanceof baseLodash) {
-    var clone = wrapperClone(parent);
-    if (result) {
-      previous.__wrapped__ = clone;
-    } else {
-      result = clone;
-    }
-    var previous = clone;
-    parent = parent.__wrapped__;
-  }
-  previous.__wrapped__ = value;
-  return result;
-}
-
-module.exports = wrapperPlant;
diff --git a/node_modules/lodash/chain/wrapperReverse.js b/node_modules/lodash/chain/wrapperReverse.js
deleted file mode 100644
index 6ba546d..0000000
--- a/node_modules/lodash/chain/wrapperReverse.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var LazyWrapper = require('../internal/LazyWrapper'),
-    LodashWrapper = require('../internal/LodashWrapper'),
-    thru = require('./thru');
-
-/**
- * Reverses the wrapped array so the first element becomes the last, the
- * second element becomes the second to last, and so on.
- *
- * **Note:** This method mutates the wrapped array.
- *
- * @name reverse
- * @memberOf _
- * @category Chain
- * @returns {Object} Returns the new reversed `lodash` wrapper instance.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _(array).reverse().value()
- * // => [3, 2, 1]
- *
- * console.log(array);
- * // => [3, 2, 1]
- */
-function wrapperReverse() {
-  var value = this.__wrapped__;
-
-  var interceptor = function(value) {
-    return value.reverse();
-  };
-  if (value instanceof LazyWrapper) {
-    var wrapped = value;
-    if (this.__actions__.length) {
-      wrapped = new LazyWrapper(this);
-    }
-    wrapped = wrapped.reverse();
-    wrapped.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
-    return new LodashWrapper(wrapped, this.__chain__);
-  }
-  return this.thru(interceptor);
-}
-
-module.exports = wrapperReverse;
diff --git a/node_modules/lodash/chain/wrapperToString.js b/node_modules/lodash/chain/wrapperToString.js
deleted file mode 100644
index db975a5..0000000
--- a/node_modules/lodash/chain/wrapperToString.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Produces the result of coercing the unwrapped value to a string.
- *
- * @name toString
- * @memberOf _
- * @category Chain
- * @returns {string} Returns the coerced string value.
- * @example
- *
- * _([1, 2, 3]).toString();
- * // => '1,2,3'
- */
-function wrapperToString() {
-  return (this.value() + '');
-}
-
-module.exports = wrapperToString;
diff --git a/node_modules/lodash/chain/wrapperValue.js b/node_modules/lodash/chain/wrapperValue.js
deleted file mode 100644
index 2734e41..0000000
--- a/node_modules/lodash/chain/wrapperValue.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var baseWrapperValue = require('../internal/baseWrapperValue');
-
-/**
- * Executes the chained sequence to extract the unwrapped value.
- *
- * @name value
- * @memberOf _
- * @alias run, toJSON, valueOf
- * @category Chain
- * @returns {*} Returns the resolved unwrapped value.
- * @example
- *
- * _([1, 2, 3]).value();
- * // => [1, 2, 3]
- */
-function wrapperValue() {
-  return baseWrapperValue(this.__wrapped__, this.__actions__);
-}
-
-module.exports = wrapperValue;
diff --git a/node_modules/lodash/collection.js b/node_modules/lodash/collection.js
deleted file mode 100644
index 0338857..0000000
--- a/node_modules/lodash/collection.js
+++ /dev/null
@@ -1,44 +0,0 @@
-module.exports = {
-  'all': require('./collection/all'),
-  'any': require('./collection/any'),
-  'at': require('./collection/at'),
-  'collect': require('./collection/collect'),
-  'contains': require('./collection/contains'),
-  'countBy': require('./collection/countBy'),
-  'detect': require('./collection/detect'),
-  'each': require('./collection/each'),
-  'eachRight': require('./collection/eachRight'),
-  'every': require('./collection/every'),
-  'filter': require('./collection/filter'),
-  'find': require('./collection/find'),
-  'findLast': require('./collection/findLast'),
-  'findWhere': require('./collection/findWhere'),
-  'foldl': require('./collection/foldl'),
-  'foldr': require('./collection/foldr'),
-  'forEach': require('./collection/forEach'),
-  'forEachRight': require('./collection/forEachRight'),
-  'groupBy': require('./collection/groupBy'),
-  'include': require('./collection/include'),
-  'includes': require('./collection/includes'),
-  'indexBy': require('./collection/indexBy'),
-  'inject': require('./collection/inject'),
-  'invoke': require('./collection/invoke'),
-  'map': require('./collection/map'),
-  'max': require('./math/max'),
-  'min': require('./math/min'),
-  'partition': require('./collection/partition'),
-  'pluck': require('./collection/pluck'),
-  'reduce': require('./collection/reduce'),
-  'reduceRight': require('./collection/reduceRight'),
-  'reject': require('./collection/reject'),
-  'sample': require('./collection/sample'),
-  'select': require('./collection/select'),
-  'shuffle': require('./collection/shuffle'),
-  'size': require('./collection/size'),
-  'some': require('./collection/some'),
-  'sortBy': require('./collection/sortBy'),
-  'sortByAll': require('./collection/sortByAll'),
-  'sortByOrder': require('./collection/sortByOrder'),
-  'sum': require('./math/sum'),
-  'where': require('./collection/where')
-};
diff --git a/node_modules/lodash/collection/all.js b/node_modules/lodash/collection/all.js
deleted file mode 100644
index d0839f7..0000000
--- a/node_modules/lodash/collection/all.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./every');
diff --git a/node_modules/lodash/collection/any.js b/node_modules/lodash/collection/any.js
deleted file mode 100644
index 900ac25..0000000
--- a/node_modules/lodash/collection/any.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./some');
diff --git a/node_modules/lodash/collection/at.js b/node_modules/lodash/collection/at.js
deleted file mode 100644
index 29236e5..0000000
--- a/node_modules/lodash/collection/at.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var baseAt = require('../internal/baseAt'),
-    baseFlatten = require('../internal/baseFlatten'),
-    restParam = require('../function/restParam');
-
-/**
- * Creates an array of elements corresponding to the given keys, or indexes,
- * of `collection`. Keys may be specified as individual arguments or as arrays
- * of keys.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {...(number|number[]|string|string[])} [props] The property names
- *  or indexes of elements to pick, specified individually or in arrays.
- * @returns {Array} Returns the new array of picked elements.
- * @example
- *
- * _.at(['a', 'b', 'c'], [0, 2]);
- * // => ['a', 'c']
- *
- * _.at(['barney', 'fred', 'pebbles'], 0, 2);
- * // => ['barney', 'pebbles']
- */
-var at = restParam(function(collection, props) {
-  return baseAt(collection, baseFlatten(props));
-});
-
-module.exports = at;
diff --git a/node_modules/lodash/collection/collect.js b/node_modules/lodash/collection/collect.js
deleted file mode 100644
index 0d1e1ab..0000000
--- a/node_modules/lodash/collection/collect.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./map');
diff --git a/node_modules/lodash/collection/contains.js b/node_modules/lodash/collection/contains.js
deleted file mode 100644
index 594722a..0000000
--- a/node_modules/lodash/collection/contains.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./includes');
diff --git a/node_modules/lodash/collection/countBy.js b/node_modules/lodash/collection/countBy.js
deleted file mode 100644
index e97dbb7..0000000
--- a/node_modules/lodash/collection/countBy.js
+++ /dev/null
@@ -1,54 +0,0 @@
-var createAggregator = require('../internal/createAggregator');
-
-/** Used for native method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` through `iteratee`. The corresponding value
- * of each key is the number of times the key was returned by `iteratee`.
- * The `iteratee` is bound to `thisArg` and invoked with three arguments:
- * (value, index|key, collection).
- *
- * If a property name is provided for `iteratee` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `iteratee` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * _.countBy([4.3, 6.1, 6.4], function(n) {
- *   return Math.floor(n);
- * });
- * // => { '4': 1, '6': 2 }
- *
- * _.countBy([4.3, 6.1, 6.4], function(n) {
- *   return this.floor(n);
- * }, Math);
- * // => { '4': 1, '6': 2 }
- *
- * _.countBy(['one', 'two', 'three'], 'length');
- * // => { '3': 2, '5': 1 }
- */
-var countBy = createAggregator(function(result, value, key) {
-  hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1);
-});
-
-module.exports = countBy;
diff --git a/node_modules/lodash/collection/detect.js b/node_modules/lodash/collection/detect.js
deleted file mode 100644
index 2fb6303..0000000
--- a/node_modules/lodash/collection/detect.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./find');
diff --git a/node_modules/lodash/collection/each.js b/node_modules/lodash/collection/each.js
deleted file mode 100644
index 8800f42..0000000
--- a/node_modules/lodash/collection/each.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./forEach');
diff --git a/node_modules/lodash/collection/eachRight.js b/node_modules/lodash/collection/eachRight.js
deleted file mode 100644
index 3252b2a..0000000
--- a/node_modules/lodash/collection/eachRight.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./forEachRight');
diff --git a/node_modules/lodash/collection/every.js b/node_modules/lodash/collection/every.js
deleted file mode 100644
index 5a2d0f5..0000000
--- a/node_modules/lodash/collection/every.js
+++ /dev/null
@@ -1,66 +0,0 @@
-var arrayEvery = require('../internal/arrayEvery'),
-    baseCallback = require('../internal/baseCallback'),
-    baseEvery = require('../internal/baseEvery'),
-    isArray = require('../lang/isArray'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * Checks if `predicate` returns truthy for **all** elements of `collection`.
- * The predicate is bound to `thisArg` and invoked with three arguments:
- * (value, index|key, collection).
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @alias all
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- *  else `false`.
- * @example
- *
- * _.every([true, 1, null, 'yes'], Boolean);
- * // => false
- *
- * var users = [
- *   { 'user': 'barney', 'active': false },
- *   { 'user': 'fred',   'active': false }
- * ];
- *
- * // using the `_.matches` callback shorthand
- * _.every(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.every(users, 'active', false);
- * // => true
- *
- * // using the `_.property` callback shorthand
- * _.every(users, 'active');
- * // => false
- */
-function every(collection, predicate, thisArg) {
-  var func = isArray(collection) ? arrayEvery : baseEvery;
-  if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
-    predicate = undefined;
-  }
-  if (typeof predicate != 'function' || thisArg !== undefined) {
-    predicate = baseCallback(predicate, thisArg, 3);
-  }
-  return func(collection, predicate);
-}
-
-module.exports = every;
diff --git a/node_modules/lodash/collection/filter.js b/node_modules/lodash/collection/filter.js
deleted file mode 100644
index 7620aa7..0000000
--- a/node_modules/lodash/collection/filter.js
+++ /dev/null
@@ -1,61 +0,0 @@
-var arrayFilter = require('../internal/arrayFilter'),
-    baseCallback = require('../internal/baseCallback'),
-    baseFilter = require('../internal/baseFilter'),
-    isArray = require('../lang/isArray');
-
-/**
- * Iterates over elements of `collection`, returning an array of all elements
- * `predicate` returns truthy for. The predicate is bound to `thisArg` and
- * invoked with three arguments: (value, index|key, collection).
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @alias select
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {Array} Returns the new filtered array.
- * @example
- *
- * _.filter([4, 5, 6], function(n) {
- *   return n % 2 == 0;
- * });
- * // => [4, 6]
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36, 'active': true },
- *   { 'user': 'fred',   'age': 40, 'active': false }
- * ];
- *
- * // using the `_.matches` callback shorthand
- * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');
- * // => ['barney']
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.pluck(_.filter(users, 'active', false), 'user');
- * // => ['fred']
- *
- * // using the `_.property` callback shorthand
- * _.pluck(_.filter(users, 'active'), 'user');
- * // => ['barney']
- */
-function filter(collection, predicate, thisArg) {
-  var func = isArray(collection) ? arrayFilter : baseFilter;
-  predicate = baseCallback(predicate, thisArg, 3);
-  return func(collection, predicate);
-}
-
-module.exports = filter;
diff --git a/node_modules/lodash/collection/find.js b/node_modules/lodash/collection/find.js
deleted file mode 100644
index 7358cfe..0000000
--- a/node_modules/lodash/collection/find.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var baseEach = require('../internal/baseEach'),
-    createFind = require('../internal/createFind');
-
-/**
- * Iterates over elements of `collection`, returning the first element
- * `predicate` returns truthy for. The predicate is bound to `thisArg` and
- * invoked with three arguments: (value, index|key, collection).
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @alias detect
- * @category Collection
- * @param {Array|Object|string} collection The collection to search.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'age': 36, 'active': true },
- *   { 'user': 'fred',    'age': 40, 'active': false },
- *   { 'user': 'pebbles', 'age': 1,  'active': true }
- * ];
- *
- * _.result(_.find(users, function(chr) {
- *   return chr.age < 40;
- * }), 'user');
- * // => 'barney'
- *
- * // using the `_.matches` callback shorthand
- * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');
- * // => 'pebbles'
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.result(_.find(users, 'active', false), 'user');
- * // => 'fred'
- *
- * // using the `_.property` callback shorthand
- * _.result(_.find(users, 'active'), 'user');
- * // => 'barney'
- */
-var find = createFind(baseEach);
-
-module.exports = find;
diff --git a/node_modules/lodash/collection/findLast.js b/node_modules/lodash/collection/findLast.js
deleted file mode 100644
index 75dbadc..0000000
--- a/node_modules/lodash/collection/findLast.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var baseEachRight = require('../internal/baseEachRight'),
-    createFind = require('../internal/createFind');
-
-/**
- * This method is like `_.find` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to search.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * _.findLast([1, 2, 3, 4], function(n) {
- *   return n % 2 == 1;
- * });
- * // => 3
- */
-var findLast = createFind(baseEachRight, true);
-
-module.exports = findLast;
diff --git a/node_modules/lodash/collection/findWhere.js b/node_modules/lodash/collection/findWhere.js
deleted file mode 100644
index 2d62065..0000000
--- a/node_modules/lodash/collection/findWhere.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseMatches = require('../internal/baseMatches'),
-    find = require('./find');
-
-/**
- * Performs a deep comparison between each element in `collection` and the
- * source object, returning the first element that has equivalent property
- * values.
- *
- * **Note:** This method supports comparing arrays, booleans, `Date` objects,
- * numbers, `Object` objects, regexes, and strings. Objects are compared by
- * their own, not inherited, enumerable properties. For comparing a single
- * own or inherited property value see `_.matchesProperty`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to search.
- * @param {Object} source The object of property values to match.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36, 'active': true },
- *   { 'user': 'fred',   'age': 40, 'active': false }
- * ];
- *
- * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user');
- * // => 'barney'
- *
- * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user');
- * // => 'fred'
- */
-function findWhere(collection, source) {
-  return find(collection, baseMatches(source));
-}
-
-module.exports = findWhere;
diff --git a/node_modules/lodash/collection/foldl.js b/node_modules/lodash/collection/foldl.js
deleted file mode 100644
index 26f53cf..0000000
--- a/node_modules/lodash/collection/foldl.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./reduce');
diff --git a/node_modules/lodash/collection/foldr.js b/node_modules/lodash/collection/foldr.js
deleted file mode 100644
index 8fb199e..0000000
--- a/node_modules/lodash/collection/foldr.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./reduceRight');
diff --git a/node_modules/lodash/collection/forEach.js b/node_modules/lodash/collection/forEach.js
deleted file mode 100644
index 05a8e21..0000000
--- a/node_modules/lodash/collection/forEach.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var arrayEach = require('../internal/arrayEach'),
-    baseEach = require('../internal/baseEach'),
-    createForEach = require('../internal/createForEach');
-
-/**
- * Iterates over elements of `collection` invoking `iteratee` for each element.
- * The `iteratee` is bound to `thisArg` and invoked with three arguments:
- * (value, index|key, collection). Iteratee functions may exit iteration early
- * by explicitly returning `false`.
- *
- * **Note:** As with other "Collections" methods, objects with a "length" property
- * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
- * may be used for object iteration.
- *
- * @static
- * @memberOf _
- * @alias each
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Array|Object|string} Returns `collection`.
- * @example
- *
- * _([1, 2]).forEach(function(n) {
- *   console.log(n);
- * }).value();
- * // => logs each value from left to right and returns the array
- *
- * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
- *   console.log(n, key);
- * });
- * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
- */
-var forEach = createForEach(arrayEach, baseEach);
-
-module.exports = forEach;
diff --git a/node_modules/lodash/collection/forEachRight.js b/node_modules/lodash/collection/forEachRight.js
deleted file mode 100644
index 3499711..0000000
--- a/node_modules/lodash/collection/forEachRight.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var arrayEachRight = require('../internal/arrayEachRight'),
-    baseEachRight = require('../internal/baseEachRight'),
-    createForEach = require('../internal/createForEach');
-
-/**
- * This method is like `_.forEach` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @alias eachRight
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Array|Object|string} Returns `collection`.
- * @example
- *
- * _([1, 2]).forEachRight(function(n) {
- *   console.log(n);
- * }).value();
- * // => logs each value from right to left and returns the array
- */
-var forEachRight = createForEach(arrayEachRight, baseEachRight);
-
-module.exports = forEachRight;
diff --git a/node_modules/lodash/collection/groupBy.js b/node_modules/lodash/collection/groupBy.js
deleted file mode 100644
index a925c89..0000000
--- a/node_modules/lodash/collection/groupBy.js
+++ /dev/null
@@ -1,59 +0,0 @@
-var createAggregator = require('../internal/createAggregator');
-
-/** Used for native method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` through `iteratee`. The corresponding value
- * of each key is an array of the elements responsible for generating the key.
- * The `iteratee` is bound to `thisArg` and invoked with three arguments:
- * (value, index|key, collection).
- *
- * If a property name is provided for `iteratee` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `iteratee` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * _.groupBy([4.2, 6.1, 6.4], function(n) {
- *   return Math.floor(n);
- * });
- * // => { '4': [4.2], '6': [6.1, 6.4] }
- *
- * _.groupBy([4.2, 6.1, 6.4], function(n) {
- *   return this.floor(n);
- * }, Math);
- * // => { '4': [4.2], '6': [6.1, 6.4] }
- *
- * // using the `_.property` callback shorthand
- * _.groupBy(['one', 'two', 'three'], 'length');
- * // => { '3': ['one', 'two'], '5': ['three'] }
- */
-var groupBy = createAggregator(function(result, value, key) {
-  if (hasOwnProperty.call(result, key)) {
-    result[key].push(value);
-  } else {
-    result[key] = [value];
-  }
-});
-
-module.exports = groupBy;
diff --git a/node_modules/lodash/collection/include.js b/node_modules/lodash/collection/include.js
deleted file mode 100644
index 594722a..0000000
--- a/node_modules/lodash/collection/include.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./includes');
diff --git a/node_modules/lodash/collection/includes.js b/node_modules/lodash/collection/includes.js
deleted file mode 100644
index 329486a..0000000
--- a/node_modules/lodash/collection/includes.js
+++ /dev/null
@@ -1,57 +0,0 @@
-var baseIndexOf = require('../internal/baseIndexOf'),
-    getLength = require('../internal/getLength'),
-    isArray = require('../lang/isArray'),
-    isIterateeCall = require('../internal/isIterateeCall'),
-    isLength = require('../internal/isLength'),
-    isString = require('../lang/isString'),
-    values = require('../object/values');
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Checks if `target` is in `collection` using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
- * for equality comparisons. If `fromIndex` is negative, it's used as the offset
- * from the end of `collection`.
- *
- * @static
- * @memberOf _
- * @alias contains, include
- * @category Collection
- * @param {Array|Object|string} collection The collection to search.
- * @param {*} target The value to search for.
- * @param {number} [fromIndex=0] The index to search from.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.
- * @returns {boolean} Returns `true` if a matching element is found, else `false`.
- * @example
- *
- * _.includes([1, 2, 3], 1);
- * // => true
- *
- * _.includes([1, 2, 3], 1, 2);
- * // => false
- *
- * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');
- * // => true
- *
- * _.includes('pebbles', 'eb');
- * // => true
- */
-function includes(collection, target, fromIndex, guard) {
-  var length = collection ? getLength(collection) : 0;
-  if (!isLength(length)) {
-    collection = values(collection);
-    length = collection.length;
-  }
-  if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) {
-    fromIndex = 0;
-  } else {
-    fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);
-  }
-  return (typeof collection == 'string' || !isArray(collection) && isString(collection))
-    ? (fromIndex <= length && collection.indexOf(target, fromIndex) > -1)
-    : (!!length && baseIndexOf(collection, target, fromIndex) > -1);
-}
-
-module.exports = includes;
diff --git a/node_modules/lodash/collection/indexBy.js b/node_modules/lodash/collection/indexBy.js
deleted file mode 100644
index 34a941e..0000000
--- a/node_modules/lodash/collection/indexBy.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var createAggregator = require('../internal/createAggregator');
-
-/**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` through `iteratee`. The corresponding value
- * of each key is the last element responsible for generating the key. The
- * iteratee function is bound to `thisArg` and invoked with three arguments:
- * (value, index|key, collection).
- *
- * If a property name is provided for `iteratee` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `iteratee` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * var keyData = [
- *   { 'dir': 'left', 'code': 97 },
- *   { 'dir': 'right', 'code': 100 }
- * ];
- *
- * _.indexBy(keyData, 'dir');
- * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
- *
- * _.indexBy(keyData, function(object) {
- *   return String.fromCharCode(object.code);
- * });
- * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
- *
- * _.indexBy(keyData, function(object) {
- *   return this.fromCharCode(object.code);
- * }, String);
- * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
- */
-var indexBy = createAggregator(function(result, value, key) {
-  result[key] = value;
-});
-
-module.exports = indexBy;
diff --git a/node_modules/lodash/collection/inject.js b/node_modules/lodash/collection/inject.js
deleted file mode 100644
index 26f53cf..0000000
--- a/node_modules/lodash/collection/inject.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./reduce');
diff --git a/node_modules/lodash/collection/invoke.js b/node_modules/lodash/collection/invoke.js
deleted file mode 100644
index 6e71721..0000000
--- a/node_modules/lodash/collection/invoke.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var baseEach = require('../internal/baseEach'),
-    invokePath = require('../internal/invokePath'),
-    isArrayLike = require('../internal/isArrayLike'),
-    isKey = require('../internal/isKey'),
-    restParam = require('../function/restParam');
-
-/**
- * Invokes the method at `path` of each element in `collection`, returning
- * an array of the results of each invoked method. Any additional arguments
- * are provided to each invoked method. If `methodName` is a function it's
- * invoked for, and `this` bound to, each element in `collection`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Array|Function|string} path The path of the method to invoke or
- *  the function invoked per iteration.
- * @param {...*} [args] The arguments to invoke the method with.
- * @returns {Array} Returns the array of results.
- * @example
- *
- * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');
- * // => [[1, 5, 7], [1, 2, 3]]
- *
- * _.invoke([123, 456], String.prototype.split, '');
- * // => [['1', '2', '3'], ['4', '5', '6']]
- */
-var invoke = restParam(function(collection, path, args) {
-  var index = -1,
-      isFunc = typeof path == 'function',
-      isProp = isKey(path),
-      result = isArrayLike(collection) ? Array(collection.length) : [];
-
-  baseEach(collection, function(value) {
-    var func = isFunc ? path : ((isProp && value != null) ? value[path] : undefined);
-    result[++index] = func ? func.apply(value, args) : invokePath(value, path, args);
-  });
-  return result;
-});
-
-module.exports = invoke;
diff --git a/node_modules/lodash/collection/map.js b/node_modules/lodash/collection/map.js
deleted file mode 100644
index 5381110..0000000
--- a/node_modules/lodash/collection/map.js
+++ /dev/null
@@ -1,68 +0,0 @@
-var arrayMap = require('../internal/arrayMap'),
-    baseCallback = require('../internal/baseCallback'),
-    baseMap = require('../internal/baseMap'),
-    isArray = require('../lang/isArray');
-
-/**
- * Creates an array of values by running each element in `collection` through
- * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
- * arguments: (value, index|key, collection).
- *
- * If a property name is provided for `iteratee` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `iteratee` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * Many lodash methods are guarded to work as iteratees for methods like
- * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
- *
- * The guarded methods are:
- * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
- * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
- * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
- * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
- * `sum`, `uniq`, and `words`
- *
- * @static
- * @memberOf _
- * @alias collect
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Array} Returns the new mapped array.
- * @example
- *
- * function timesThree(n) {
- *   return n * 3;
- * }
- *
- * _.map([1, 2], timesThree);
- * // => [3, 6]
- *
- * _.map({ 'a': 1, 'b': 2 }, timesThree);
- * // => [3, 6] (iteration order is not guaranteed)
- *
- * var users = [
- *   { 'user': 'barney' },
- *   { 'user': 'fred' }
- * ];
- *
- * // using the `_.property` callback shorthand
- * _.map(users, 'user');
- * // => ['barney', 'fred']
- */
-function map(collection, iteratee, thisArg) {
-  var func = isArray(collection) ? arrayMap : baseMap;
-  iteratee = baseCallback(iteratee, thisArg, 3);
-  return func(collection, iteratee);
-}
-
-module.exports = map;
diff --git a/node_modules/lodash/collection/max.js b/node_modules/lodash/collection/max.js
deleted file mode 100644
index bb1d213..0000000
--- a/node_modules/lodash/collection/max.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('../math/max');
diff --git a/node_modules/lodash/collection/min.js b/node_modules/lodash/collection/min.js
deleted file mode 100644
index eef13d0..0000000
--- a/node_modules/lodash/collection/min.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('../math/min');
diff --git a/node_modules/lodash/collection/partition.js b/node_modules/lodash/collection/partition.js
deleted file mode 100644
index ee35f27..0000000
--- a/node_modules/lodash/collection/partition.js
+++ /dev/null
@@ -1,66 +0,0 @@
-var createAggregator = require('../internal/createAggregator');
-
-/**
- * Creates an array of elements split into two groups, the first of which
- * contains elements `predicate` returns truthy for, while the second of which
- * contains elements `predicate` returns falsey for. The predicate is bound
- * to `thisArg` and invoked with three arguments: (value, index|key, collection).
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {Array} Returns the array of grouped elements.
- * @example
- *
- * _.partition([1, 2, 3], function(n) {
- *   return n % 2;
- * });
- * // => [[1, 3], [2]]
- *
- * _.partition([1.2, 2.3, 3.4], function(n) {
- *   return this.floor(n) % 2;
- * }, Math);
- * // => [[1.2, 3.4], [2.3]]
- *
- * var users = [
- *   { 'user': 'barney',  'age': 36, 'active': false },
- *   { 'user': 'fred',    'age': 40, 'active': true },
- *   { 'user': 'pebbles', 'age': 1,  'active': false }
- * ];
- *
- * var mapper = function(array) {
- *   return _.pluck(array, 'user');
- * };
- *
- * // using the `_.matches` callback shorthand
- * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper);
- * // => [['pebbles'], ['barney', 'fred']]
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.map(_.partition(users, 'active', false), mapper);
- * // => [['barney', 'pebbles'], ['fred']]
- *
- * // using the `_.property` callback shorthand
- * _.map(_.partition(users, 'active'), mapper);
- * // => [['fred'], ['barney', 'pebbles']]
- */
-var partition = createAggregator(function(result, value, key) {
-  result[key ? 0 : 1].push(value);
-}, function() { return [[], []]; });
-
-module.exports = partition;
diff --git a/node_modules/lodash/collection/pluck.js b/node_modules/lodash/collection/pluck.js
deleted file mode 100644
index 5ee1ec8..0000000
--- a/node_modules/lodash/collection/pluck.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var map = require('./map'),
-    property = require('../utility/property');
-
-/**
- * Gets the property value of `path` from all elements in `collection`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Array|string} path The path of the property to pluck.
- * @returns {Array} Returns the property values.
- * @example
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36 },
- *   { 'user': 'fred',   'age': 40 }
- * ];
- *
- * _.pluck(users, 'user');
- * // => ['barney', 'fred']
- *
- * var userIndex = _.indexBy(users, 'user');
- * _.pluck(userIndex, 'age');
- * // => [36, 40] (iteration order is not guaranteed)
- */
-function pluck(collection, path) {
-  return map(collection, property(path));
-}
-
-module.exports = pluck;
diff --git a/node_modules/lodash/collection/reduce.js b/node_modules/lodash/collection/reduce.js
deleted file mode 100644
index 5d5e8c9..0000000
--- a/node_modules/lodash/collection/reduce.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var arrayReduce = require('../internal/arrayReduce'),
-    baseEach = require('../internal/baseEach'),
-    createReduce = require('../internal/createReduce');
-
-/**
- * Reduces `collection` to a value which is the accumulated result of running
- * each element in `collection` through `iteratee`, where each successive
- * invocation is supplied the return value of the previous. If `accumulator`
- * is not provided the first element of `collection` is used as the initial
- * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
- * (accumulator, value, index|key, collection).
- *
- * Many lodash methods are guarded to work as iteratees for methods like
- * `_.reduce`, `_.reduceRight`, and `_.transform`.
- *
- * The guarded methods are:
- * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `sortByAll`,
- * and `sortByOrder`
- *
- * @static
- * @memberOf _
- * @alias foldl, inject
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {*} Returns the accumulated value.
- * @example
- *
- * _.reduce([1, 2], function(total, n) {
- *   return total + n;
- * });
- * // => 3
- *
- * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
- *   result[key] = n * 3;
- *   return result;
- * }, {});
- * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
- */
-var reduce = createReduce(arrayReduce, baseEach);
-
-module.exports = reduce;
diff --git a/node_modules/lodash/collection/reduceRight.js b/node_modules/lodash/collection/reduceRight.js
deleted file mode 100644
index 5a5753b..0000000
--- a/node_modules/lodash/collection/reduceRight.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var arrayReduceRight = require('../internal/arrayReduceRight'),
-    baseEachRight = require('../internal/baseEachRight'),
-    createReduce = require('../internal/createReduce');
-
-/**
- * This method is like `_.reduce` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @alias foldr
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {*} Returns the accumulated value.
- * @example
- *
- * var array = [[0, 1], [2, 3], [4, 5]];
- *
- * _.reduceRight(array, function(flattened, other) {
- *   return flattened.concat(other);
- * }, []);
- * // => [4, 5, 2, 3, 0, 1]
- */
-var reduceRight = createReduce(arrayReduceRight, baseEachRight);
-
-module.exports = reduceRight;
diff --git a/node_modules/lodash/collection/reject.js b/node_modules/lodash/collection/reject.js
deleted file mode 100644
index 5592453..0000000
--- a/node_modules/lodash/collection/reject.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var arrayFilter = require('../internal/arrayFilter'),
-    baseCallback = require('../internal/baseCallback'),
-    baseFilter = require('../internal/baseFilter'),
-    isArray = require('../lang/isArray');
-
-/**
- * The opposite of `_.filter`; this method returns the elements of `collection`
- * that `predicate` does **not** return truthy for.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {Array} Returns the new filtered array.
- * @example
- *
- * _.reject([1, 2, 3, 4], function(n) {
- *   return n % 2 == 0;
- * });
- * // => [1, 3]
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36, 'active': false },
- *   { 'user': 'fred',   'age': 40, 'active': true }
- * ];
- *
- * // using the `_.matches` callback shorthand
- * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');
- * // => ['barney']
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.pluck(_.reject(users, 'active', false), 'user');
- * // => ['fred']
- *
- * // using the `_.property` callback shorthand
- * _.pluck(_.reject(users, 'active'), 'user');
- * // => ['barney']
- */
-function reject(collection, predicate, thisArg) {
-  var func = isArray(collection) ? arrayFilter : baseFilter;
-  predicate = baseCallback(predicate, thisArg, 3);
-  return func(collection, function(value, index, collection) {
-    return !predicate(value, index, collection);
-  });
-}
-
-module.exports = reject;
diff --git a/node_modules/lodash/collection/sample.js b/node_modules/lodash/collection/sample.js
deleted file mode 100644
index 8e01533..0000000
--- a/node_modules/lodash/collection/sample.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var baseRandom = require('../internal/baseRandom'),
-    isIterateeCall = require('../internal/isIterateeCall'),
-    toArray = require('../lang/toArray'),
-    toIterable = require('../internal/toIterable');
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Gets a random element or `n` random elements from a collection.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to sample.
- * @param {number} [n] The number of elements to sample.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
- * @returns {*} Returns the random sample(s).
- * @example
- *
- * _.sample([1, 2, 3, 4]);
- * // => 2
- *
- * _.sample([1, 2, 3, 4], 2);
- * // => [3, 1]
- */
-function sample(collection, n, guard) {
-  if (guard ? isIterateeCall(collection, n, guard) : n == null) {
-    collection = toIterable(collection);
-    var length = collection.length;
-    return length > 0 ? collection[baseRandom(0, length - 1)] : undefined;
-  }
-  var index = -1,
-      result = toArray(collection),
-      length = result.length,
-      lastIndex = length - 1;
-
-  n = nativeMin(n < 0 ? 0 : (+n || 0), length);
-  while (++index < n) {
-    var rand = baseRandom(index, lastIndex),
-        value = result[rand];
-
-    result[rand] = result[index];
-    result[index] = value;
-  }
-  result.length = n;
-  return result;
-}
-
-module.exports = sample;
diff --git a/node_modules/lodash/collection/select.js b/node_modules/lodash/collection/select.js
deleted file mode 100644
index ade80f6..0000000
--- a/node_modules/lodash/collection/select.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./filter');
diff --git a/node_modules/lodash/collection/shuffle.js b/node_modules/lodash/collection/shuffle.js
deleted file mode 100644
index 949689c..0000000
--- a/node_modules/lodash/collection/shuffle.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var sample = require('./sample');
-
-/** Used as references for `-Infinity` and `Infinity`. */
-var POSITIVE_INFINITY = Number.POSITIVE_INFINITY;
-
-/**
- * Creates an array of shuffled values, using a version of the
- * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to shuffle.
- * @returns {Array} Returns the new shuffled array.
- * @example
- *
- * _.shuffle([1, 2, 3, 4]);
- * // => [4, 1, 3, 2]
- */
-function shuffle(collection) {
-  return sample(collection, POSITIVE_INFINITY);
-}
-
-module.exports = shuffle;
diff --git a/node_modules/lodash/collection/size.js b/node_modules/lodash/collection/size.js
deleted file mode 100644
index 78dcf4c..0000000
--- a/node_modules/lodash/collection/size.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var getLength = require('../internal/getLength'),
-    isLength = require('../internal/isLength'),
-    keys = require('../object/keys');
-
-/**
- * Gets the size of `collection` by returning its length for array-like
- * values or the number of own enumerable properties for objects.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @returns {number} Returns the size of `collection`.
- * @example
- *
- * _.size([1, 2, 3]);
- * // => 3
- *
- * _.size({ 'a': 1, 'b': 2 });
- * // => 2
- *
- * _.size('pebbles');
- * // => 7
- */
-function size(collection) {
-  var length = collection ? getLength(collection) : 0;
-  return isLength(length) ? length : keys(collection).length;
-}
-
-module.exports = size;
diff --git a/node_modules/lodash/collection/some.js b/node_modules/lodash/collection/some.js
deleted file mode 100644
index d0b09a4..0000000
--- a/node_modules/lodash/collection/some.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var arraySome = require('../internal/arraySome'),
-    baseCallback = require('../internal/baseCallback'),
-    baseSome = require('../internal/baseSome'),
-    isArray = require('../lang/isArray'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * Checks if `predicate` returns truthy for **any** element of `collection`.
- * The function returns as soon as it finds a passing value and does not iterate
- * over the entire collection. The predicate is bound to `thisArg` and invoked
- * with three arguments: (value, index|key, collection).
- *
- * If a property name is provided for `predicate` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `predicate` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @alias any
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [predicate=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `predicate`.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- *  else `false`.
- * @example
- *
- * _.some([null, 0, 'yes', false], Boolean);
- * // => true
- *
- * var users = [
- *   { 'user': 'barney', 'active': true },
- *   { 'user': 'fred',   'active': false }
- * ];
- *
- * // using the `_.matches` callback shorthand
- * _.some(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // using the `_.matchesProperty` callback shorthand
- * _.some(users, 'active', false);
- * // => true
- *
- * // using the `_.property` callback shorthand
- * _.some(users, 'active');
- * // => true
- */
-function some(collection, predicate, thisArg) {
-  var func = isArray(collection) ? arraySome : baseSome;
-  if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
-    predicate = undefined;
-  }
-  if (typeof predicate != 'function' || thisArg !== undefined) {
-    predicate = baseCallback(predicate, thisArg, 3);
-  }
-  return func(collection, predicate);
-}
-
-module.exports = some;
diff --git a/node_modules/lodash/collection/sortBy.js b/node_modules/lodash/collection/sortBy.js
deleted file mode 100644
index 4401c77..0000000
--- a/node_modules/lodash/collection/sortBy.js
+++ /dev/null
@@ -1,71 +0,0 @@
-var baseCallback = require('../internal/baseCallback'),
-    baseMap = require('../internal/baseMap'),
-    baseSortBy = require('../internal/baseSortBy'),
-    compareAscending = require('../internal/compareAscending'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * Creates an array of elements, sorted in ascending order by the results of
- * running each element in a collection through `iteratee`. This method performs
- * a stable sort, that is, it preserves the original sort order of equal elements.
- * The `iteratee` is bound to `thisArg` and invoked with three arguments:
- * (value, index|key, collection).
- *
- * If a property name is provided for `iteratee` the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
- * style callback returns `true` for elements that have a matching property
- * value, else `false`.
- *
- * If an object is provided for `iteratee` the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
- *  per iteration.
- * @param {*} [thisArg] The `this` binding of `iteratee`.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * _.sortBy([1, 2, 3], function(n) {
- *   return Math.sin(n);
- * });
- * // => [3, 1, 2]
- *
- * _.sortBy([1, 2, 3], function(n) {
- *   return this.sin(n);
- * }, Math);
- * // => [3, 1, 2]
- *
- * var users = [
- *   { 'user': 'fred' },
- *   { 'user': 'pebbles' },
- *   { 'user': 'barney' }
- * ];
- *
- * // using the `_.property` callback shorthand
- * _.pluck(_.sortBy(users, 'user'), 'user');
- * // => ['barney', 'fred', 'pebbles']
- */
-function sortBy(collection, iteratee, thisArg) {
-  if (collection == null) {
-    return [];
-  }
-  if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {
-    iteratee = undefined;
-  }
-  var index = -1;
-  iteratee = baseCallback(iteratee, thisArg, 3);
-
-  var result = baseMap(collection, function(value, key, collection) {
-    return { 'criteria': iteratee(value, key, collection), 'index': ++index, 'value': value };
-  });
-  return baseSortBy(result, compareAscending);
-}
-
-module.exports = sortBy;
diff --git a/node_modules/lodash/collection/sortByAll.js b/node_modules/lodash/collection/sortByAll.js
deleted file mode 100644
index 4766c20..0000000
--- a/node_modules/lodash/collection/sortByAll.js
+++ /dev/null
@@ -1,52 +0,0 @@
-var baseFlatten = require('../internal/baseFlatten'),
-    baseSortByOrder = require('../internal/baseSortByOrder'),
-    isIterateeCall = require('../internal/isIterateeCall'),
-    restParam = require('../function/restParam');
-
-/**
- * This method is like `_.sortBy` except that it can sort by multiple iteratees
- * or property names.
- *
- * If a property name is provided for an iteratee the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If an object is provided for an iteratee the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {...(Function|Function[]|Object|Object[]|string|string[])} iteratees
- *  The iteratees to sort by, specified as individual values or arrays of values.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- *   { 'user': 'fred',   'age': 48 },
- *   { 'user': 'barney', 'age': 36 },
- *   { 'user': 'fred',   'age': 42 },
- *   { 'user': 'barney', 'age': 34 }
- * ];
- *
- * _.map(_.sortByAll(users, ['user', 'age']), _.values);
- * // => [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]]
- *
- * _.map(_.sortByAll(users, 'user', function(chr) {
- *   return Math.floor(chr.age / 10);
- * }), _.values);
- * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
- */
-var sortByAll = restParam(function(collection, iteratees) {
-  if (collection == null) {
-    return [];
-  }
-  var guard = iteratees[2];
-  if (guard && isIterateeCall(iteratees[0], iteratees[1], guard)) {
-    iteratees.length = 1;
-  }
-  return baseSortByOrder(collection, baseFlatten(iteratees), []);
-});
-
-module.exports = sortByAll;
diff --git a/node_modules/lodash/collection/sortByOrder.js b/node_modules/lodash/collection/sortByOrder.js
deleted file mode 100644
index 8b4fc19..0000000
--- a/node_modules/lodash/collection/sortByOrder.js
+++ /dev/null
@@ -1,55 +0,0 @@
-var baseSortByOrder = require('../internal/baseSortByOrder'),
-    isArray = require('../lang/isArray'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/**
- * This method is like `_.sortByAll` except that it allows specifying the
- * sort orders of the iteratees to sort by. If `orders` is unspecified, all
- * values are sorted in ascending order. Otherwise, a value is sorted in
- * ascending order if its corresponding order is "asc", and descending if "desc".
- *
- * If a property name is provided for an iteratee the created `_.property`
- * style callback returns the property value of the given element.
- *
- * If an object is provided for an iteratee the created `_.matches` style
- * callback returns `true` for elements that have the properties of the given
- * object, else `false`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
- * @param {boolean[]} [orders] The sort orders of `iteratees`.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- *   { 'user': 'fred',   'age': 48 },
- *   { 'user': 'barney', 'age': 34 },
- *   { 'user': 'fred',   'age': 42 },
- *   { 'user': 'barney', 'age': 36 }
- * ];
- *
- * // sort by `user` in ascending order and by `age` in descending order
- * _.map(_.sortByOrder(users, ['user', 'age'], ['asc', 'desc']), _.values);
- * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
- */
-function sortByOrder(collection, iteratees, orders, guard) {
-  if (collection == null) {
-    return [];
-  }
-  if (guard && isIterateeCall(iteratees, orders, guard)) {
-    orders = undefined;
-  }
-  if (!isArray(iteratees)) {
-    iteratees = iteratees == null ? [] : [iteratees];
-  }
-  if (!isArray(orders)) {
-    orders = orders == null ? [] : [orders];
-  }
-  return baseSortByOrder(collection, iteratees, orders);
-}
-
-module.exports = sortByOrder;
diff --git a/node_modules/lodash/collection/sum.js b/node_modules/lodash/collection/sum.js
deleted file mode 100644
index a2e9380..0000000
--- a/node_modules/lodash/collection/sum.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('../math/sum');
diff --git a/node_modules/lodash/collection/where.js b/node_modules/lodash/collection/where.js
deleted file mode 100644
index f603bf8..0000000
--- a/node_modules/lodash/collection/where.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var baseMatches = require('../internal/baseMatches'),
-    filter = require('./filter');
-
-/**
- * Performs a deep comparison between each element in `collection` and the
- * source object, returning an array of all elements that have equivalent
- * property values.
- *
- * **Note:** This method supports comparing arrays, booleans, `Date` objects,
- * numbers, `Object` objects, regexes, and strings. Objects are compared by
- * their own, not inherited, enumerable properties. For comparing a single
- * own or inherited property value see `_.matchesProperty`.
- *
- * @static
- * @memberOf _
- * @category Collection
- * @param {Array|Object|string} collection The collection to search.
- * @param {Object} source The object of property values to match.
- * @returns {Array} Returns the new filtered array.
- * @example
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] },
- *   { 'user': 'fred',   'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] }
- * ];
- *
- * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user');
- * // => ['barney']
- *
- * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user');
- * // => ['fred']
- */
-function where(collection, source) {
-  return filter(collection, baseMatches(source));
-}
-
-module.exports = where;
diff --git a/node_modules/lodash/date.js b/node_modules/lodash/date.js
deleted file mode 100644
index 195366e..0000000
--- a/node_modules/lodash/date.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
-  'now': require('./date/now')
-};
diff --git a/node_modules/lodash/date/now.js b/node_modules/lodash/date/now.js
deleted file mode 100644
index ffe3060..0000000
--- a/node_modules/lodash/date/now.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var getNative = require('../internal/getNative');
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeNow = getNative(Date, 'now');
-
-/**
- * Gets the number of milliseconds that have elapsed since the Unix epoch
- * (1 January 1970 00:00:00 UTC).
- *
- * @static
- * @memberOf _
- * @category Date
- * @example
- *
- * _.defer(function(stamp) {
- *   console.log(_.now() - stamp);
- * }, _.now());
- * // => logs the number of milliseconds it took for the deferred function to be invoked
- */
-var now = nativeNow || function() {
-  return new Date().getTime();
-};
-
-module.exports = now;
diff --git a/node_modules/lodash/function.js b/node_modules/lodash/function.js
deleted file mode 100644
index 71f8ebe..0000000
--- a/node_modules/lodash/function.js
+++ /dev/null
@@ -1,28 +0,0 @@
-module.exports = {
-  'after': require('./function/after'),
-  'ary': require('./function/ary'),
-  'backflow': require('./function/backflow'),
-  'before': require('./function/before'),
-  'bind': require('./function/bind'),
-  'bindAll': require('./function/bindAll'),
-  'bindKey': require('./function/bindKey'),
-  'compose': require('./function/compose'),
-  'curry': require('./function/curry'),
-  'curryRight': require('./function/curryRight'),
-  'debounce': require('./function/debounce'),
-  'defer': require('./function/defer'),
-  'delay': require('./function/delay'),
-  'flow': require('./function/flow'),
-  'flowRight': require('./function/flowRight'),
-  'memoize': require('./function/memoize'),
-  'modArgs': require('./function/modArgs'),
-  'negate': require('./function/negate'),
-  'once': require('./function/once'),
-  'partial': require('./function/partial'),
-  'partialRight': require('./function/partialRight'),
-  'rearg': require('./function/rearg'),
-  'restParam': require('./function/restParam'),
-  'spread': require('./function/spread'),
-  'throttle': require('./function/throttle'),
-  'wrap': require('./function/wrap')
-};
diff --git a/node_modules/lodash/function/after.js b/node_modules/lodash/function/after.js
deleted file mode 100644
index 96a51fd..0000000
--- a/node_modules/lodash/function/after.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeIsFinite = global.isFinite;
-
-/**
- * The opposite of `_.before`; this method creates a function that invokes
- * `func` once it's called `n` or more times.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {number} n The number of calls before `func` is invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var saves = ['profile', 'settings'];
- *
- * var done = _.after(saves.length, function() {
- *   console.log('done saving!');
- * });
- *
- * _.forEach(saves, function(type) {
- *   asyncSave({ 'type': type, 'complete': done });
- * });
- * // => logs 'done saving!' after the two async saves have completed
- */
-function after(n, func) {
-  if (typeof func != 'function') {
-    if (typeof n == 'function') {
-      var temp = n;
-      n = func;
-      func = temp;
-    } else {
-      throw new TypeError(FUNC_ERROR_TEXT);
-    }
-  }
-  n = nativeIsFinite(n = +n) ? n : 0;
-  return function() {
-    if (--n < 1) {
-      return func.apply(this, arguments);
-    }
-  };
-}
-
-module.exports = after;
diff --git a/node_modules/lodash/function/ary.js b/node_modules/lodash/function/ary.js
deleted file mode 100644
index 53a6913..0000000
--- a/node_modules/lodash/function/ary.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var createWrapper = require('../internal/createWrapper'),
-    isIterateeCall = require('../internal/isIterateeCall');
-
-/** Used to compose bitmasks for wrapper metadata. */
-var ARY_FLAG = 128;
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Creates a function that accepts up to `n` arguments ignoring any
- * additional arguments.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to cap arguments for.
- * @param {number} [n=func.length] The arity cap.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
- * @returns {Function} Returns the new function.
- * @example
- *
- * _.map(['6', '8', '10'], _.ary(parseInt, 1));
- * // => [6, 8, 10]
- */
-function ary(func, n, guard) {
-  if (guard && isIterateeCall(func, n, guard)) {
-    n = undefined;
-  }
-  n = (func && n == null) ? func.length : nativeMax(+n || 0, 0);
-  return createWrapper(func, ARY_FLAG, undefined, undefined, undefined, undefined, n);
-}
-
-module.exports = ary;
diff --git a/node_modules/lodash/function/backflow.js b/node_modules/lodash/function/backflow.js
deleted file mode 100644
index 1954e94..0000000
--- a/node_modules/lodash/function/backflow.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./flowRight');
diff --git a/node_modules/lodash/function/before.js b/node_modules/lodash/function/before.js
deleted file mode 100644
index 3d94216..0000000
--- a/node_modules/lodash/function/before.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that invokes `func`, with the `this` binding and arguments
- * of the created function, while it's called less than `n` times. Subsequent
- * calls to the created function return the result of the last `func` invocation.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {number} n The number of calls at which `func` is no longer invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * jQuery('#add').on('click', _.before(5, addContactToList));
- * // => allows adding up to 4 contacts to the list
- */
-function before(n, func) {
-  var result;
-  if (typeof func != 'function') {
-    if (typeof n == 'function') {
-      var temp = n;
-      n = func;
-      func = temp;
-    } else {
-      throw new TypeError(FUNC_ERROR_TEXT);
-    }
-  }
-  return function() {
-    if (--n > 0) {
-      result = func.apply(this, arguments);
-    }
-    if (n <= 1) {
-      func = undefined;
-    }
-    return result;
-  };
-}
-
-module.exports = before;
diff --git a/node_modules/lodash/function/bind.js b/node_modules/lodash/function/bind.js
deleted file mode 100644
index 0de126a..0000000
--- a/node_modules/lodash/function/bind.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var createWrapper = require('../internal/createWrapper'),
-    replaceHolders = require('../internal/replaceHolders'),
-    restParam = require('./restParam');
-
-/** Used to compose bitmasks for wrapper metadata. */
-var BIND_FLAG = 1,
-    PARTIAL_FLAG = 32;
-
-/**
- * Creates a function that invokes `func` with the `this` binding of `thisArg`
- * and prepends any additional `_.bind` arguments to those provided to the
- * bound function.
- *
- * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
- * may be used as a placeholder for partially applied arguments.
- *
- * **Note:** Unlike native `Function#bind` this method does not set the "length"
- * property of bound functions.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to bind.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new bound function.
- * @example
- *
- * var greet = function(greeting, punctuation) {
- *   return greeting + ' ' + this.user + punctuation;
- * };
- *
- * var object = { 'user': 'fred' };
- *
- * var bound = _.bind(greet, object, 'hi');
- * bound('!');
- * // => 'hi fred!'
- *
- * // using placeholders
- * var bound = _.bind(greet, object, _, '!');
- * bound('hi');
- * // => 'hi fred!'
- */
-var bind = restParam(function(func, thisArg, partials) {
-  var bitmask = BIND_FLAG;
-  if (partials.length) {
-    var holders = replaceHolders(partials, bind.placeholder);
-    bitmask |= PARTIAL_FLAG;
-  }
-  return createWrapper(func, bitmask, thisArg, partials, holders);
-});
-
-// Assign default placeholders.
-bind.placeholder = {};
-
-module.exports = bind;
diff --git a/node_modules/lodash/function/bindAll.js b/node_modules/lodash/function/bindAll.js
deleted file mode 100644
index a09e948..0000000
--- a/node_modules/lodash/function/bindAll.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var baseFlatten = require('../internal/baseFlatten'),
-    createWrapper = require('../internal/createWrapper'),
-    functions = require('../object/functions'),
-    restParam = require('./restParam');
-
-/** Used to compose bitmasks for wrapper metadata. */
-var BIND_FLAG = 1;
-
-/**
- * Binds methods of an object to the object itself, overwriting the existing
- * method. Method names may be specified as individual arguments or as arrays
- * of method names. If no method names are provided all enumerable function
- * properties, own and inherited, of `object` are bound.
- *
- * **Note:** This method does not set the "length" property of bound functions.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Object} object The object to bind and assign the bound methods to.
- * @param {...(string|string[])} [methodNames] The object method names to bind,
- *  specified as individual method names or arrays of method names.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var view = {
- *   'label': 'docs',
- *   'onClick': function() {
- *     console.log('clicked ' + this.label);
- *   }
- * };
- *
- * _.bindAll(view);
- * jQuery('#docs').on('click', view.onClick);
- * // => logs 'clicked docs' when the element is clicked
- */
-var bindAll = restParam(function(object, methodNames) {
-  methodNames = methodNames.length ? baseFlatten(methodNames) : functions(object);
-
-  var index = -1,
-      length = methodNames.length;
-
-  while (++index < length) {
-    var key = methodNames[index];
-    object[key] = createWrapper(object[key], BIND_FLAG, object);
-  }
-  return object;
-});
-
-module.exports = bindAll;
diff --git a/node_modules/lodash/function/bindKey.js b/node_modules/lodash/function/bindKey.js
deleted file mode 100644
index b787fe7..0000000
--- a/node_modules/lodash/function/bindKey.js
+++ /dev/null
@@ -1,66 +0,0 @@
-var createWrapper = require('../internal/createWrapper'),
-    replaceHolders = require('../internal/replaceHolders'),
-    restParam = require('./restParam');
-
-/** Used to compose bitmasks for wrapper metadata. */
-var BIND_FLAG = 1,
-    BIND_KEY_FLAG = 2,
-    PARTIAL_FLAG = 32;
-
-/**
- * Creates a function that invokes the method at `object[key]` and prepends
- * any additional `_.bindKey` arguments to those provided to the bound function.
- *
- * This method differs from `_.bind` by allowing bound functions to reference
- * methods that may be redefined or don't yet exist.
- * See [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
- * for more details.
- *
- * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Object} object The object the method belongs to.
- * @param {string} key The key of the method.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new bound function.
- * @example
- *
- * var object = {
- *   'user': 'fred',
- *   'greet': function(greeting, punctuation) {
- *     return greeting + ' ' + this.user + punctuation;
- *   }
- * };
- *
- * var bound = _.bindKey(object, 'greet', 'hi');
- * bound('!');
- * // => 'hi fred!'
- *
- * object.greet = function(greeting, punctuation) {
- *   return greeting + 'ya ' + this.user + punctuation;
- * };
- *
- * bound('!');
- * // => 'hiya fred!'
- *
- * // using placeholders
- * var bound = _.bindKey(object, 'greet', _, '!');
- * bound('hi');
- * // => 'hiya fred!'
- */
-var bindKey = restParam(function(object, key, partials) {
-  var bitmask = BIND_FLAG | BIND_KEY_FLAG;
-  if (partials.length) {
-    var holders = replaceHolders(partials, bindKey.placeholder);
-    bitmask |= PARTIAL_FLAG;
-  }
-  return createWrapper(key, bitmask, object, partials, holders);
-});
-
-// Assign default placeholders.
-bindKey.placeholder = {};
-
-module.exports = bindKey;
diff --git a/node_modules/lodash/function/compose.js b/node_modules/lodash/function/compose.js
deleted file mode 100644
index 1954e94..0000000
--- a/node_modules/lodash/function/compose.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./flowRight');
diff --git a/node_modules/lodash/function/curry.js b/node_modules/lodash/function/curry.js
deleted file mode 100644
index b7db3fd..0000000
--- a/node_modules/lodash/function/curry.js
+++ /dev/null
@@ -1,51 +0,0 @@
-var createCurry = require('../internal/createCurry');
-
-/** Used to compose bitmasks for wrapper metadata. */
-var CURRY_FLAG = 8;
-
-/**
- * Creates a function that accepts one or more arguments of `func` that when
- * called either invokes `func` returning its result, if all `func` arguments
- * have been provided, or returns a function that accepts one or more of the
- * remaining `func` arguments, and so on. The arity of `func` may be specified
- * if `func.length` is not sufficient.
- *
- * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
- * may be used as a placeholder for provided arguments.
- *
- * **Note:** This method does not set the "length" property of curried functions.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to curry.
- * @param {number} [arity=func.length] The arity of `func`.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
- * @returns {Function} Returns the new curried function.
- * @example
- *
- * var abc = function(a, b, c) {
- *   return [a, b, c];
- * };
- *
- * var curried = _.curry(abc);
- *
- * curried(1)(2)(3);
- * // => [1, 2, 3]
- *
- * curried(1, 2)(3);
- * // => [1, 2, 3]
- *
- * curried(1, 2, 3);
- * // => [1, 2, 3]
- *
- * // using placeholders
- * curried(1)(_, 3)(2);
- * // => [1, 2, 3]
- */
-var curry = createCurry(CURRY_FLAG);
-
-// Assign default placeholders.
-curry.placeholder = {};
-
-module.exports = curry;
diff --git a/node_modules/lodash/function/curryRight.js b/node_modules/lodash/function/curryRight.js
deleted file mode 100644
index 11c5403..0000000
--- a/node_modules/lodash/function/curryRight.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var createCurry = require('../internal/createCurry');
-
-/** Used to compose bitmasks for wrapper metadata. */
-var CURRY_RIGHT_FLAG = 16;
-
-/**
- * This method is like `_.curry` except that arguments are applied to `func`
- * in the manner of `_.partialRight` instead of `_.partial`.
- *
- * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for provided arguments.
- *
- * **Note:** This method does not set the "length" property of curried functions.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to curry.
- * @param {number} [arity=func.length] The arity of `func`.
- * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
- * @returns {Function} Returns the new curried function.
- * @example
- *
- * var abc = function(a, b, c) {
- *   return [a, b, c];
- * };
- *
- * var curried = _.curryRight(abc);
- *
- * curried(3)(2)(1);
- * // => [1, 2, 3]
- *
- * curried(2, 3)(1);
- * // => [1, 2, 3]
- *
- * curried(1, 2, 3);
- * // => [1, 2, 3]
- *
- * // using placeholders
- * curried(3)(1, _)(2);
- * // => [1, 2, 3]
- */
-var curryRight = createCurry(CURRY_RIGHT_FLAG);
-
-// Assign default placeholders.
-curryRight.placeholder = {};
-
-module.exports = curryRight;
diff --git a/node_modules/lodash/function/debounce.js b/node_modules/lodash/function/debounce.js
deleted file mode 100644
index 163af90..0000000
--- a/node_modules/lodash/function/debounce.js
+++ /dev/null
@@ -1,181 +0,0 @@
-var isObject = require('../lang/isObject'),
-    now = require('../date/now');
-
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Creates a debounced function that delays invoking `func` until after `wait`
- * milliseconds have elapsed since the last time the debounced function was
- * invoked. The debounced function comes with a `cancel` method to cancel
- * delayed invocations. Provide an options object to indicate that `func`
- * should be invoked on the leading and/or trailing edge of the `wait` timeout.
- * Subsequent calls to the debounced function return the result of the last
- * `func` invocation.
- *
- * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
- * on the trailing edge of the timeout only if the the debounced function is
- * invoked more than once during the `wait` timeout.
- *
- * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
- * for details over the differences between `_.debounce` and `_.throttle`.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to debounce.
- * @param {number} [wait=0] The number of milliseconds to delay.
- * @param {Object} [options] The options object.
- * @param {boolean} [options.leading=false] Specify invoking on the leading
- *  edge of the timeout.
- * @param {number} [options.maxWait] The maximum time `func` is allowed to be
- *  delayed before it's invoked.
- * @param {boolean} [options.trailing=true] Specify invoking on the trailing
- *  edge of the timeout.
- * @returns {Function} Returns the new debounced function.
- * @example
- *
- * // avoid costly calculations while the window size is in flux
- * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
- *
- * // invoke `sendMail` when the click event is fired, debouncing subsequent calls
- * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {
- *   'leading': true,
- *   'trailing': false
- * }));
- *
- * // ensure `batchLog` is invoked once after 1 second of debounced calls
- * var source = new EventSource('/stream');
- * jQuery(source).on('message', _.debounce(batchLog, 250, {
- *   'maxWait': 1000
- * }));
- *
- * // cancel a debounced call
- * var todoChanges = _.debounce(batchLog, 1000);
- * Object.observe(models.todo, todoChanges);
- *
- * Object.observe(models, function(changes) {
- *   if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {
- *     todoChanges.cancel();
- *   }
- * }, ['delete']);
- *
- * // ...at some point `models.todo` is changed
- * models.todo.completed = true;
- *
- * // ...before 1 second has passed `models.todo` is deleted
- * // which cancels the debounced `todoChanges` call
- * delete models.todo;
- */
-function debounce(func, wait, options) {
-  var args,
-      maxTimeoutId,
-      result,
-      stamp,
-      thisArg,
-      timeoutId,
-      trailingCall,
-      lastCalled = 0,
-      maxWait = false,
-      trailing = true;
-
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  wait = wait < 0 ? 0 : (+wait || 0);
-  if (options === true) {
-    var leading = true;
-    trailing = false;
-  } else if (isObject(options)) {
-    leading = !!options.leading;
-    maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);
-    trailing = 'trailing' in options ? !!options.trailing : trailing;
-  }
-
-  function cancel() {
-    if (timeoutId) {
-      clearTimeout(timeoutId);
-    }
-    if (maxTimeoutId) {
-      clearTimeout(maxTimeoutId);
-    }
-    lastCalled = 0;
-    maxTimeoutId = timeoutId = trailingCall = undefined;
-  }
-
-  function complete(isCalled, id) {
-    if (id) {
-      clearTimeout(id);
-    }
-    maxTimeoutId = timeoutId = trailingCall = undefined;
-    if (isCalled) {
-      lastCalled = now();
-      result = func.apply(thisArg, args);
-      if (!timeoutId && !maxTimeoutId) {
-        args = thisArg = undefined;
-      }
-    }
-  }
-
-  function delayed() {
-    var remaining = wait - (now() - stamp);
-    if (remaining <= 0 || remaining > wait) {
-      complete(trailingCall, maxTimeoutId);
-    } else {
-      timeoutId = setTimeout(delayed, remaining);
-    }
-  }
-
-  function maxDelayed() {
-    complete(trailing, timeoutId);
-  }
-
-  function debounced() {
-    args = arguments;
-    stamp = now();
-    thisArg = this;
-    trailingCall = trailing && (timeoutId || !leading);
-
-    if (maxWait === false) {
-      var leadingCall = leading && !timeoutId;
-    } else {
-      if (!maxTimeoutId && !leading) {
-        lastCalled = stamp;
-      }
-      var remaining = maxWait - (stamp - lastCalled),
-          isCalled = remaining <= 0 || remaining > maxWait;
-
-      if (isCalled) {
-        if (maxTimeoutId) {
-          maxTimeoutId = clearTimeout(maxTimeoutId);
-        }
-        lastCalled = stamp;
-        result = func.apply(thisArg, args);
-      }
-      else if (!maxTimeoutId) {
-        maxTimeoutId = setTimeout(maxDelayed, remaining);
-      }
-    }
-    if (isCalled && timeoutId) {
-      timeoutId = clearTimeout(timeoutId);
-    }
-    else if (!timeoutId && wait !== maxWait) {
-      timeoutId = setTimeout(delayed, wait);
-    }
-    if (leadingCall) {
-      isCalled = true;
-      result = func.apply(thisArg, args);
-    }
-    if (isCalled && !timeoutId && !maxTimeoutId) {
-      args = thisArg = undefined;
-    }
-    return result;
-  }
-  debounced.cancel = cancel;
-  return debounced;
-}
-
-module.exports = debounce;
diff --git a/node_modules/lodash/function/defer.js b/node_modules/lodash/function/defer.js
deleted file mode 100644
index 3accbf9..0000000
--- a/node_modules/lodash/function/defer.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var baseDelay = require('../internal/baseDelay'),
-    restParam = require('./restParam');
-
-/**
- * Defers invoking the `func` until the current call stack has cleared. Any
- * additional arguments are provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to defer.
- * @param {...*} [args] The arguments to invoke the function with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.defer(function(text) {
- *   console.log(text);
- * }, 'deferred');
- * // logs 'deferred' after one or more milliseconds
- */
-var defer = restParam(function(func, args) {
-  return baseDelay(func, 1, args);
-});
-
-module.exports = defer;
diff --git a/node_modules/lodash/function/delay.js b/node_modules/lodash/function/delay.js
deleted file mode 100644
index d5eef27..0000000
--- a/node_modules/lodash/function/delay.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var baseDelay = require('../internal/baseDelay'),
-    restParam = require('./restParam');
-
-/**
- * Invokes `func` after `wait` milliseconds. Any additional arguments are
- * provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @param {...*} [args] The arguments to invoke the function with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.delay(function(text) {
- *   console.log(text);
- * }, 1000, 'later');
- * // => logs 'later' after one second
- */
-var delay = restParam(function(func, wait, args) {
-  return baseDelay(func, wait, args);
-});
-
-module.exports = delay;
diff --git a/node_modules/lodash/function/flow.js b/node_modules/lodash/function/flow.js
deleted file mode 100644
index a435a3d..0000000
--- a/node_modules/lodash/function/flow.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var createFlow = require('../internal/createFlow');
-
-/**
- * Creates a function that returns the result of invoking the provided
- * functions with the `this` binding of the created function, where each
- * successive invocation is supplied the return value of the previous.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {...Function} [funcs] Functions to invoke.
- * @returns {Function} Returns the new function.
- * @example
- *
- * function square(n) {
- *   return n * n;
- * }
- *
- * var addSquare = _.flow(_.add, square);
- * addSquare(1, 2);
- * // => 9
- */
-var flow = createFlow();
-
-module.exports = flow;
diff --git a/node_modules/lodash/function/flowRight.js b/node_modules/lodash/function/flowRight.js
deleted file mode 100644
index 23b9d76..0000000
--- a/node_modules/lodash/function/flowRight.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var createFlow = require('../internal/createFlow');
-
-/**
- * This method is like `_.flow` except that it creates a function that
- * invokes the provided functions from right to left.
- *
- * @static
- * @memberOf _
- * @alias backflow, compose
- * @category Function
- * @param {...Function} [funcs] Functions to invoke.
- * @returns {Function} Returns the new function.
- * @example
- *
- * function square(n) {
- *   return n * n;
- * }
- *
- * var addSquare = _.flowRight(square, _.add);
- * addSquare(1, 2);
- * // => 9
- */
-var flowRight = createFlow(true);
-
-module.exports = flowRight;
diff --git a/node_modules/lodash/function/memoize.js b/node_modules/lodash/function/memoize.js
deleted file mode 100644
index f3b8d69..0000000
--- a/node_modules/lodash/function/memoize.js
+++ /dev/null
@@ -1,80 +0,0 @@
-var MapCache = require('../internal/MapCache');
-
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is coerced to a string and used as the
- * cache key. The `func` is invoked with the `this` binding of the memoized
- * function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoizing function.
- * @example
- *
- * var upperCase = _.memoize(function(string) {
- *   return string.toUpperCase();
- * });
- *
- * upperCase('fred');
- * // => 'FRED'
- *
- * // modifying the result cache
- * upperCase.cache.set('fred', 'BARNEY');
- * upperCase('fred');
- * // => 'BARNEY'
- *
- * // replacing `_.memoize.Cache`
- * var object = { 'user': 'fred' };
- * var other = { 'user': 'barney' };
- * var identity = _.memoize(_.identity);
- *
- * identity(object);
- * // => { 'user': 'fred' }
- * identity(other);
- * // => { 'user': 'fred' }
- *
- * _.memoize.Cache = WeakMap;
- * var identity = _.memoize(_.identity);
- *
- * identity(object);
- * // => { 'user': 'fred' }
- * identity(other);
- * // => { 'user': 'barney' }
- */
-function memoize(func, resolver) {
-  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  var memoized = function() {
-    var args = arguments,
-        key = resolver ? resolver.apply(this, args) : args[0],
-        cache = memoized.cache;
-
-    if (cache.has(key)) {
-      return cache.get(key);
-    }
-    var result = func.apply(this, args);
-    memoized.cache = cache.set(key, result);
-    return result;
-  };
-  memoized.cache = new memoize.Cache;
-  return memoized;
-}
-
-// Assign cache to `_.memoize`.
-memoize.Cache = MapCache;
-
-module.exports = memoize;
diff --git a/node_modules/lodash/function/modArgs.js b/node_modules/lodash/function/modArgs.js
deleted file mode 100644
index 49b9b5e..0000000
--- a/node_modules/lodash/function/modArgs.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var arrayEvery = require('../internal/arrayEvery'),
-    baseFlatten = require('../internal/baseFlatten'),
-    baseIsFunction = require('../internal/baseIsFunction'),
-    restParam = require('./restParam');
-
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Creates a function that runs each argument through a corresponding
- * transform function.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to wrap.
- * @param {...(Function|Function[])} [transforms] The functions to transform
- * arguments, specified as individual functions or arrays of functions.
- * @returns {Function} Returns the new function.
- * @example
- *
- * function doubled(n) {
- *   return n * 2;
- * }
- *
- * function square(n) {
- *   return n * n;
- * }
- *
- * var modded = _.modArgs(function(x, y) {
- *   return [x, y];
- * }, square, doubled);
- *
- * modded(1, 2);
- * // => [1, 4]
- *
- * modded(5, 10);
- * // => [25, 20]
- */
-var modArgs = restParam(function(func, transforms) {
-  transforms = baseFlatten(transforms);
-  if (typeof func != 'function' || !arrayEvery(transforms, baseIsFunction)) {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  var length = transforms.length;
-  return restParam(function(args) {
-    var index = nativeMin(args.length, length);
-    while (index--) {
-      args[index] = transforms[index](args[index]);
-    }
-    return func.apply(this, args);
-  });
-});
-
-module.exports = modArgs;
diff --git a/node_modules/lodash/function/negate.js b/node_modules/lodash/function/negate.js
deleted file mode 100644
index 8247939..0000000
--- a/node_modules/lodash/function/negate.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that negates the result of the predicate `func`. The
- * `func` predicate is invoked with the `this` binding and arguments of the
- * created function.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} predicate The predicate to negate.
- * @returns {Function} Returns the new function.
- * @example
- *
- * function isEven(n) {
- *   return n % 2 == 0;
- * }
- *
- * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
- * // => [1, 3, 5]
- */
-function negate(predicate) {
-  if (typeof predicate != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  return function() {
-    return !predicate.apply(this, arguments);
-  };
-}
-
-module.exports = negate;
diff --git a/node_modules/lodash/function/once.js b/node_modules/lodash/function/once.js
deleted file mode 100644
index 0b5bd85..0000000
--- a/node_modules/lodash/function/once.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var before = require('./before');
-
-/**
- * Creates a function that is restricted to invoking `func` once. Repeat calls
- * to the function return the value of the first call. The `func` is invoked
- * with the `this` binding and arguments of the created function.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var initialize = _.once(createApplication);
- * initialize();
- * initialize();
- * // `initialize` invokes `createApplication` once
- */
-function once(func) {
-  return before(2, func);
-}
-
-module.exports = once;
diff --git a/node_modules/lodash/function/partial.js b/node_modules/lodash/function/partial.js
deleted file mode 100644
index fb1d04f..0000000
--- a/node_modules/lodash/function/partial.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var createPartial = require('../internal/createPartial');
-
-/** Used to compose bitmasks for wrapper metadata. */
-var PARTIAL_FLAG = 32;
-
-/**
- * Creates a function that invokes `func` with `partial` arguments prepended
- * to those provided to the new function. This method is like `_.bind` except
- * it does **not** alter the `this` binding.
- *
- * The `_.partial.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * **Note:** This method does not set the "length" property of partially
- * applied functions.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to partially apply arguments to.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new partially applied function.
- * @example
- *
- * var greet = function(greeting, name) {
- *   return greeting + ' ' + name;
- * };
- *
- * var sayHelloTo = _.partial(greet, 'hello');
- * sayHelloTo('fred');
- * // => 'hello fred'
- *
- * // using placeholders
- * var greetFred = _.partial(greet, _, 'fred');
- * greetFred('hi');
- * // => 'hi fred'
- */
-var partial = createPartial(PARTIAL_FLAG);
-
-// Assign default placeholders.
-partial.placeholder = {};
-
-module.exports = partial;
diff --git a/node_modules/lodash/function/partialRight.js b/node_modules/lodash/function/partialRight.js
deleted file mode 100644
index 634e6a4..0000000
--- a/node_modules/lodash/function/partialRight.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var createPartial = require('../internal/createPartial');
-
-/** Used to compose bitmasks for wrapper metadata. */
-var PARTIAL_RIGHT_FLAG = 64;
-
-/**
- * This method is like `_.partial` except that partially applied arguments
- * are appended to those provided to the new function.
- *
- * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * **Note:** This method does not set the "length" property of partially
- * applied functions.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to partially apply arguments to.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new partially applied function.
- * @example
- *
- * var greet = function(greeting, name) {
- *   return greeting + ' ' + name;
- * };
- *
- * var greetFred = _.partialRight(greet, 'fred');
- * greetFred('hi');
- * // => 'hi fred'
- *
- * // using placeholders
- * var sayHelloTo = _.partialRight(greet, 'hello', _);
- * sayHelloTo('fred');
- * // => 'hello fred'
- */
-var partialRight = createPartial(PARTIAL_RIGHT_FLAG);
-
-// Assign default placeholders.
-partialRight.placeholder = {};
-
-module.exports = partialRight;
diff --git a/node_modules/lodash/function/rearg.js b/node_modules/lodash/function/rearg.js
deleted file mode 100644
index f2bd9c4..0000000
--- a/node_modules/lodash/function/rearg.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var baseFlatten = require('../internal/baseFlatten'),
-    createWrapper = require('../internal/createWrapper'),
-    restParam = require('./restParam');
-
-/** Used to compose bitmasks for wrapper metadata. */
-var REARG_FLAG = 256;
-
-/**
- * Creates a function that invokes `func` with arguments arranged according
- * to the specified indexes where the argument value at the first index is
- * provided as the first argument, the argument value at the second index is
- * provided as the second argument, and so on.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to rearrange arguments for.
- * @param {...(number|number[])} indexes The arranged argument indexes,
- *  specified as individual indexes or arrays of indexes.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var rearged = _.rearg(function(a, b, c) {
- *   return [a, b, c];
- * }, 2, 0, 1);
- *
- * rearged('b', 'c', 'a')
- * // => ['a', 'b', 'c']
- *
- * var map = _.rearg(_.map, [1, 0]);
- * map(function(n) {
- *   return n * 3;
- * }, [1, 2, 3]);
- * // => [3, 6, 9]
- */
-var rearg = restParam(function(func, indexes) {
-  return createWrapper(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes));
-});
-
-module.exports = rearg;
diff --git a/node_modules/lodash/function/restParam.js b/node_modules/lodash/function/restParam.js
deleted file mode 100644
index 8852286..0000000
--- a/node_modules/lodash/function/restParam.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/* Native method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Creates a function that invokes `func` with the `this` binding of the
- * created function and arguments from `start` and beyond provided as an array.
- *
- * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var say = _.restParam(function(what, names) {
- *   return what + ' ' + _.initial(names).join(', ') +
- *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
- * });
- *
- * say('hello', 'fred', 'barney', 'pebbles');
- * // => 'hello fred, barney, & pebbles'
- */
-function restParam(func, start) {
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
-  return function() {
-    var args = arguments,
-        index = -1,
-        length = nativeMax(args.length - start, 0),
-        rest = Array(length);
-
-    while (++index < length) {
-      rest[index] = args[start + index];
-    }
-    switch (start) {
-      case 0: return func.call(this, rest);
-      case 1: return func.call(this, args[0], rest);
-      case 2: return func.call(this, args[0], args[1], rest);
-    }
-    var otherArgs = Array(start + 1);
-    index = -1;
-    while (++index < start) {
-      otherArgs[index] = args[index];
-    }
-    otherArgs[start] = rest;
-    return func.apply(this, otherArgs);
-  };
-}
-
-module.exports = restParam;
diff --git a/node_modules/lodash/function/spread.js b/node_modules/lodash/function/spread.js
deleted file mode 100644
index 780f504..0000000
--- a/node_modules/lodash/function/spread.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that invokes `func` with the `this` binding of the created
- * function and an array of arguments much like [`Function#apply`](https://es5.github.io/#x15.3.4.3).
- *
- * **Note:** This method is based on the [spread operator](https://developer.mozilla.org/Web/JavaScript/Reference/Operators/Spread_operator).
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to spread arguments over.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var say = _.spread(function(who, what) {
- *   return who + ' says ' + what;
- * });
- *
- * say(['fred', 'hello']);
- * // => 'fred says hello'
- *
- * // with a Promise
- * var numbers = Promise.all([
- *   Promise.resolve(40),
- *   Promise.resolve(36)
- * ]);
- *
- * numbers.then(_.spread(function(x, y) {
- *   return x + y;
- * }));
- * // => a Promise of 76
- */
-function spread(func) {
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  return function(array) {
-    return func.apply(this, array);
-  };
-}
-
-module.exports = spread;
diff --git a/node_modules/lodash/function/throttle.js b/node_modules/lodash/function/throttle.js
deleted file mode 100644
index 1dd00ea..0000000
--- a/node_modules/lodash/function/throttle.js
+++ /dev/null
@@ -1,62 +0,0 @@
-var debounce = require('./debounce'),
-    isObject = require('../lang/isObject');
-
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a throttled function that only invokes `func` at most once per
- * every `wait` milliseconds. The throttled function comes with a `cancel`
- * method to cancel delayed invocations. Provide an options object to indicate
- * that `func` should be invoked on the leading and/or trailing edge of the
- * `wait` timeout. Subsequent calls to the throttled function return the
- * result of the last `func` call.
- *
- * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
- * on the trailing edge of the timeout only if the the throttled function is
- * invoked more than once during the `wait` timeout.
- *
- * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
- * for details over the differences between `_.throttle` and `_.debounce`.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {Function} func The function to throttle.
- * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
- * @param {Object} [options] The options object.
- * @param {boolean} [options.leading=true] Specify invoking on the leading
- *  edge of the timeout.
- * @param {boolean} [options.trailing=true] Specify invoking on the trailing
- *  edge of the timeout.
- * @returns {Function} Returns the new throttled function.
- * @example
- *
- * // avoid excessively updating the position while scrolling
- * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
- *
- * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes
- * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {
- *   'trailing': false
- * }));
- *
- * // cancel a trailing throttled call
- * jQuery(window).on('popstate', throttled.cancel);
- */
-function throttle(func, wait, options) {
-  var leading = true,
-      trailing = true;
-
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  if (options === false) {
-    leading = false;
-  } else if (isObject(options)) {
-    leading = 'leading' in options ? !!options.leading : leading;
-    trailing = 'trailing' in options ? !!options.trailing : trailing;
-  }
-  return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });
-}
-
-module.exports = throttle;
diff --git a/node_modules/lodash/function/wrap.js b/node_modules/lodash/function/wrap.js
deleted file mode 100644
index 6a33c5e..0000000
--- a/node_modules/lodash/function/wrap.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var createWrapper = require('../internal/createWrapper'),
-    identity = require('../utility/identity');
-
-/** Used to compose bitmasks for wrapper metadata. */
-var PARTIAL_FLAG = 32;
-
-/**
- * Creates a function that provides `value` to the wrapper function as its
- * first argument. Any additional arguments provided to the function are
- * appended to those provided to the wrapper function. The wrapper is invoked
- * with the `this` binding of the created function.
- *
- * @static
- * @memberOf _
- * @category Function
- * @param {*} value The value to wrap.
- * @param {Function} wrapper The wrapper function.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var p = _.wrap(_.escape, function(func, text) {
- *   return '<p>' + func(text) + '</p>';
- * });
- *
- * p('fred, barney, & pebbles');
- * // => '<p>fred, barney, &amp; pebbles</p>'
- */
-function wrap(value, wrapper) {
-  wrapper = wrapper == null ? identity : wrapper;
-  return createWrapper(wrapper, PARTIAL_FLAG, undefined, [value], []);
-}
-
-module.exports = wrap;
diff --git a/node_modules/lodash/index.js b/node_modules/lodash/index.js
deleted file mode 100644
index 5f17319..0000000
--- a/node_modules/lodash/index.js
+++ /dev/null
@@ -1,12351 +0,0 @@
-/**
- * @license
- * lodash 3.10.1 (Custom Build) <https://lodash.com/>
- * Build: `lodash modern -d -o ./index.js`
- * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- * Available under MIT license <https://lodash.com/license>
- */
-;(function() {
-
-  /** Used as a safe reference for `undefined` in pre-ES5 environments. */
-  var undefined;
-
-  /** Used as the semantic version number. */
-  var VERSION = '3.10.1';
-
-  /** Used to compose bitmasks for wrapper metadata. */
-  var BIND_FLAG = 1,
-      BIND_KEY_FLAG = 2,
-      CURRY_BOUND_FLAG = 4,
-      CURRY_FLAG = 8,
-      CURRY_RIGHT_FLAG = 16,
-      PARTIAL_FLAG = 32,
-      PARTIAL_RIGHT_FLAG = 64,
-      ARY_FLAG = 128,
-      REARG_FLAG = 256;
-
-  /** Used as default options for `_.trunc`. */
-  var DEFAULT_TRUNC_LENGTH = 30,
-      DEFAULT_TRUNC_OMISSION = '...';
-
-  /** Used to detect when a function becomes hot. */
-  var HOT_COUNT = 150,
-      HOT_SPAN = 16;
-
-  /** Used as the size to enable large array optimizations. */
-  var LARGE_ARRAY_SIZE = 200;
-
-  /** Used to indicate the type of lazy iteratees. */
-  var LAZY_FILTER_FLAG = 1,
-      LAZY_MAP_FLAG = 2;
-
-  /** Used as the `TypeError` message for "Functions" methods. */
-  var FUNC_ERROR_TEXT = 'Expected a function';
-
-  /** Used as the internal argument placeholder. */
-  var PLACEHOLDER = '__lodash_placeholder__';
-
-  /** `Object#toString` result references. */
-  var argsTag = '[object Arguments]',
-      arrayTag = '[object Array]',
-      boolTag = '[object Boolean]',
-      dateTag = '[object Date]',
-      errorTag = '[object Error]',
-      funcTag = '[object Function]',
-      mapTag = '[object Map]',
-      numberTag = '[object Number]',
-      objectTag = '[object Object]',
-      regexpTag = '[object RegExp]',
-      setTag = '[object Set]',
-      stringTag = '[object String]',
-      weakMapTag = '[object WeakMap]';
-
-  var arrayBufferTag = '[object ArrayBuffer]',
-      float32Tag = '[object Float32Array]',
-      float64Tag = '[object Float64Array]',
-      int8Tag = '[object Int8Array]',
-      int16Tag = '[object Int16Array]',
-      int32Tag = '[object Int32Array]',
-      uint8Tag = '[object Uint8Array]',
-      uint8ClampedTag = '[object Uint8ClampedArray]',
-      uint16Tag = '[object Uint16Array]',
-      uint32Tag = '[object Uint32Array]';
-
-  /** Used to match empty string literals in compiled template source. */
-  var reEmptyStringLeading = /\b__p \+= '';/g,
-      reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
-      reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
-
-  /** Used to match HTML entities and HTML characters. */
-  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g,
-      reUnescapedHtml = /[&<>"'`]/g,
-      reHasEscapedHtml = RegExp(reEscapedHtml.source),
-      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
-
-  /** Used to match template delimiters. */
-  var reEscape = /<%-([\s\S]+?)%>/g,
-      reEvaluate = /<%([\s\S]+?)%>/g,
-      reInterpolate = /<%=([\s\S]+?)%>/g;
-
-  /** Used to match property names within property paths. */
-  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
-      reIsPlainProp = /^\w*$/,
-      rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
-
-  /**
-   * Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns)
-   * and those outlined by [`EscapeRegExpPattern`](http://ecma-international.org/ecma-262/6.0/#sec-escaperegexppattern).
-   */
-  var reRegExpChars = /^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,
-      reHasRegExpChars = RegExp(reRegExpChars.source);
-
-  /** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */
-  var reComboMark = /[\u0300-\u036f\ufe20-\ufe23]/g;
-
-  /** Used to match backslashes in property paths. */
-  var reEscapeChar = /\\(\\)?/g;
-
-  /** Used to match [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). */
-  var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
-
-  /** Used to match `RegExp` flags from their coerced string values. */
-  var reFlags = /\w*$/;
-
-  /** Used to detect hexadecimal string values. */
-  var reHasHexPrefix = /^0[xX]/;
-
-  /** Used to detect host constructors (Safari > 5). */
-  var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-  /** Used to detect unsigned integer values. */
-  var reIsUint = /^\d+$/;
-
-  /** Used to match latin-1 supplementary letters (excluding mathematical operators). */
-  var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g;
-
-  /** Used to ensure capturing order of template delimiters. */
-  var reNoMatch = /($^)/;
-
-  /** Used to match unescaped characters in compiled string literals. */
-  var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
-
-  /** Used to match words to create compound words. */
-  var reWords = (function() {
-    var upper = '[A-Z\\xc0-\\xd6\\xd8-\\xde]',
-        lower = '[a-z\\xdf-\\xf6\\xf8-\\xff]+';
-
-    return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g');
-  }());
-
-  /** Used to assign default `context` object properties. */
-  var contextProps = [
-    'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array',
-    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number',
-    'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'isFinite',
-    'parseFloat', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array',
-    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap'
-  ];
-
-  /** Used to make template sourceURLs easier to identify. */
-  var templateCounter = -1;
-
-  /** Used to identify `toStringTag` values of typed arrays. */
-  var typedArrayTags = {};
-  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
-  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
-  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
-  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
-  typedArrayTags[uint32Tag] = true;
-  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
-  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
-  typedArrayTags[dateTag] = typedArrayTags[errorTag] =
-  typedArrayTags[funcTag] = typedArrayTags[mapTag] =
-  typedArrayTags[numberTag] = typedArrayTags[objectTag] =
-  typedArrayTags[regexpTag] = typedArrayTags[setTag] =
-  typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
-
-  /** Used to identify `toStringTag` values supported by `_.clone`. */
-  var cloneableTags = {};
-  cloneableTags[argsTag] = cloneableTags[arrayTag] =
-  cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =
-  cloneableTags[dateTag] = cloneableTags[float32Tag] =
-  cloneableTags[float64Tag] = cloneableTags[int8Tag] =
-  cloneableTags[int16Tag] = cloneableTags[int32Tag] =
-  cloneableTags[numberTag] = cloneableTags[objectTag] =
-  cloneableTags[regexpTag] = cloneableTags[stringTag] =
-  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
-  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
-  cloneableTags[errorTag] = cloneableTags[funcTag] =
-  cloneableTags[mapTag] = cloneableTags[setTag] =
-  cloneableTags[weakMapTag] = false;
-
-  /** Used to map latin-1 supplementary letters to basic latin letters. */
-  var deburredLetters = {
-    '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
-    '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
-    '\xc7': 'C',  '\xe7': 'c',
-    '\xd0': 'D',  '\xf0': 'd',
-    '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
-    '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
-    '\xcC': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
-    '\xeC': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
-    '\xd1': 'N',  '\xf1': 'n',
-    '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
-    '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
-    '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
-    '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
-    '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
-    '\xc6': 'Ae', '\xe6': 'ae',
-    '\xde': 'Th', '\xfe': 'th',
-    '\xdf': 'ss'
-  };
-
-  /** Used to map characters to HTML entities. */
-  var htmlEscapes = {
-    '&': '&amp;',
-    '<': '&lt;',
-    '>': '&gt;',
-    '"': '&quot;',
-    "'": '&#39;',
-    '`': '&#96;'
-  };
-
-  /** Used to map HTML entities to characters. */
-  var htmlUnescapes = {
-    '&amp;': '&',
-    '&lt;': '<',
-    '&gt;': '>',
-    '&quot;': '"',
-    '&#39;': "'",
-    '&#96;': '`'
-  };
-
-  /** Used to determine if values are of the language type `Object`. */
-  var objectTypes = {
-    'function': true,
-    'object': true
-  };
-
-  /** Used to escape characters for inclusion in compiled regexes. */
-  var regexpEscapes = {
-    '0': 'x30', '1': 'x31', '2': 'x32', '3': 'x33', '4': 'x34',
-    '5': 'x35', '6': 'x36', '7': 'x37', '8': 'x38', '9': 'x39',
-    'A': 'x41', 'B': 'x42', 'C': 'x43', 'D': 'x44', 'E': 'x45', 'F': 'x46',
-    'a': 'x61', 'b': 'x62', 'c': 'x63', 'd': 'x64', 'e': 'x65', 'f': 'x66',
-    'n': 'x6e', 'r': 'x72', 't': 'x74', 'u': 'x75', 'v': 'x76', 'x': 'x78'
-  };
-
-  /** Used to escape characters for inclusion in compiled string literals. */
-  var stringEscapes = {
-    '\\': '\\',
-    "'": "'",
-    '\n': 'n',
-    '\r': 'r',
-    '\u2028': 'u2028',
-    '\u2029': 'u2029'
-  };
-
-  /** Detect free variable `exports`. */
-  var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
-
-  /** Detect free variable `module`. */
-  var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;
-
-  /** Detect free variable `global` from Node.js. */
-  var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;
-
-  /** Detect free variable `self`. */
-  var freeSelf = objectTypes[typeof self] && self && self.Object && self;
-
-  /** Detect free variable `window`. */
-  var freeWindow = objectTypes[typeof window] && window && window.Object && window;
-
-  /** Detect the popular CommonJS extension `module.exports`. */
-  var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;
-
-  /**
-   * Used as a reference to the global object.
-   *
-   * The `this` value is used if it's the global object to avoid Greasemonkey's
-   * restricted `window` object, otherwise the `window` object is used.
-   */
-  var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;
-
-  /*--------------------------------------------------------------------------*/
-
-  /**
-   * The base implementation of `compareAscending` which compares values and
-   * sorts them in ascending order without guaranteeing a stable sort.
-   *
-   * @private
-   * @param {*} value The value to compare.
-   * @param {*} other The other value to compare.
-   * @returns {number} Returns the sort order indicator for `value`.
-   */
-  function baseCompareAscending(value, other) {
-    if (value !== other) {
-      var valIsNull = value === null,
-          valIsUndef = value === undefined,
-          valIsReflexive = value === value;
-
-      var othIsNull = other === null,
-          othIsUndef = other === undefined,
-          othIsReflexive = other === other;
-
-      if ((value > other && !othIsNull) || !valIsReflexive ||
-          (valIsNull && !othIsUndef && othIsReflexive) ||
-          (valIsUndef && othIsReflexive)) {
-        return 1;
-      }
-      if ((value < other && !valIsNull) || !othIsReflexive ||
-          (othIsNull && !valIsUndef && valIsReflexive) ||
-          (othIsUndef && valIsReflexive)) {
-        return -1;
-      }
-    }
-    return 0;
-  }
-
-  /**
-   * The base implementation of `_.findIndex` and `_.findLastIndex` without
-   * support for callback shorthands and `this` binding.
-   *
-   * @private
-   * @param {Array} array The array to search.
-   * @param {Function} predicate The function invoked per iteration.
-   * @param {boolean} [fromRight] Specify iterating from right to left.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function baseFindIndex(array, predicate, fromRight) {
-    var length = array.length,
-        index = fromRight ? length : -1;
-
-    while ((fromRight ? index-- : ++index < length)) {
-      if (predicate(array[index], index, array)) {
-        return index;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * The base implementation of `_.indexOf` without support for binary searches.
-   *
-   * @private
-   * @param {Array} array The array to search.
-   * @param {*} value The value to search for.
-   * @param {number} fromIndex The index to search from.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function baseIndexOf(array, value, fromIndex) {
-    if (value !== value) {
-      return indexOfNaN(array, fromIndex);
-    }
-    var index = fromIndex - 1,
-        length = array.length;
-
-    while (++index < length) {
-      if (array[index] === value) {
-        return index;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * The base implementation of `_.isFunction` without support for environments
-   * with incorrect `typeof` results.
-   *
-   * @private
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
-   */
-  function baseIsFunction(value) {
-    // Avoid a Chakra JIT bug in compatibility modes of IE 11.
-    // See https://github.com/jashkenas/underscore/issues/1621 for more details.
-    return typeof value == 'function' || false;
-  }
-
-  /**
-   * Converts `value` to a string if it's not one. An empty string is returned
-   * for `null` or `undefined` values.
-   *
-   * @private
-   * @param {*} value The value to process.
-   * @returns {string} Returns the string.
-   */
-  function baseToString(value) {
-    return value == null ? '' : (value + '');
-  }
-
-  /**
-   * Used by `_.trim` and `_.trimLeft` to get the index of the first character
-   * of `string` that is not found in `chars`.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @param {string} chars The characters to find.
-   * @returns {number} Returns the index of the first character not found in `chars`.
-   */
-  function charsLeftIndex(string, chars) {
-    var index = -1,
-        length = string.length;
-
-    while (++index < length && chars.indexOf(string.charAt(index)) > -1) {}
-    return index;
-  }
-
-  /**
-   * Used by `_.trim` and `_.trimRight` to get the index of the last character
-   * of `string` that is not found in `chars`.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @param {string} chars The characters to find.
-   * @returns {number} Returns the index of the last character not found in `chars`.
-   */
-  function charsRightIndex(string, chars) {
-    var index = string.length;
-
-    while (index-- && chars.indexOf(string.charAt(index)) > -1) {}
-    return index;
-  }
-
-  /**
-   * Used by `_.sortBy` to compare transformed elements of a collection and stable
-   * sort them in ascending order.
-   *
-   * @private
-   * @param {Object} object The object to compare.
-   * @param {Object} other The other object to compare.
-   * @returns {number} Returns the sort order indicator for `object`.
-   */
-  function compareAscending(object, other) {
-    return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index);
-  }
-
-  /**
-   * Used by `_.sortByOrder` to compare multiple properties of a value to another
-   * and stable sort them.
-   *
-   * If `orders` is unspecified, all valuess are sorted in ascending order. Otherwise,
-   * a value is sorted in ascending order if its corresponding order is "asc", and
-   * descending if "desc".
-   *
-   * @private
-   * @param {Object} object The object to compare.
-   * @param {Object} other The other object to compare.
-   * @param {boolean[]} orders The order to sort by for each property.
-   * @returns {number} Returns the sort order indicator for `object`.
-   */
-  function compareMultiple(object, other, orders) {
-    var index = -1,
-        objCriteria = object.criteria,
-        othCriteria = other.criteria,
-        length = objCriteria.length,
-        ordersLength = orders.length;
-
-    while (++index < length) {
-      var result = baseCompareAscending(objCriteria[index], othCriteria[index]);
-      if (result) {
-        if (index >= ordersLength) {
-          return result;
-        }
-        var order = orders[index];
-        return result * ((order === 'asc' || order === true) ? 1 : -1);
-      }
-    }
-    // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
-    // that causes it, under certain circumstances, to provide the same value for
-    // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
-    // for more details.
-    //
-    // This also ensures a stable sort in V8 and other engines.
-    // See https://code.google.com/p/v8/issues/detail?id=90 for more details.
-    return object.index - other.index;
-  }
-
-  /**
-   * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters.
-   *
-   * @private
-   * @param {string} letter The matched letter to deburr.
-   * @returns {string} Returns the deburred letter.
-   */
-  function deburrLetter(letter) {
-    return deburredLetters[letter];
-  }
-
-  /**
-   * Used by `_.escape` to convert characters to HTML entities.
-   *
-   * @private
-   * @param {string} chr The matched character to escape.
-   * @returns {string} Returns the escaped character.
-   */
-  function escapeHtmlChar(chr) {
-    return htmlEscapes[chr];
-  }
-
-  /**
-   * Used by `_.escapeRegExp` to escape characters for inclusion in compiled regexes.
-   *
-   * @private
-   * @param {string} chr The matched character to escape.
-   * @param {string} leadingChar The capture group for a leading character.
-   * @param {string} whitespaceChar The capture group for a whitespace character.
-   * @returns {string} Returns the escaped character.
-   */
-  function escapeRegExpChar(chr, leadingChar, whitespaceChar) {
-    if (leadingChar) {
-      chr = regexpEscapes[chr];
-    } else if (whitespaceChar) {
-      chr = stringEscapes[chr];
-    }
-    return '\\' + chr;
-  }
-
-  /**
-   * Used by `_.template` to escape characters for inclusion in compiled string literals.
-   *
-   * @private
-   * @param {string} chr The matched character to escape.
-   * @returns {string} Returns the escaped character.
-   */
-  function escapeStringChar(chr) {
-    return '\\' + stringEscapes[chr];
-  }
-
-  /**
-   * Gets the index at which the first occurrence of `NaN` is found in `array`.
-   *
-   * @private
-   * @param {Array} array The array to search.
-   * @param {number} fromIndex The index to search from.
-   * @param {boolean} [fromRight] Specify iterating from right to left.
-   * @returns {number} Returns the index of the matched `NaN`, else `-1`.
-   */
-  function indexOfNaN(array, fromIndex, fromRight) {
-    var length = array.length,
-        index = fromIndex + (fromRight ? 0 : -1);
-
-    while ((fromRight ? index-- : ++index < length)) {
-      var other = array[index];
-      if (other !== other) {
-        return index;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * Checks if `value` is object-like.
-   *
-   * @private
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
-   */
-  function isObjectLike(value) {
-    return !!value && typeof value == 'object';
-  }
-
-  /**
-   * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a
-   * character code is whitespace.
-   *
-   * @private
-   * @param {number} charCode The character code to inspect.
-   * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`.
-   */
-  function isSpace(charCode) {
-    return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 ||
-      (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279)));
-  }
-
-  /**
-   * Replaces all `placeholder` elements in `array` with an internal placeholder
-   * and returns an array of their indexes.
-   *
-   * @private
-   * @param {Array} array The array to modify.
-   * @param {*} placeholder The placeholder to replace.
-   * @returns {Array} Returns the new array of placeholder indexes.
-   */
-  function replaceHolders(array, placeholder) {
-    var index = -1,
-        length = array.length,
-        resIndex = -1,
-        result = [];
-
-    while (++index < length) {
-      if (array[index] === placeholder) {
-        array[index] = PLACEHOLDER;
-        result[++resIndex] = index;
-      }
-    }
-    return result;
-  }
-
-  /**
-   * An implementation of `_.uniq` optimized for sorted arrays without support
-   * for callback shorthands and `this` binding.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {Function} [iteratee] The function invoked per iteration.
-   * @returns {Array} Returns the new duplicate-value-free array.
-   */
-  function sortedUniq(array, iteratee) {
-    var seen,
-        index = -1,
-        length = array.length,
-        resIndex = -1,
-        result = [];
-
-    while (++index < length) {
-      var value = array[index],
-          computed = iteratee ? iteratee(value, index, array) : value;
-
-      if (!index || seen !== computed) {
-        seen = computed;
-        result[++resIndex] = value;
-      }
-    }
-    return result;
-  }
-
-  /**
-   * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace
-   * character of `string`.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @returns {number} Returns the index of the first non-whitespace character.
-   */
-  function trimmedLeftIndex(string) {
-    var index = -1,
-        length = string.length;
-
-    while (++index < length && isSpace(string.charCodeAt(index))) {}
-    return index;
-  }
-
-  /**
-   * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace
-   * character of `string`.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @returns {number} Returns the index of the last non-whitespace character.
-   */
-  function trimmedRightIndex(string) {
-    var index = string.length;
-
-    while (index-- && isSpace(string.charCodeAt(index))) {}
-    return index;
-  }
-
-  /**
-   * Used by `_.unescape` to convert HTML entities to characters.
-   *
-   * @private
-   * @param {string} chr The matched character to unescape.
-   * @returns {string} Returns the unescaped character.
-   */
-  function unescapeHtmlChar(chr) {
-    return htmlUnescapes[chr];
-  }
-
-  /*--------------------------------------------------------------------------*/
-
-  /**
-   * Create a new pristine `lodash` function using the given `context` object.
-   *
-   * @static
-   * @memberOf _
-   * @category Utility
-   * @param {Object} [context=root] The context object.
-   * @returns {Function} Returns a new `lodash` function.
-   * @example
-   *
-   * _.mixin({ 'foo': _.constant('foo') });
-   *
-   * var lodash = _.runInContext();
-   * lodash.mixin({ 'bar': lodash.constant('bar') });
-   *
-   * _.isFunction(_.foo);
-   * // => true
-   * _.isFunction(_.bar);
-   * // => false
-   *
-   * lodash.isFunction(lodash.foo);
-   * // => false
-   * lodash.isFunction(lodash.bar);
-   * // => true
-   *
-   * // using `context` to mock `Date#getTime` use in `_.now`
-   * var mock = _.runInContext({
-   *   'Date': function() {
-   *     return { 'getTime': getTimeMock };
-   *   }
-   * });
-   *
-   * // or creating a suped-up `defer` in Node.js
-   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
-   */
-  function runInContext(context) {
-    // Avoid issues with some ES3 environments that attempt to use values, named
-    // after built-in constructors like `Object`, for the creation of literals.
-    // ES5 clears this up by stating that literals must use built-in constructors.
-    // See https://es5.github.io/#x11.1.5 for more details.
-    context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root;
-
-    /** Native constructor references. */
-    var Array = context.Array,
-        Date = context.Date,
-        Error = context.Error,
-        Function = context.Function,
-        Math = context.Math,
-        Number = context.Number,
-        Object = context.Object,
-        RegExp = context.RegExp,
-        String = context.String,
-        TypeError = context.TypeError;
-
-    /** Used for native method references. */
-    var arrayProto = Array.prototype,
-        objectProto = Object.prototype,
-        stringProto = String.prototype;
-
-    /** Used to resolve the decompiled source of functions. */
-    var fnToString = Function.prototype.toString;
-
-    /** Used to check objects for own properties. */
-    var hasOwnProperty = objectProto.hasOwnProperty;
-
-    /** Used to generate unique IDs. */
-    var idCounter = 0;
-
-    /**
-     * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
-     * of values.
-     */
-    var objToString = objectProto.toString;
-
-    /** Used to restore the original `_` reference in `_.noConflict`. */
-    var oldDash = root._;
-
-    /** Used to detect if a method is native. */
-    var reIsNative = RegExp('^' +
-      fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
-      .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-    );
-
-    /** Native method references. */
-    var ArrayBuffer = context.ArrayBuffer,
-        clearTimeout = context.clearTimeout,
-        parseFloat = context.parseFloat,
-        pow = Math.pow,
-        propertyIsEnumerable = objectProto.propertyIsEnumerable,
-        Set = getNative(context, 'Set'),
-        setTimeout = context.setTimeout,
-        splice = arrayProto.splice,
-        Uint8Array = context.Uint8Array,
-        WeakMap = getNative(context, 'WeakMap');
-
-    /* Native method references for those with the same name as other `lodash` methods. */
-    var nativeCeil = Math.ceil,
-        nativeCreate = getNative(Object, 'create'),
-        nativeFloor = Math.floor,
-        nativeIsArray = getNative(Array, 'isArray'),
-        nativeIsFinite = context.isFinite,
-        nativeKeys = getNative(Object, 'keys'),
-        nativeMax = Math.max,
-        nativeMin = Math.min,
-        nativeNow = getNative(Date, 'now'),
-        nativeParseInt = context.parseInt,
-        nativeRandom = Math.random;
-
-    /** Used as references for `-Infinity` and `Infinity`. */
-    var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY,
-        POSITIVE_INFINITY = Number.POSITIVE_INFINITY;
-
-    /** Used as references for the maximum length and index of an array. */
-    var MAX_ARRAY_LENGTH = 4294967295,
-        MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
-        HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
-
-    /**
-     * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
-     * of an array-like value.
-     */
-    var MAX_SAFE_INTEGER = 9007199254740991;
-
-    /** Used to store function metadata. */
-    var metaMap = WeakMap && new WeakMap;
-
-    /** Used to lookup unminified function names. */
-    var realNames = {};
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates a `lodash` object which wraps `value` to enable implicit chaining.
-     * Methods that operate on and return arrays, collections, and functions can
-     * be chained together. Methods that retrieve a single value or may return a
-     * primitive value will automatically end the chain returning the unwrapped
-     * value. Explicit chaining may be enabled using `_.chain`. The execution of
-     * chained methods is lazy, that is, execution is deferred until `_#value`
-     * is implicitly or explicitly called.
-     *
-     * Lazy evaluation allows several methods to support shortcut fusion. Shortcut
-     * fusion is an optimization strategy which merge iteratee calls; this can help
-     * to avoid the creation of intermediate data structures and greatly reduce the
-     * number of iteratee executions.
-     *
-     * Chaining is supported in custom builds as long as the `_#value` method is
-     * directly or indirectly included in the build.
-     *
-     * In addition to lodash methods, wrappers have `Array` and `String` methods.
-     *
-     * The wrapper `Array` methods are:
-     * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,
-     * `splice`, and `unshift`
-     *
-     * The wrapper `String` methods are:
-     * `replace` and `split`
-     *
-     * The wrapper methods that support shortcut fusion are:
-     * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,
-     * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,
-     * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,
-     * and `where`
-     *
-     * The chainable wrapper methods are:
-     * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,
-     * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,
-     * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defaultsDeep`,
-     * `defer`, `delay`, `difference`, `drop`, `dropRight`, `dropRightWhile`,
-     * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`,
-     * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`,
-     * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`,
-     * `invoke`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`,
-     * `matchesProperty`, `memoize`, `merge`, `method`, `methodOf`, `mixin`,
-     * `modArgs`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`,
-     * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`,
-     * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `restParam`,
-     * `reverse`, `set`, `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`,
-     * `sortByOrder`, `splice`, `spread`, `take`, `takeRight`, `takeRightWhile`,
-     * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`,
-     * `transform`, `union`, `uniq`, `unshift`, `unzip`, `unzipWith`, `values`,
-     * `valuesIn`, `where`, `without`, `wrap`, `xor`, `zip`, `zipObject`, `zipWith`
-     *
-     * The wrapper methods that are **not** chainable by default are:
-     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clone`, `cloneDeep`,
-     * `deburr`, `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`,
-     * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`,
-     * `floor`, `get`, `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`,
-     * `inRange`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`,
-     * `isEmpty`, `isEqual`, `isError`, `isFinite` `isFunction`, `isMatch`,
-     * `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, `isPlainObject`,
-     * `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`,
-     * `last`, `lastIndexOf`, `lt`, `lte`, `max`, `min`, `noConflict`, `noop`,
-     * `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, `reduce`,
-     * `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `shift`, `size`,
... 29966 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org