{"version":3,"sources":["/source-files/jsondiffpatch/node_modules/fiberglass/node_modules/browserify/node_modules/browser-pack/_prelude.js","/source-files/jsondiffpatch/src/main.js","/source-files/jsondiffpatch/src/environment.js","/source-files/jsondiffpatch/src/diffpatcher.js","/source-files/jsondiffpatch/src/date-reviver.js","/source-files/jsondiffpatch/src/processor.js","/source-files/jsondiffpatch/src/pipe.js","/source-files/jsondiffpatch/src/contexts/diff.js","/source-files/jsondiffpatch/src/contexts/patch.js","/source-files/jsondiffpatch/src/contexts/reverse.js","/source-files/jsondiffpatch/src/clone.js","/source-files/jsondiffpatch/src/filters/trivial.js","/source-files/jsondiffpatch/src/filters/nested.js","/source-files/jsondiffpatch/src/filters/arrays.js","/source-files/jsondiffpatch/src/filters/dates.js","/source-files/jsondiffpatch/src/filters/texts.js","/source-files/jsondiffpatch/src/contexts/context.js","/source-files/jsondiffpatch/src/filters/lcs.js"],"names":["environment","require","DiffPatcher","exports","create","options","dateReviver","defaultInstance","diff","apply","arguments","patch","unpatch","reverse","clone","isBrowser","homepage","version","packageInfoModuleName","packageInfo","formatterModuleName","formatters","console","window","Processor","Pipe","DiffContext","PatchContext","ReverseContext","trivial","nested","arrays","dates","texts","this","processor","pipe","append","collectChildrenDiffFilter","diffFilter","objectsDiffFilter","shouldHaveResult","collectChildrenPatchFilter","patchFilter","collectChildrenReverseFilter","reverseFilter","prototype","left","right","process","delta","value","module","key","parts","exec","Date","UTC","selfOptions","pipes","name","input","context","lastPipe","lastContext","nextPipe","nextAfterChildren","next","hasResult","result","undefined","filters","Error","debug","length","index","filter","log","filterName","exiting","resultCheck","msg","push","prepend","unshift","indexOf","list","names","after","params","Array","slice","call","splice","before","clear","should","error","noResult","Context","defaultClone","setResult","cloneDiffValues","cloneRegExp","re","regexMatch","toString","RegExp","arg","isArray","map","getTime","cloned","Object","hasOwnProperty","a","exit","leftType","rightType","leftIsArray","rightIsArray","regexArgs","children","child","childName","_t","propertyFilter","arraysHaveMatchByRef","array1","array2","len1","len2","index1","val1","index2","val2","matchItems","value1","value2","objectHash","matchByPosition","hash1","hash2","hashCache1","hashCache2","lcs","ARRAY_MOVE","arrayIndexOf","array","item","i","matchContext","commonHead","commonTail","trimmed1","trimmed2","seq","get","removedItems","indices1","detectMove","includeValueOnMove","removedItemsLength","indexOnArray2","indices2","isMove","removeItemIndex1","compare","numerically","b","numericallyBy","toRemove","toInsert","toModify","parseInt","sort","indexDiff","removedValue","toInsertLength","insertion","toModifyLength","modification","newName","substr","reverseArrayDeltaIndex","itemDelta","reverseIndex","deltaIndex","deltaItem","moveFromIndex","moveToIndex","deleteIndex","TEXT_DIFF","DEFAULT_MIN_LENGTH","cachedDiffPatch","getDiffMatchPatch","required","instance","diff_match_patch","dmpModuleName","dmp","err","diff_match_patch_not_found","txt1","txt2","patch_toText","patch_make","results","patch_apply","patch_fromText","textPatchFailed","minLength","textDiff","diffMatchPatch","textDeltaReverse","l","lines","line","lineTmp","lineHeader","lineAdd","lineRemove","header","headerRegex","split","lineStart","join","switchTo","parent","root","defaultMatch","lengthMatrix","match","x","y","matrix","Math","max","backtrack","sequence","subsequence"],"mappings":"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","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 0 && len2 > 0 && !matchContext.objectHash &&\n typeof matchContext.matchByPosition !== 'boolean') {\n matchContext.matchByPosition = !arraysHaveMatchByRef(array1, array2, len1, len2);\n }\n\n // separate common head\n while (commonHead < len1 && commonHead < len2 &&\n matchItems(array1, array2, commonHead, commonHead, matchContext)) {\n index = commonHead;\n child = new DiffContext(context.left[index], context.right[index]);\n context.push(child, index);\n commonHead++;\n }\n // separate common tail\n while (commonTail + commonHead < len1 && commonTail + commonHead < len2 &&\n matchItems(array1, array2, len1 - 1 - commonTail, len2 - 1 - commonTail, matchContext)) {\n index1 = len1 - 1 - commonTail;\n index2 = len2 - 1 - commonTail;\n child = new DiffContext(context.left[index1], context.right[index2]);\n context.push(child, index2);\n commonTail++;\n }\n var result;\n if (commonHead + commonTail === len1) {\n if (len1 === len2) {\n // arrays are identical\n context.setResult(undefined).exit();\n return;\n }\n // trivial case, a block (1 or more consecutive items) was added\n result = result || {\n _t: 'a'\n };\n for (index = commonHead; index < len2 - commonTail; index++) {\n result[index] = [array2[index]];\n }\n context.setResult(result).exit();\n return;\n }\n if (commonHead + commonTail === len2) {\n // trivial case, a block (1 or more consecutive items) was removed\n result = result || {\n _t: 'a'\n };\n for (index = commonHead; index < len1 - commonTail; index++) {\n result['_' + index] = [array1[index], 0, 0];\n }\n context.setResult(result).exit();\n return;\n }\n // reset hash cache\n delete matchContext.hashCache1;\n delete matchContext.hashCache2;\n\n // diff is not trivial, find the LCS (Longest Common Subsequence)\n var trimmed1 = array1.slice(commonHead, len1 - commonTail);\n var trimmed2 = array2.slice(commonHead, len2 - commonTail);\n var seq = lcs.get(\n trimmed1, trimmed2,\n matchItems,\n matchContext\n );\n var removedItems = [];\n result = result || {\n _t: 'a'\n };\n for (index = commonHead; index < len1 - commonTail; index++) {\n if (arrayIndexOf(seq.indices1, index - commonHead) < 0) {\n // removed\n result['_' + index] = [array1[index], 0, 0];\n removedItems.push(index);\n }\n }\n\n var detectMove = true;\n if (context.options && context.options.arrays && context.options.arrays.detectMove === false) {\n detectMove = false;\n }\n var includeValueOnMove = false;\n if (context.options && context.options.arrays && context.options.arrays.includeValueOnMove) {\n includeValueOnMove = true;\n }\n\n var removedItemsLength = removedItems.length;\n for (index = commonHead; index < len2 - commonTail; index++) {\n var indexOnArray2 = arrayIndexOf(seq.indices2, index - commonHead);\n if (indexOnArray2 < 0) {\n // added, try to match with a removed item and register as position move\n var isMove = false;\n if (detectMove && removedItemsLength > 0) {\n for (var removeItemIndex1 = 0; removeItemIndex1 < removedItemsLength; removeItemIndex1++) {\n index1 = removedItems[removeItemIndex1];\n if (matchItems(trimmed1, trimmed2, index1 - commonHead,\n index - commonHead, matchContext)) {\n // store position move as: [originalValue, newPosition, ARRAY_MOVE]\n result['_' + index1].splice(1, 2, index, ARRAY_MOVE);\n if (!includeValueOnMove) {\n // don't include moved value on diff, to save bytes\n result['_' + index1][0] = '';\n }\n\n index2 = index;\n child = new DiffContext(context.left[index1], context.right[index2]);\n context.push(child, index2);\n removedItems.splice(removeItemIndex1, 1);\n isMove = true;\n break;\n }\n }\n }\n if (!isMove) {\n // added\n result[index] = [array2[index]];\n }\n } else {\n // match, do inner diff\n index1 = seq.indices1[indexOnArray2] + commonHead;\n index2 = seq.indices2[indexOnArray2] + commonHead;\n child = new DiffContext(context.left[index1], context.right[index2]);\n context.push(child, index2);\n }\n }\n\n context.setResult(result).exit();\n\n};\ndiffFilter.filterName = 'arrays';\n\nvar compare = {\n numerically: function(a, b) {\n return a - b;\n },\n numericallyBy: function(name) {\n return function(a, b) {\n return a[name] - b[name];\n };\n }\n};\n\nvar patchFilter = function nestedPatchFilter(context) {\n if (!context.nested) {\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n var index, index1;\n\n var delta = context.delta;\n var array = context.left;\n\n // first, separate removals, insertions and modifications\n var toRemove = [];\n var toInsert = [];\n var toModify = [];\n for (index in delta) {\n if (index !== '_t') {\n if (index[0] === '_') {\n // removed item from original array\n if (delta[index][2] === 0 || delta[index][2] === ARRAY_MOVE) {\n toRemove.push(parseInt(index.slice(1), 10));\n } else {\n throw new Error('only removal or move can be applied at original array indices' +\n ', invalid diff type: ' + delta[index][2]);\n }\n } else {\n if (delta[index].length === 1) {\n // added item at new array\n toInsert.push({\n index: parseInt(index, 10),\n value: delta[index][0]\n });\n } else {\n // modified item at new array\n toModify.push({\n index: parseInt(index, 10),\n delta: delta[index]\n });\n }\n }\n }\n }\n\n // remove items, in reverse order to avoid sawing our own floor\n toRemove = toRemove.sort(compare.numerically);\n for (index = toRemove.length - 1; index >= 0; index--) {\n index1 = toRemove[index];\n var indexDiff = delta['_' + index1];\n var removedValue = array.splice(index1, 1)[0];\n if (indexDiff[2] === ARRAY_MOVE) {\n // reinsert later\n toInsert.push({\n index: indexDiff[1],\n value: removedValue\n });\n }\n }\n\n // insert items, in reverse order to avoid moving our own floor\n toInsert = toInsert.sort(compare.numericallyBy('index'));\n var toInsertLength = toInsert.length;\n for (index = 0; index < toInsertLength; index++) {\n var insertion = toInsert[index];\n array.splice(insertion.index, 0, insertion.value);\n }\n\n // apply modifications\n var toModifyLength = toModify.length;\n var child;\n if (toModifyLength > 0) {\n for (index = 0; index < toModifyLength; index++) {\n var modification = toModify[index];\n child = new PatchContext(context.left[modification.index], modification.delta);\n context.push(child, modification.index);\n }\n }\n\n if (!context.children) {\n context.setResult(context.left).exit();\n return;\n }\n context.exit();\n};\npatchFilter.filterName = 'arrays';\n\nvar collectChildrenPatchFilter = function collectChildrenPatchFilter(context) {\n if (!context || !context.children) {\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n var length = context.children.length;\n var child;\n for (var index = 0; index < length; index++) {\n child = context.children[index];\n context.left[child.childName] = child.result;\n }\n context.setResult(context.left).exit();\n};\ncollectChildrenPatchFilter.filterName = 'arraysCollectChildren';\n\nvar reverseFilter = function arraysReverseFilter(context) {\n if (!context.nested) {\n if (context.delta[2] === ARRAY_MOVE) {\n context.newName = '_' + context.delta[1];\n context.setResult([context.delta[0], parseInt(context.childName.substr(1), 10), ARRAY_MOVE]).exit();\n }\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n var name, child;\n for (name in context.delta) {\n if (name === '_t') {\n continue;\n }\n child = new ReverseContext(context.delta[name]);\n context.push(child, name);\n }\n context.exit();\n};\nreverseFilter.filterName = 'arrays';\n\nvar reverseArrayDeltaIndex = function(delta, index, itemDelta) {\n if (typeof index === 'string' && index[0] === '_') {\n return parseInt(index.substr(1), 10);\n } else if (isArray(itemDelta) && itemDelta[2] === 0) {\n return '_' + index;\n }\n\n var reverseIndex = +index;\n for (var deltaIndex in delta) {\n var deltaItem = delta[deltaIndex];\n if (isArray(deltaItem)) {\n if (deltaItem[2] === ARRAY_MOVE) {\n var moveFromIndex = parseInt(deltaIndex.substr(1), 10);\n var moveToIndex = deltaItem[1];\n if (moveToIndex === +index) {\n return moveFromIndex;\n }\n if (moveFromIndex <= reverseIndex && moveToIndex > reverseIndex) {\n reverseIndex++;\n } else if (moveFromIndex >= reverseIndex && moveToIndex < reverseIndex) {\n reverseIndex--;\n }\n } else if (deltaItem[2] === 0) {\n var deleteIndex = parseInt(deltaIndex.substr(1), 10);\n if (deleteIndex <= reverseIndex) {\n reverseIndex++;\n }\n } else if (deltaItem.length === 1 && deltaIndex <= reverseIndex) {\n reverseIndex--;\n }\n }\n }\n\n return reverseIndex;\n};\n\nvar collectChildrenReverseFilter = function collectChildrenReverseFilter(context) {\n if (!context || !context.children) {\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n var length = context.children.length;\n var child;\n var delta = {\n _t: 'a'\n };\n\n for (var index = 0; index < length; index++) {\n child = context.children[index];\n var name = child.newName;\n if (typeof name === 'undefined') {\n name = reverseArrayDeltaIndex(context.delta, child.childName, child.result);\n }\n if (delta[name] !== child.result) {\n delta[name] = child.result;\n }\n }\n context.setResult(delta).exit();\n};\ncollectChildrenReverseFilter.filterName = 'arraysCollectChildren';\n\nexports.diffFilter = diffFilter;\nexports.patchFilter = patchFilter;\nexports.collectChildrenPatchFilter = collectChildrenPatchFilter;\nexports.reverseFilter = reverseFilter;\nexports.collectChildrenReverseFilter = collectChildrenReverseFilter;\n","var diffFilter = function datesDiffFilter(context) {\n if (context.left instanceof Date) {\n if (context.right instanceof Date) {\n if (context.left.getTime() !== context.right.getTime()) {\n context.setResult([context.left, context.right]);\n } else {\n context.setResult(undefined);\n }\n } else {\n context.setResult([context.left, context.right]);\n }\n context.exit();\n } else if (context.right instanceof Date) {\n context.setResult([context.left, context.right]).exit();\n }\n};\ndiffFilter.filterName = 'dates';\n\nexports.diffFilter = diffFilter;\n","/* global diff_match_patch */\nvar TEXT_DIFF = 2;\nvar DEFAULT_MIN_LENGTH = 60;\nvar cachedDiffPatch = null;\n\nvar getDiffMatchPatch = function(required) {\n /*jshint camelcase: false */\n\n if (!cachedDiffPatch) {\n var instance;\n if (typeof diff_match_patch !== 'undefined') {\n // already loaded, probably a browser\n instance = typeof diff_match_patch === 'function' ?\n new diff_match_patch() : new diff_match_patch.diff_match_patch();\n } else if (typeof require === 'function') {\n try {\n var dmpModuleName = 'diff_match_patch_uncompressed';\n var dmp = require('../../public/external/' + dmpModuleName);\n instance = new dmp.diff_match_patch();\n } catch (err) {\n instance = null;\n }\n }\n if (!instance) {\n if (!required) {\n return null;\n }\n var error = new Error('text diff_match_patch library not found');\n error.diff_match_patch_not_found = true;\n throw error;\n }\n cachedDiffPatch = {\n diff: function(txt1, txt2) {\n return instance.patch_toText(instance.patch_make(txt1, txt2));\n },\n patch: function(txt1, patch) {\n var results = instance.patch_apply(instance.patch_fromText(patch), txt1);\n for (var i = 0; i < results[1].length; i++) {\n if (!results[1][i]) {\n var error = new Error('text patch failed');\n error.textPatchFailed = true;\n }\n }\n return results[0];\n }\n };\n }\n return cachedDiffPatch;\n};\n\nvar diffFilter = function textsDiffFilter(context) {\n if (context.leftType !== 'string') {\n return;\n }\n var minLength = (context.options && context.options.textDiff &&\n context.options.textDiff.minLength) || DEFAULT_MIN_LENGTH;\n if (context.left.length < minLength ||\n context.right.length < minLength) {\n context.setResult([context.left, context.right]).exit();\n return;\n }\n // large text, try to use a text-diff algorithm\n var diffMatchPatch = getDiffMatchPatch();\n if (!diffMatchPatch) {\n // diff-match-patch library not available, fallback to regular string replace\n context.setResult([context.left, context.right]).exit();\n return;\n }\n var diff = diffMatchPatch.diff;\n context.setResult([diff(context.left, context.right), 0, TEXT_DIFF]).exit();\n};\ndiffFilter.filterName = 'texts';\n\nvar patchFilter = function textsPatchFilter(context) {\n if (context.nested) {\n return;\n }\n if (context.delta[2] !== TEXT_DIFF) {\n return;\n }\n\n // text-diff, use a text-patch algorithm\n var patch = getDiffMatchPatch(true).patch;\n context.setResult(patch(context.left, context.delta[0])).exit();\n};\npatchFilter.filterName = 'texts';\n\nvar textDeltaReverse = function(delta) {\n var i, l, lines, line, lineTmp, header = null,\n headerRegex = /^@@ +\\-(\\d+),(\\d+) +\\+(\\d+),(\\d+) +@@$/,\n lineHeader, lineAdd, lineRemove;\n lines = delta.split('\\n');\n for (i = 0, l = lines.length; i < l; i++) {\n line = lines[i];\n var lineStart = line.slice(0, 1);\n if (lineStart === '@') {\n header = headerRegex.exec(line);\n lineHeader = i;\n lineAdd = null;\n lineRemove = null;\n\n // fix header\n lines[lineHeader] = '@@ -' + header[3] + ',' + header[4] + ' +' + header[1] + ',' + header[2] + ' @@';\n } else if (lineStart === '+') {\n lineAdd = i;\n lines[i] = '-' + lines[i].slice(1);\n if (lines[i - 1].slice(0, 1) === '+') {\n // swap lines to keep default order (-+)\n lineTmp = lines[i];\n lines[i] = lines[i - 1];\n lines[i - 1] = lineTmp;\n }\n } else if (lineStart === '-') {\n lineRemove = i;\n lines[i] = '+' + lines[i].slice(1);\n }\n }\n return lines.join('\\n');\n};\n\nvar reverseFilter = function textsReverseFilter(context) {\n if (context.nested) {\n return;\n }\n if (context.delta[2] !== TEXT_DIFF) {\n return;\n }\n\n // text-diff, use a text-diff algorithm\n context.setResult([textDeltaReverse(context.delta[0]), 0, TEXT_DIFF]).exit();\n};\nreverseFilter.filterName = 'texts';\n\nexports.diffFilter = diffFilter;\nexports.patchFilter = patchFilter;\nexports.reverseFilter = reverseFilter;\n","\nvar Pipe = require('../pipe').Pipe;\n\nvar Context = function Context(){\n};\n\nContext.prototype.setResult = function(result) {\n\tthis.result = result;\n\tthis.hasResult = true;\n\treturn this;\n};\n\nContext.prototype.exit = function() {\n\tthis.exiting = true;\n\treturn this;\n};\n\nContext.prototype.switchTo = function(next, pipe) {\n\tif (typeof next === 'string' || next instanceof Pipe) {\n\t\tthis.nextPipe = next;\n\t} else {\n\t\tthis.next = next;\n\t\tif (pipe) {\n\t\t\tthis.nextPipe = pipe;\n\t\t}\n\t}\n\treturn this;\n};\n\nContext.prototype.push = function(child, name) {\n\tchild.parent = this;\n\tif (typeof name !== 'undefined') {\n\t\tchild.childName = name;\n\t}\n\tchild.root = this.root || this;\n\tchild.options = child.options || this.options;\n\tif (!this.children) {\n\t\tthis.children = [child];\n\t\tthis.nextAfterChildren = this.next || null;\n\t\tthis.next = child;\n\t} else {\n\t\tthis.children[this.children.length - 1].next = child;\n\t\tthis.children.push(child);\n\t}\n\tchild.next = this;\n\treturn this;\n};\n\nexports.Context = Context;\n","/*\n\nLCS implementation that supports arrays or strings\n\nreference: http://en.wikipedia.org/wiki/Longest_common_subsequence_problem\n\n*/\n\nvar defaultMatch = function(array1, array2, index1, index2) {\n return array1[index1] === array2[index2];\n};\n\nvar lengthMatrix = function(array1, array2, match, context) {\n var len1 = array1.length;\n var len2 = array2.length;\n var x, y;\n\n // initialize empty matrix of len1+1 x len2+1\n var matrix = [len1 + 1];\n for (x = 0; x < len1 + 1; x++) {\n matrix[x] = [len2 + 1];\n for (y = 0; y < len2 + 1; y++) {\n matrix[x][y] = 0;\n }\n }\n matrix.match = match;\n // save sequence lengths for each coordinate\n for (x = 1; x < len1 + 1; x++) {\n for (y = 1; y < len2 + 1; y++) {\n if (match(array1, array2, x - 1, y - 1, context)) {\n matrix[x][y] = matrix[x - 1][y - 1] + 1;\n } else {\n matrix[x][y] = Math.max(matrix[x - 1][y], matrix[x][y - 1]);\n }\n }\n }\n return matrix;\n};\n\nvar backtrack = function(matrix, array1, array2, index1, index2, context) {\n if (index1 === 0 || index2 === 0) {\n return {\n sequence: [],\n indices1: [],\n indices2: []\n };\n }\n\n if (matrix.match(array1, array2, index1 - 1, index2 - 1, context)) {\n var subsequence = backtrack(matrix, array1, array2, index1 - 1, index2 - 1, context);\n subsequence.sequence.push(array1[index1 - 1]);\n subsequence.indices1.push(index1 - 1);\n subsequence.indices2.push(index2 - 1);\n return subsequence;\n }\n\n if (matrix[index1][index2 - 1] > matrix[index1 - 1][index2]) {\n return backtrack(matrix, array1, array2, index1, index2 - 1, context);\n } else {\n return backtrack(matrix, array1, array2, index1 - 1, index2, context);\n }\n};\n\nvar get = function(array1, array2, match, context) {\n context = context || {};\n var matrix = lengthMatrix(array1, array2, match || defaultMatch, context);\n var result = backtrack(matrix, array1, array2, array1.length, array2.length, context);\n if (typeof array1 === 'string' && typeof array2 === 'string') {\n result.sequence = result.sequence.join('');\n }\n return result;\n};\n\nexports.get = get;\n"]}