Files
react-native-code-push/Examples/CodePushDemoApp/react-packager-cache-5737493143262339187995942fd693ba
2015-08-21 17:09:29 -07:00

1 line
2.3 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/prelude_dev.js":{"data":{"code":"__DEV__ = \ntrue;\n\n\n__BUNDLE_START_TIME__ = Date.now();","sourceCode":"/* eslint global-strict:0 */\n__DEV__ = true;\n\n/* global __BUNDLE_START_TIME__:true */\n__BUNDLE_START_TIME__ = Date.now();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/prelude_dev.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/require.js":{"data":{"code":"(\nfunction(global){\n\n\nif(global.require){\nreturn;}\n\n\nvar __DEV__=global.__DEV__;\n\nvar toString=Object.prototype.toString;\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar modulesMap={},\n\n\n\n\n\n\ndependencyMap={},\n\n\n\npredefinedRefCounts={},\n\n_counter=0,\n\nREQUIRE_WHEN_READY=1,\nUSED_AS_TRANSPORT=2,\n\nhop=Object.prototype.hasOwnProperty;\n\nfunction _debugUnresolvedDependencies(names){\nvar unresolved=Array.prototype.slice.call(names);\nvar visited={};\nvar ii,name,module,dependency;\n\nwhile(unresolved.length) {\nname = unresolved.shift();\nif(visited[name]){\ncontinue;}\n\nvisited[name] = true;\n\nmodule = modulesMap[name];\nif(!module || !module.waiting){\ncontinue;}\n\n\nfor(ii = 0;ii < module.dependencies.length;ii++) {\ndependency = module.dependencies[ii];\nif(!modulesMap[dependency] || modulesMap[dependency].waiting){\nunresolved.push(dependency);}}}\n\n\n\n\nfor(name in visited) if(hop.call(visited,name)){\nunresolved.push(name);}\n\n\nvar messages=[];\nfor(ii = 0;ii < unresolved.length;ii++) {\nname = unresolved[ii];\nvar message=name;\nmodule = modulesMap[name];\nif(!module){\nmessage += ' is not defined';}else \nif(!module.waiting){\nmessage += ' is ready';}else \n{\nvar unresolvedDependencies=[];\nfor(var jj=0;jj < module.dependencies.length;jj++) {\ndependency = module.dependencies[jj];\nif(!modulesMap[dependency] || modulesMap[dependency].waiting){\nunresolvedDependencies.push(dependency);}}\n\n\nmessage += ' is waiting for ' + unresolvedDependencies.join(', ');}\n\nmessages.push(message);}\n\nreturn messages.join('\\n');}\n\n\n\n\n\nfunction ModuleError(msg){\nthis.name = 'ModuleError';\nthis.message = msg;\nthis.stack = Error(msg).stack;\nthis.framesToPop = 2;}\n\nModuleError.prototype = Object.create(Error.prototype);\nModuleError.prototype.constructor = ModuleError;\n\nvar _performance=\nglobal.performance || \nglobal.msPerformance || \nglobal.webkitPerformance || {};\n\nif(!_performance.now){\n_performance = global.Date;}\n\n\nvar _now=_performance?\n_performance.now.bind(_performance):function(){return 0;};\n\nvar _factoryStackCount=0;\nvar _factoryTime=0;\nvar _totalFactories=0;\nvar _inGuard=false;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction require(id){\nvar module=modulesMap[id],dep,i,msg;\nif(module && module.exports){\n\n\nif(module.refcount-- === 1){\ndelete modulesMap[id];}\n\nreturn module.exports;}\n\nif(global.ErrorUtils && !_inGuard){\n_inGuard = true;\ntry{\nvar ret=require.apply(this,arguments);}\ncatch(e) {\nglobal.ErrorUtils.reportFatalError(e);}\n\n_inGuard = false;\nreturn ret;}\n\n\nif(!module){\nmsg = 'Requiring unknown module \"' + id + '\"';\nif(__DEV__){\nmsg += '. If you are sure the module is there, try restarting the packager.';}\n\nthrow new ModuleError(msg);}\n\n\nif(module.hasError){\nthrow new ModuleError(\n'Requiring module \"' + id + '\" which threw an exception');}\n\n\n\nif(module.waiting){\nthrow new ModuleError(\n'Requiring module \"' + id + '\" with unresolved dependencies: ' + \n_debugUnresolvedDependencies([id]));}\n\n\n\nvar exports=module.exports = {};\nvar factory=module.factory;\nif(toString.call(factory) === '[object Function]'){\nvar args=[],\ndependencies=module.dependencies,\nlength=dependencies.length,\nret;\nif(module.special & USED_AS_TRANSPORT){\nlength = Math.min(length,factory.length);}\n\ntry{\nfor(i = 0;args.length < length;i++) {\ndep = dependencies[i];\nif(!module.inlineRequires[dep]){\nargs.push(dep === 'module'?module:\ndep === 'exports'?exports:\nrequire.call(null,dep));}}\n\n\n\n++_totalFactories;\nif(_factoryStackCount++ === 0){\n_factoryTime -= _now();}\n\ntry{\nret = factory.apply(module.context || global,args);}\ncatch(e) {\nif(modulesMap.ex && modulesMap.erx){\n\n\nvar ex=require.call(null,'ex');\nvar erx=require.call(null,'erx');\nvar messageWithParams=erx(e.message);\nif(messageWithParams[0].indexOf(' from module \"%s\"') < 0){\nmessageWithParams[0] += ' from module \"%s\"';\nmessageWithParams[messageWithParams.length] = id;}\n\ne.message = ex.apply(null,messageWithParams);}\n\nthrow e;}finally \n{\nif(--_factoryStackCount === 0){\n_factoryTime += _now();}}}\n\n\ncatch(e) {\nmodule.hasError = true;\nmodule.exports = null;\nthrow e;}\n\nif(ret){\nif(__DEV__){\nif(typeof ret != 'object' && typeof ret != 'function'){\nthrow new ModuleError(\n'Factory for module \"' + id + '\" returned ' + \n'an invalid value \"' + ret + '\". ' + \n'Returned value should be either a function or an object.');}}\n\n\n\nmodule.exports = ret;}}else \n\n{\nmodule.exports = factory;}\n\n\n\n\nif(module.refcount-- === 1){\ndelete modulesMap[id];}\n\nreturn module.exports;}\n\n\nrequire.__getFactoryTime = function(){\nreturn (_factoryStackCount?_now():0) + _factoryTime;};\n\n\nrequire.__getTotalFactories = function(){\nreturn _totalFactories;};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction define(id,dependencies,factory,\n_special,_context,_refCount,_inlineRequires){\nif(dependencies === undefined){\ndependencies = [];\nfactory = id;\nid = _uid();}else \nif(factory === undefined){\nfactory = dependencies;\nif(toString.call(id) === '[object Array]'){\ndependencies = id;\nid = _uid();}else \n{\ndependencies = [];}}\n\n\n\n\n\nvar canceler={cancel:_undefine.bind(this,id)};\n\nvar record=modulesMap[id];\n\n\n\n\n\n\nif(record){\nif(_refCount){\nrecord.refcount += _refCount;}\n\n\nreturn canceler;}else \nif(!dependencies && !factory && _refCount){\n\n\npredefinedRefCounts[id] = (predefinedRefCounts[id] || 0) + _refCount;\nreturn canceler;}else \n{\n\nrecord = {id:id};\nrecord.refcount = (predefinedRefCounts[id] || 0) + (_refCount || 0);\ndelete predefinedRefCounts[id];}\n\n\nif(__DEV__){\nif(\n!factory || \ntypeof factory != 'object' && typeof factory != 'function' && \ntypeof factory != 'string'){\nthrow new ModuleError(\n'Invalid factory \"' + factory + '\" for module \"' + id + '\". ' + \n'Factory should be either a function or an object.');}\n\n\n\nif(toString.call(dependencies) !== '[object Array]'){\nthrow new ModuleError(\n'Invalid dependencies for module \"' + id + '\". ' + \n'Dependencies must be passed as an array.');}}\n\n\n\n\nrecord.factory = factory;\nrecord.dependencies = dependencies;\nrecord.context = _context;\nrecord.special = _special;\nrecord.inlineRequires = _inlineRequires || {};\nrecord.waitingMap = {};\nrecord.waiting = 0;\nrecord.hasError = false;\nmodulesMap[id] = record;\n_initDependencies(id);\n\nreturn canceler;}\n\n\nfunction _undefine(id){\nif(!modulesMap[id]){\nreturn;}\n\n\nvar module=modulesMap[id];\ndelete modulesMap[id];\n\nfor(var dep in module.waitingMap) {\nif(module.waitingMap[dep]){\ndelete dependencyMap[dep][id];}}\n\n\n\nfor(var ii=0;ii < module.dependencies.length;ii++) {\ndep = module.dependencies[ii];\nif(modulesMap[dep]){\nif(modulesMap[dep].refcount-- === 1){\n_undefine(dep);}}else \n\nif(predefinedRefCounts[dep]){\npredefinedRefCounts[dep]--;}}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction requireLazy(dependencies,factory,context){\nreturn define(\ndependencies,\nfactory,\nundefined,\nREQUIRE_WHEN_READY,\ncontext,\n1);}\n\n\n\nfunction _uid(){\nreturn '__mod__' + _counter++;}\n\n\nfunction _addDependency(module,dep){\n\nif(!module.waitingMap[dep] && module.id !== dep){\nmodule.waiting++;\nmodule.waitingMap[dep] = 1;\ndependencyMap[dep] || (dependencyMap[dep] = {});\ndependencyMap[dep][module.id] = 1;}}\n\n\n\nfunction _initDependencies(id){\nvar modulesToRequire=[];\nvar module=modulesMap[id];\nvar dep,i,subdep;\n\n\nfor(i = 0;i < module.dependencies.length;i++) {\ndep = module.dependencies[i];\nif(!modulesMap[dep]){\n_addDependency(module,dep);}else \nif(modulesMap[dep].waiting){\nfor(subdep in modulesMap[dep].waitingMap) {\nif(modulesMap[dep].waitingMap[subdep]){\n_addDependency(module,subdep);}}}}\n\n\n\n\nif(module.waiting === 0 && module.special & REQUIRE_WHEN_READY){\nmodulesToRequire.push(id);}\n\n\n\nif(dependencyMap[id]){\nvar deps=dependencyMap[id];\nvar submodule;\ndependencyMap[id] = undefined;\nfor(dep in deps) {\nsubmodule = modulesMap[dep];\n\n\nfor(subdep in module.waitingMap) {\nif(module.waitingMap[subdep]){\n_addDependency(submodule,subdep);}}\n\n\n\nif(submodule.waitingMap[id]){\nsubmodule.waitingMap[id] = undefined;\nsubmodule.waiting--;}\n\nif(submodule.waiting === 0 && \nsubmodule.special & REQUIRE_WHEN_READY){\nmodulesToRequire.push(dep);}}}\n\n\n\n\n\nfor(i = 0;i < modulesToRequire.length;i++) {\nrequire.call(null,modulesToRequire[i]);}}\n\n\n\nfunction _register(id,exports){\nvar module=modulesMap[id] = {id:id};\nmodule.exports = exports;\nmodule.refcount = 0;}\n\n\n\n\n_register('module',0);\n_register('exports',0);\n\n_register('global',global);\n_register('require',require);\n_register('requireDynamic',require);\n_register('requireLazy',requireLazy);\n\nglobal.require = require;\nglobal.requireDynamic = require;\nglobal.requireLazy = requireLazy;\n\nrequire.__debug = {\nmodules:modulesMap,\ndeps:dependencyMap,\nprintDependencyInfo:function(){\nif(!global.console){\nreturn;}\n\nvar names=Object.keys(require.__debug.deps);\nglobal.console.log(_debugUnresolvedDependencies(names));}};\n\n\n\n\n\n\n\n\n\nglobal.__d = function(id,deps,factory,_special,_inlineRequires){\nvar defaultDeps=['global','require','requireDynamic','requireLazy',\n'module','exports'];\ndefine(id,defaultDeps.concat(deps),factory,_special || USED_AS_TRANSPORT,\nnull,null,_inlineRequires);};})(\n\n\nthis);","sourceCode":"/* eslint global-strict:0,eqeqeq:0,no-bitwise:0,no-undef:0 */\n(function(global) {\n\n // avoid redefining require()\n if (global.require) {\n return;\n }\n\n var __DEV__ = global.__DEV__;\n\n var toString = Object.prototype.toString;\n\n /**\n * module index: {\n * mod1: {\n * exports: { ... },\n * id: 'mod1',\n * dependencies: ['mod1', 'mod2'],\n * factory: function() { ... },\n * waitingMap: { mod1: 1, mod3: 1, mod4: 1 },\n * waiting: 2\n * }\n * }\n */\n var modulesMap = {},\n /**\n * inverse index: {\n * mod1: [modules, waiting for mod1],\n * mod2: [modules, waiting for mod2]\n * }\n */\n dependencyMap = {},\n /**\n * modules whose reference counts are set out of order\n */\n predefinedRefCounts = {},\n\n _counter = 0,\n\n REQUIRE_WHEN_READY = 1,\n USED_AS_TRANSPORT = 2,\n\n hop = Object.prototype.hasOwnProperty;\n\n function _debugUnresolvedDependencies(names) {\n var unresolved = Array.prototype.slice.call(names);\n var visited = {};\n var ii, name, module, dependency;\n\n while (unresolved.length) {\n name = unresolved.shift();\n if (visited[name]) {\n continue;\n }\n visited[name] = true;\n\n module = modulesMap[name];\n if (!module || !module.waiting) {\n continue;\n }\n\n for (ii = 0; ii < module.dependencies.length; ii++) {\n dependency = module.dependencies[ii];\n if (!modulesMap[dependency] || modulesMap[dependency].waiting) {\n unresolved.push(dependency);\n }\n }\n }\n\n for (name in visited) if (hop.call(visited, name)) {\n unresolved.push(name);\n }\n\n var messages = [];\n for (ii = 0; ii < unresolved.length; ii++) {\n name = unresolved[ii];\n var message = name;\n module = modulesMap[name];\n if (!module) {\n message += ' is not defined';\n } else if (!module.waiting) {\n message += ' is ready';\n } else {\n var unresolvedDependencies = [];\n for (var jj = 0; jj < module.dependencies.length; jj++) {\n dependency = module.dependencies[jj];\n if (!modulesMap[dependency] || modulesMap[dependency].waiting) {\n unresolvedDependencies.push(dependency);\n }\n }\n message += ' is waiting for ' + unresolvedDependencies.join(', ');\n }\n messages.push(message);\n }\n return messages.join('\\n');\n }\n\n /**\n * This is mainly for logging in ModuleErrorLogger.\n */\n function ModuleError(msg) {\n this.name = 'ModuleError';\n this.message = msg;\n this.stack = Error(msg).stack;\n this.framesToPop = 2;\n }\n ModuleError.prototype = Object.create(Error.prototype);\n ModuleError.prototype.constructor = ModuleError;\n\n var _performance =\n global.performance ||\n global.msPerformance ||\n global.webkitPerformance || {};\n\n if (!_performance.now) {\n _performance = global.Date;\n }\n\n var _now = _performance ?\n _performance.now.bind(_performance) : function(){ return 0; };\n\n var _factoryStackCount = 0;\n var _factoryTime = 0;\n var _totalFactories = 0;\n var _inGuard = false;\n\n /**\n * The require function conforming to CommonJS spec:\n * http://wiki.commonjs.org/wiki/Modules/1.1.1\n *\n * To define a CommonJS-compliant module add the providesModule\n * Haste header to your file instead of @provides. Your file is going\n * to be executed in a separate context. Every variable/function you\n * define will be local (private) to that module. To export local members\n * use \"exports\" variable or return the exported value at the end of your\n * file. Your code will have access to the \"module\" object.\n * The \"module\" object will have an \"id\" property that is the id of your\n * current module. \"module\" object will also have \"exports\" property that\n * is the same as \"exports\" variable passed into your module context.\n * You can require other modules using their ids.\n *\n * Haste will automatically pick dependencies from require() calls. So\n * you don't have to manually specify @requires in your header.\n *\n * You cannot require() modules from non-CommonJS files. Write a legacy stub\n * (@providesLegacy) and use @requires instead.\n *\n * @example\n *\n * / **\n * * @providesModule math\n * * /\n * exports.add = function() {\n * var sum = 0, i = 0, args = arguments, l = args.length;\n * while (i < l) {\n * sum += args[i++];\n * }\n * return sum;\n * };\n *\n * / **\n * * @providesModule increment\n * * /\n * var add = require('math').add;\n * return function(val) {\n * return add(val, 1);\n * };\n *\n * / **\n * * @providesModule program\n * * /\n * var inc = require('increment');\n * var a = 1;\n * inc(a); // 2\n *\n * module.id == \"program\";\n *\n *\n * @param {String} id\n * @throws when module is not loaded or not ready to be required\n */\n function require(id) {\n var module = modulesMap[id], dep, i, msg;\n if (module && module.exports) {\n // If ref count is 1, this was the last call, so undefine the module.\n // The ref count can be null or undefined, but those are never === 1.\n if (module.refcount-- === 1) {\n delete modulesMap[id];\n }\n return module.exports;\n }\n if (global.ErrorUtils && !_inGuard) {\n _inGuard = true;\n try {\n var ret = require.apply(this, arguments);\n } catch(e) {\n global.ErrorUtils.reportFatalError(e);\n }\n _inGuard = false;\n return ret;\n }\n\n if (!module) {\n msg = 'Requiring unknown module \"' + id + '\"';\n if (__DEV__) {\n msg += '. If you are sure the module is there, try restarting the packager.';\n }\n throw new ModuleError(msg);\n }\n\n if (module.hasError) {\n throw new ModuleError(\n 'Requiring module \"' + id + '\" which threw an exception'\n );\n }\n\n if (module.waiting) {\n throw new ModuleError(\n 'Requiring module \"' + id + '\" with unresolved dependencies: ' +\n _debugUnresolvedDependencies([id])\n );\n }\n\n var exports = module.exports = {};\n var factory = module.factory;\n if (toString.call(factory) === '[object Function]') {\n var args = [],\n dependencies = module.dependencies,\n length = dependencies.length,\n ret;\n if (module.special & USED_AS_TRANSPORT) {\n length = Math.min(length, factory.length);\n }\n try {\n for (i = 0; args.length < length; i++) {\n dep = dependencies[i];\n if (!module.inlineRequires[dep]) {\n args.push(dep === 'module' ? module :\n (dep === 'exports' ? exports :\n require.call(null, dep)));\n }\n }\n\n ++_totalFactories;\n if (_factoryStackCount++ === 0) {\n _factoryTime -= _now();\n }\n try {\n ret = factory.apply(module.context || global, args);\n } catch (e) {\n if (modulesMap.ex && modulesMap.erx) {\n // when ErrorUtils is ready, ex and erx are ready. otherwise, we\n // don't append module id to the error message but still throw it\n var ex = require.call(null, 'ex');\n var erx = require.call(null, 'erx');\n var messageWithParams = erx(e.message);\n if (messageWithParams[0].indexOf(' from module \"%s\"') < 0) {\n messageWithParams[0] += ' from module \"%s\"';\n messageWithParams[messageWithParams.length] = id;\n }\n e.message = ex.apply(null, messageWithParams);\n }\n throw e;\n } finally {\n if (--_factoryStackCount === 0) {\n _factoryTime += _now();\n }\n }\n } catch (e) {\n module.hasError = true;\n module.exports = null;\n throw e;\n }\n if (ret) {\n if (__DEV__) {\n if (typeof ret != 'object' && typeof ret != 'function') {\n throw new ModuleError(\n 'Factory for module \"' + id + '\" returned ' +\n 'an invalid value \"' + ret + '\". ' +\n 'Returned value should be either a function or an object.'\n );\n }\n }\n module.exports = ret;\n }\n } else {\n module.exports = factory;\n }\n\n // If ref count is 1, this was the last call, so undefine the module.\n // The ref count can be null or undefined, but those are never === 1.\n if (module.refcount-- === 1) {\n delete modulesMap[id];\n }\n return module.exports;\n }\n\n require.__getFactoryTime = function() {\n return (_factoryStackCount ? _now() : 0) + _factoryTime;\n };\n\n require.__getTotalFactories = function() {\n return _totalFactories;\n };\n\n /**\n * The define function conforming to CommonJS proposal:\n * http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition\n *\n * define() allows you to explicitly state dependencies of your module\n * in javascript. It's most useful in non-CommonJS files.\n *\n * define() is used internally by haste as a transport for CommonJS\n * modules. So there's no need to use define() if you use providesModule\n *\n * @example\n * / **\n * * @provides alpha\n * * /\n *\n * // Sets up the module with ID of \"alpha\", that uses require,\n * // exports and the module with ID of \"beta\":\n * define(\"alpha\", [\"require\", \"exports\", \"beta\"],\n * function (require, exports, beta) {\n * exports.verb = function() {\n * return beta.verb();\n * //Or:\n * return require(\"beta\").verb();\n * }\n * });\n *\n * / **\n * * @provides alpha\n * * /\n * // An anonymous module could be defined (module id derived from filename)\n * // that returns an object literal:\n *\n * define([\"alpha\"], function (alpha) {\n * return {\n * verb: function(){\n * return alpha.verb() + 2;\n * }\n * };\n * });\n *\n * / **\n * * @provides alpha\n * * /\n * // A dependency-free module can define a direct object literal:\n *\n * define({\n * add: function(x, y){\n * return x + y;\n * }\n * });\n *\n * @param {String} id optional\n * @param {Array} dependencies optional\n * @param {Object|Function} factory\n */\n function define(id, dependencies, factory,\n _special, _context, _refCount, _inlineRequires) {\n if (dependencies === undefined) {\n dependencies = [];\n factory = id;\n id = _uid();\n } else if (factory === undefined) {\n factory = dependencies;\n if (toString.call(id) === '[object Array]') {\n dependencies = id;\n id = _uid();\n } else {\n dependencies = [];\n }\n }\n\n // Non-standard: we allow modules to be undefined. This is designed for\n // temporary modules.\n var canceler = { cancel: _undefine.bind(this, id) };\n\n var record = modulesMap[id];\n\n // Nonstandard hack: we call define with null deps and factory, but a\n // non-null reference count (e.g. define('name', null, null, 0, null, 4))\n // when this module is defined elsewhere and we just need to update the\n // reference count. We use this hack to avoid having to expose another\n // global function to increment ref counts.\n if (record) {\n if (_refCount) {\n record.refcount += _refCount;\n }\n // Calling define() on a pre-existing module does not redefine it\n return canceler;\n } else if (!dependencies && !factory && _refCount) {\n // If this module hasn't been defined yet, store the ref count. We'll use\n // it when the module is defined later.\n predefinedRefCounts[id] = (predefinedRefCounts[id] || 0) + _refCount;\n return canceler;\n } else {\n // Defining a new module\n record = { id: id };\n record.refcount = (predefinedRefCounts[id] || 0) + (_refCount || 0);\n delete predefinedRefCounts[id];\n }\n\n if (__DEV__) {\n if (\n !factory ||\n (typeof factory != 'object' && typeof factory != 'function' &&\n typeof factory != 'string')) {\n throw new ModuleError(\n 'Invalid factory \"' + factory + '\" for module \"' + id + '\". ' +\n 'Factory should be either a function or an object.'\n );\n }\n\n if (toString.call(dependencies) !== '[object Array]') {\n throw new ModuleError(\n 'Invalid dependencies for module \"' + id + '\". ' +\n 'Dependencies must be passed as an array.'\n );\n }\n }\n\n record.factory = factory;\n record.dependencies = dependencies;\n record.context = _context;\n record.special = _special;\n record.inlineRequires = _inlineRequires || {};\n record.waitingMap = {};\n record.waiting = 0;\n record.hasError = false;\n modulesMap[id] = record;\n _initDependencies(id);\n\n return canceler;\n }\n\n function _undefine(id) {\n if (!modulesMap[id]) {\n return;\n }\n\n var module = modulesMap[id];\n delete modulesMap[id];\n\n for (var dep in module.waitingMap) {\n if (module.waitingMap[dep]) {\n delete dependencyMap[dep][id];\n }\n }\n\n for (var ii = 0; ii < module.dependencies.length; ii++) {\n dep = module.dependencies[ii];\n if (modulesMap[dep]) {\n if (modulesMap[dep].refcount-- === 1) {\n _undefine(dep);\n }\n } else if (predefinedRefCounts[dep]) {\n predefinedRefCounts[dep]--;\n }\n // Subtle: we won't account for this one fewer reference if we don't have\n // the dependency's definition or reference count yet.\n }\n }\n\n /**\n * Special version of define that executes the factory as soon as all\n * dependencies are met.\n *\n * define() does just that, defines a module. Module's factory will not be\n * called until required by other module. This makes sense for most of our\n * library modules: we do not want to execute the factory unless it's being\n * used by someone.\n *\n * On the other hand there are modules, that you can call \"entrance points\".\n * You want to run the \"factory\" method for them as soon as all dependencies\n * are met.\n *\n * @example\n *\n * define('BaseClass', [], function() { return ... });\n * // ^^ factory for BaseClass was just stored in modulesMap\n *\n * define('SubClass', ['BaseClass'], function() { ... });\n * // SubClass module is marked as ready (waiting == 0), factory is just\n * // stored\n *\n * define('OtherClass, ['BaseClass'], function() { ... });\n * // OtherClass module is marked as ready (waiting == 0), factory is just\n * // stored\n *\n * requireLazy(['SubClass', 'ChatConfig'],\n * function() { ... });\n * // ChatRunner is waiting for ChatConfig to come\n *\n * define('ChatConfig', [], { foo: 'bar' });\n * // at this point ChatRunner is marked as ready, and its factory\n * // executed + all dependent factories are executed too: BaseClass,\n * // SubClass, ChatConfig notice that OtherClass's factory won't be\n * // executed unless explicitly required by someone\n *\n * @param {Array} dependencies\n * @param {Object|Function} factory\n */\n function requireLazy(dependencies, factory, context) {\n return define(\n dependencies,\n factory,\n undefined,\n REQUIRE_WHEN_READY,\n context,\n 1\n );\n }\n\n function _uid() {\n return '__mod__' + _counter++;\n }\n\n function _addDependency(module, dep) {\n // do not add duplicate dependencies and circ deps\n if (!module.waitingMap[dep] && module.id !== dep) {\n module.waiting++;\n module.waitingMap[dep] = 1;\n dependencyMap[dep] || (dependencyMap[dep] = {});\n dependencyMap[dep][module.id] = 1;\n }\n }\n\n function _initDependencies(id) {\n var modulesToRequire = [];\n var module = modulesMap[id];\n var dep, i, subdep;\n\n // initialize id's waitingMap\n for (i = 0; i < module.dependencies.length; i++) {\n dep = module.dependencies[i];\n if (!modulesMap[dep]) {\n _addDependency(module, dep);\n } else if (modulesMap[dep].waiting) {\n for (subdep in modulesMap[dep].waitingMap) {\n if (modulesMap[dep].waitingMap[subdep]) {\n _addDependency(module, subdep);\n }\n }\n }\n }\n if (module.waiting === 0 && module.special & REQUIRE_WHEN_READY) {\n modulesToRequire.push(id);\n }\n\n // update modules depending on id\n if (dependencyMap[id]) {\n var deps = dependencyMap[id];\n var submodule;\n dependencyMap[id] = undefined;\n for (dep in deps) {\n submodule = modulesMap[dep];\n\n // add all deps of id\n for (subdep in module.waitingMap) {\n if (module.waitingMap[subdep]) {\n _addDependency(submodule, subdep);\n }\n }\n // remove id itself\n if (submodule.waitingMap[id]) {\n submodule.waitingMap[id] = undefined;\n submodule.waiting--;\n }\n if (submodule.waiting === 0 &&\n submodule.special & REQUIRE_WHEN_READY) {\n modulesToRequire.push(dep);\n }\n }\n }\n\n // run everything that's ready\n for (i = 0; i < modulesToRequire.length; i++) {\n require.call(null, modulesToRequire[i]);\n }\n }\n\n function _register(id, exports) {\n var module = modulesMap[id] = { id: id };\n module.exports = exports;\n module.refcount = 0;\n }\n\n // pseudo name used in common-require\n // see require() function for more info\n _register('module', 0);\n _register('exports', 0);\n\n _register('global', global);\n _register('require', require);\n _register('requireDynamic', require);\n _register('requireLazy', requireLazy);\n\n global.require = require;\n global.requireDynamic = require;\n global.requireLazy = requireLazy;\n\n require.__debug = {\n modules: modulesMap,\n deps: dependencyMap,\n printDependencyInfo: function() {\n if (!global.console) {\n return;\n }\n var names = Object.keys(require.__debug.deps);\n global.console.log(_debugUnresolvedDependencies(names));\n }\n };\n\n /**\n * All @providesModule files are wrapped by this function by makehaste. It\n * is a convenience function around define() that prepends a bunch of required\n * modules (global, require, module, etc) so that we don't have to spit that\n * out for every module which would be a lot of extra bytes.\n */\n global.__d = function(id, deps, factory, _special, _inlineRequires) {\n var defaultDeps = ['global', 'require', 'requireDynamic', 'requireLazy',\n 'module', 'exports'];\n define(id, defaultDeps.concat(deps), factory, _special || USED_AS_TRANSPORT,\n null, null, _inlineRequires);\n };\n\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/require.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/polyfills.js":{"data":{"code":"Object.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nassign = function(target,sources){\nif(__DEV__){\nif(target == null){\nthrow new TypeError('Object.assign target cannot be null or undefined');}\n\nif(typeof target !== 'object' && typeof target !== 'function'){\nthrow new TypeError(\n'In this environment the target of assign MUST be an object.' + \n'This error is a performance optimization and not spec compliant.');}}\n\n\n\n\nfor(var nextIndex=1;nextIndex < arguments.length;nextIndex++) {\nvar nextSource=arguments[nextIndex];\nif(nextSource == null){\ncontinue;}\n\n\nif(__DEV__){\nif(typeof nextSource !== 'object' && \ntypeof nextSource !== 'function'){\nthrow new TypeError(\n'In this environment the target of assign MUST be an object.' + \n'This error is a performance optimization and not spec compliant.');}}\n\n\n\n\n\n\n\n\nfor(var key in nextSource) {\nif(__DEV__){\nvar hasOwnProperty=Object.prototype.hasOwnProperty;\nif(!hasOwnProperty.call(nextSource,key)){\nthrow new TypeError(\n'One of the sources to assign has an enumerable key on the ' + \n'prototype chain. This is an edge case that we do not support. ' + \n'This error is a performance optimization and not spec compliant.');}}\n\n\n\ntarget[key] = nextSource[key];}}\n\n\n\nreturn target;};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * This pipes all of our console logging functions to native logging so that\n * JavaScript errors in required modules show up in Xcode via NSLog.\n *\n * @provides Object.es6\n * @polyfill\n */\n\n// WARNING: This is an optimized version that fails on hasOwnProperty checks\n// and non objects. It's not spec-compliant. It's a perf optimization.\n/* eslint global-strict:0 */\nObject.assign = function(target, sources) {\n if (__DEV__) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n if (typeof target !== 'object' && typeof target !== 'function') {\n throw new TypeError(\n 'In this environment the target of assign MUST be an object.' +\n 'This error is a performance optimization and not spec compliant.'\n );\n }\n }\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n if (__DEV__) {\n if (typeof nextSource !== 'object' &&\n typeof nextSource !== 'function') {\n throw new TypeError(\n 'In this environment the target of assign MUST be an object.' +\n 'This error is a performance optimization and not spec compliant.'\n );\n }\n }\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects.\n\n for (var key in nextSource) {\n if (__DEV__) {\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n if (!hasOwnProperty.call(nextSource, key)) {\n throw new TypeError(\n 'One of the sources to assign has an enumerable key on the ' +\n 'prototype chain. This is an edge case that we do not support. ' +\n 'This error is a performance optimization and not spec compliant.'\n );\n }\n }\n target[key] = nextSource[key];\n }\n }\n\n return target;\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/polyfills.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/console.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(global){\n'use strict';\n\nvar inspect=(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction inspect(obj,opts){\nvar ctx={\nseen:[],\nstylize:stylizeNoColor};\n\nreturn formatValue(ctx,obj,opts.depth);}\n\n\nfunction stylizeNoColor(str,styleType){\nreturn str;}\n\n\nfunction arrayToHash(array){\nvar hash={};\n\narray.forEach(function(val,idx){\nhash[val] = true;});\n\n\nreturn hash;}\n\n\n\nfunction formatValue(ctx,value,recurseTimes){\n\nvar primitive=formatPrimitive(ctx,value);\nif(primitive){\nreturn primitive;}\n\n\n\nvar keys=Object.keys(value);\nvar visibleKeys=arrayToHash(keys);\n\n\n\nif(isError(value) && (\nkeys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)){\nreturn formatError(value);}\n\n\n\nif(keys.length === 0){\nif(isFunction(value)){\nvar name=value.name?': ' + value.name:'';\nreturn ctx.stylize('[Function' + name + ']','special');}\n\nif(isRegExp(value)){\nreturn ctx.stylize(RegExp.prototype.toString.call(value),'regexp');}\n\nif(isDate(value)){\nreturn ctx.stylize(Date.prototype.toString.call(value),'date');}\n\nif(isError(value)){\nreturn formatError(value);}}\n\n\n\nvar base='',array=false,braces=['{','}'];\n\n\nif(isArray(value)){\narray = true;\nbraces = ['[',']'];}\n\n\n\nif(isFunction(value)){\nvar n=value.name?': ' + value.name:'';\nbase = ' [Function' + n + ']';}\n\n\n\nif(isRegExp(value)){\nbase = ' ' + RegExp.prototype.toString.call(value);}\n\n\n\nif(isDate(value)){\nbase = ' ' + Date.prototype.toUTCString.call(value);}\n\n\n\nif(isError(value)){\nbase = ' ' + formatError(value);}\n\n\nif(keys.length === 0 && (!array || value.length == 0)){\nreturn braces[0] + base + braces[1];}\n\n\nif(recurseTimes < 0){\nif(isRegExp(value)){\nreturn ctx.stylize(RegExp.prototype.toString.call(value),'regexp');}else \n{\nreturn ctx.stylize('[Object]','special');}}\n\n\n\nctx.seen.push(value);\n\nvar output;\nif(array){\noutput = formatArray(ctx,value,recurseTimes,visibleKeys,keys);}else \n{\noutput = keys.map(function(key){\nreturn formatProperty(ctx,value,recurseTimes,visibleKeys,key,array);});}\n\n\n\nctx.seen.pop();\n\nreturn reduceToSingleString(output,base,braces);}\n\n\n\nfunction formatPrimitive(ctx,value){\nif(isUndefined(value))\nreturn ctx.stylize('undefined','undefined');\nif(isString(value)){\nvar simple='\\'' + JSON.stringify(value).replace(/^\"|\"$/g,'').\nreplace(/'/g,\"\\\\'\").\nreplace(/\\\\\"/g,'\"') + '\\'';\nreturn ctx.stylize(simple,'string');}\n\nif(isNumber(value))\nreturn ctx.stylize('' + value,'number');\nif(isBoolean(value))\nreturn ctx.stylize('' + value,'boolean');\n\nif(isNull(value))\nreturn ctx.stylize('null','null');}\n\n\n\nfunction formatError(value){\nreturn '[' + Error.prototype.toString.call(value) + ']';}\n\n\n\nfunction formatArray(ctx,value,recurseTimes,visibleKeys,keys){\nvar output=[];\nfor(var i=0,l=value.length;i < l;++i) {\nif(hasOwnProperty(value,String(i))){\noutput.push(formatProperty(ctx,value,recurseTimes,visibleKeys,\nString(i),true));}else \n{\noutput.push('');}}\n\n\nkeys.forEach(function(key){\nif(!key.match(/^\\d+$/)){\noutput.push(formatProperty(ctx,value,recurseTimes,visibleKeys,\nkey,true));}});\n\n\nreturn output;}\n\n\n\nfunction formatProperty(ctx,value,recurseTimes,visibleKeys,key,array){\nvar name,str,desc;\ndesc = Object.getOwnPropertyDescriptor(value,key) || {value:value[key]};\nif(desc.get){\nif(desc.set){\nstr = ctx.stylize('[Getter/Setter]','special');}else \n{\nstr = ctx.stylize('[Getter]','special');}}else \n\n{\nif(desc.set){\nstr = ctx.stylize('[Setter]','special');}}\n\n\nif(!hasOwnProperty(visibleKeys,key)){\nname = '[' + key + ']';}\n\nif(!str){\nif(ctx.seen.indexOf(desc.value) < 0){\nif(isNull(recurseTimes)){\nstr = formatValue(ctx,desc.value,null);}else \n{\nstr = formatValue(ctx,desc.value,recurseTimes - 1);}\n\nif(str.indexOf('\\n') > -1){\nif(array){\nstr = str.split('\\n').map(function(line){\nreturn ' ' + line;}).\njoin('\\n').substr(2);}else \n{\nstr = '\\n' + str.split('\\n').map(function(line){\nreturn ' ' + line;}).\njoin('\\n');}}}else \n\n\n{\nstr = ctx.stylize('[Circular]','special');}}\n\n\nif(isUndefined(name)){\nif(array && key.match(/^\\d+$/)){\nreturn str;}\n\nname = JSON.stringify('' + key);\nif(name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)){\nname = name.substr(1,name.length - 2);\nname = ctx.stylize(name,'name');}else \n{\nname = name.replace(/'/g,\"\\\\'\").\nreplace(/\\\\\"/g,'\"').\nreplace(/(^\"|\"$)/g,\"'\");\nname = ctx.stylize(name,'string');}}\n\n\n\nreturn name + ': ' + str;}\n\n\n\nfunction reduceToSingleString(output,base,braces){\nvar numLinesEst=0;\nvar length=output.reduce(function(prev,cur){\nnumLinesEst++;\nif(cur.indexOf('\\n') >= 0)numLinesEst++;\nreturn prev + cur.replace(/\\u001b\\[\\d\\d?m/g,'').length + 1;},\n0);\n\nif(length > 60){\nreturn braces[0] + (\nbase === ''?'':base + '\\n ') + \n' ' + \noutput.join(',\\n ') + \n' ' + \nbraces[1];}\n\n\nreturn braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];}\n\n\n\n\n\nfunction isArray(ar){\nreturn Array.isArray(ar);}\n\n\nfunction isBoolean(arg){\nreturn typeof arg === 'boolean';}\n\n\nfunction isNull(arg){\nreturn arg === null;}\n\n\nfunction isNullOrUndefined(arg){\nreturn arg == null;}\n\n\nfunction isNumber(arg){\nreturn typeof arg === 'number';}\n\n\nfunction isString(arg){\nreturn typeof arg === 'string';}\n\n\nfunction isSymbol(arg){\nreturn typeof arg === 'symbol';}\n\n\nfunction isUndefined(arg){\nreturn arg === void 0;}\n\n\nfunction isRegExp(re){\nreturn isObject(re) && objectToString(re) === '[object RegExp]';}\n\n\nfunction isObject(arg){\nreturn typeof arg === 'object' && arg !== null;}\n\n\nfunction isDate(d){\nreturn isObject(d) && objectToString(d) === '[object Date]';}\n\n\nfunction isError(e){\nreturn isObject(e) && (\nobjectToString(e) === '[object Error]' || e instanceof Error);}\n\n\nfunction isFunction(arg){\nreturn typeof arg === 'function';}\n\n\nfunction isPrimitive(arg){\nreturn arg === null || \ntypeof arg === 'boolean' || \ntypeof arg === 'number' || \ntypeof arg === 'string' || \ntypeof arg === 'symbol' || \ntypeof arg === 'undefined';}\n\n\nfunction objectToString(o){\nreturn Object.prototype.toString.call(o);}\n\n\nfunction hasOwnProperty(obj,prop){\nreturn Object.prototype.hasOwnProperty.call(obj,prop);}\n\n\nreturn inspect;})();\n\n\n\nvar OBJECT_COLUMN_NAME='(index)';\nvar LOG_LEVELS={\ntrace:0,\nlog:1,\ninfo:2,\nwarn:3,\nerror:4};\n\n\nfunction setupConsole(global){\nif(!global.nativeLoggingHook){\nreturn;}\n\n\nfunction getNativeLogFunction(level){\nreturn function(){\nvar str=Array.prototype.map.call(arguments,function(arg){\nreturn inspect(arg,{depth:10});}).\njoin(', ');\nglobal.nativeLoggingHook(str,level);};}\n\n\n\nvar repeat=function(element,n){\nreturn Array.apply(null,Array(n)).map(function(){return element;});};\n\n\nfunction consoleTablePolyfill(rows){\n\nif(!Array.isArray(rows)){\nvar data=rows;\nrows = [];\nfor(var key in data) {\nif(data.hasOwnProperty(key)){\nvar row=data[key];\nrow[OBJECT_COLUMN_NAME] = key;\nrows.push(row);}}}\n\n\n\nif(rows.length === 0){\nglobal.nativeLoggingHook('',LOG_LEVELS.log);\nreturn;}\n\n\nvar columns=Object.keys(rows[0]).sort();\nvar stringRows=[];\nvar columnWidths=[];\n\n\n\ncolumns.forEach(function(k,i){\ncolumnWidths[i] = k.length;\nfor(var j=0;j < rows.length;j++) {\nvar cellStr=rows[j][k].toString();\nstringRows[j] = stringRows[j] || [];\nstringRows[j][i] = cellStr;\ncolumnWidths[i] = Math.max(columnWidths[i],cellStr.length);}});\n\n\n\n\n\nvar joinRow=function(row,space){\nvar cells=row.map(function(cell,i){\nvar extraSpaces=repeat(' ',columnWidths[i] - cell.length).join('');\nreturn cell + extraSpaces;});\n\nspace = space || ' ';\nreturn cells.join(space + '|' + space);};\n\n\nvar separators=columnWidths.map(function(columnWidth){\nreturn repeat('-',columnWidth).join('');});\n\nvar separatorRow=joinRow(separators,'-');\nvar header=joinRow(columns);\nvar table=[header,separatorRow];\n\nfor(var i=0;i < rows.length;i++) {\ntable.push(joinRow(stringRows[i]));}\n\n\n\n\n\n\nglobal.nativeLoggingHook('\\n' + table.join('\\n'),LOG_LEVELS.log);}\n\n\nglobal.console = {\nerror:getNativeLogFunction(LOG_LEVELS.error),\ninfo:getNativeLogFunction(LOG_LEVELS.info),\nlog:getNativeLogFunction(LOG_LEVELS.log),\nwarn:getNativeLogFunction(LOG_LEVELS.warn),\ntrace:getNativeLogFunction(LOG_LEVELS.trace),\ntable:consoleTablePolyfill};}\n\n\n\n\nif(typeof module !== 'undefined'){\nmodule.exports = setupConsole;}else \n{\nsetupConsole(global);}})(\n\n\nthis);","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * This pipes all of our console logging functions to native logging so that\n * JavaScript errors in required modules show up in Xcode via NSLog.\n *\n * @provides console\n * @polyfill\n * @nolint\n */\n\n(function(global) {\n 'use strict';\n\n var inspect = (function() {\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n //\n // https://github.com/joyent/node/blob/master/lib/util.js\n\n function inspect(obj, opts) {\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n return formatValue(ctx, obj, opts.depth);\n }\n\n function stylizeNoColor(str, styleType) {\n return str;\n }\n\n function arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n }\n\n\n function formatValue(ctx, value, recurseTimes) {\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n }\n\n\n function formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n }\n\n\n function formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n }\n\n\n function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n }\n\n\n function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n }\n\n\n function reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n }\n\n\n // NOTE: These type checking functions intentionally don't use `instanceof`\n // because it is fragile and can be easily faked with `Object.create()`.\n function isArray(ar) {\n return Array.isArray(ar);\n }\n\n function isBoolean(arg) {\n return typeof arg === 'boolean';\n }\n\n function isNull(arg) {\n return arg === null;\n }\n\n function isNullOrUndefined(arg) {\n return arg == null;\n }\n\n function isNumber(arg) {\n return typeof arg === 'number';\n }\n\n function isString(arg) {\n return typeof arg === 'string';\n }\n\n function isSymbol(arg) {\n return typeof arg === 'symbol';\n }\n\n function isUndefined(arg) {\n return arg === void 0;\n }\n\n function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n }\n\n function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n }\n\n function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n }\n\n function isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n }\n\n function isFunction(arg) {\n return typeof arg === 'function';\n }\n\n function isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n }\n\n function objectToString(o) {\n return Object.prototype.toString.call(o);\n }\n\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n return inspect;\n })();\n\n\n var OBJECT_COLUMN_NAME = '(index)';\n var LOG_LEVELS = {\n trace: 0,\n log: 1,\n info: 2,\n warn: 3,\n error: 4\n };\n\n function setupConsole(global) {\n if (!global.nativeLoggingHook) {\n return;\n }\n\n function getNativeLogFunction(level) {\n return function() {\n var str = Array.prototype.map.call(arguments, function(arg) {\n return inspect(arg, {depth: 10});\n }).join(', ');\n global.nativeLoggingHook(str, level);\n };\n }\n\n var repeat = function(element, n) {\n return Array.apply(null, Array(n)).map(function() { return element; });\n };\n\n function consoleTablePolyfill(rows) {\n // convert object -> array\n if (!Array.isArray(rows)) {\n var data = rows;\n rows = [];\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n var row = data[key];\n row[OBJECT_COLUMN_NAME] = key;\n rows.push(row);\n }\n }\n }\n if (rows.length === 0) {\n global.nativeLoggingHook('', LOG_LEVELS.log);\n return;\n }\n\n var columns = Object.keys(rows[0]).sort();\n var stringRows = [];\n var columnWidths = [];\n\n // Convert each cell to a string. Also\n // figure out max cell width for each column\n columns.forEach(function(k, i) {\n columnWidths[i] = k.length;\n for (var j = 0; j < rows.length; j++) {\n var cellStr = rows[j][k].toString();\n stringRows[j] = stringRows[j] || [];\n stringRows[j][i] = cellStr;\n columnWidths[i] = Math.max(columnWidths[i], cellStr.length);\n }\n });\n\n // Join all elements in the row into a single string with | separators\n // (appends extra spaces to each cell to make separators | alligned)\n var joinRow = function(row, space) {\n var cells = row.map(function(cell, i) {\n var extraSpaces = repeat(' ', columnWidths[i] - cell.length).join('');\n return cell + extraSpaces;\n });\n space = space || ' ';\n return cells.join(space + '|' + space);\n };\n\n var separators = columnWidths.map(function(columnWidth) {\n return repeat('-', columnWidth).join('');\n });\n var separatorRow = joinRow(separators, '-');\n var header = joinRow(columns);\n var table = [header, separatorRow];\n\n for (var i = 0; i < rows.length; i++) {\n table.push(joinRow(stringRows[i]));\n }\n\n // Notice extra empty line at the beginning.\n // Native logging hook adds \"RCTLog >\" at the front of every\n // logged string, which would shift the header and screw up\n // the table\n global.nativeLoggingHook('\\n' + table.join('\\n'), LOG_LEVELS.log);\n }\n\n global.console = {\n error: getNativeLogFunction(LOG_LEVELS.error),\n info: getNativeLogFunction(LOG_LEVELS.info),\n log: getNativeLogFunction(LOG_LEVELS.log),\n warn: getNativeLogFunction(LOG_LEVELS.warn),\n trace: getNativeLogFunction(LOG_LEVELS.trace),\n table: consoleTablePolyfill\n };\n\n }\n\n if (typeof module !== 'undefined') {\n module.exports = setupConsole;\n } else {\n setupConsole(global);\n }\n\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/console.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/error-guard.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(global){\nvar ErrorUtils={\n_inGuard:0,\n_globalHandler:null,\nsetGlobalHandler:function(fun){\nErrorUtils._globalHandler = fun;},\n\nreportError:function(error){\nErrorUtils._globalHandler && ErrorUtils._globalHandler(error);},\n\nreportFatalError:function(error){\nErrorUtils._globalHandler && ErrorUtils._globalHandler(error,true);},\n\napplyWithGuard:function(fun,context,args){\ntry{\nErrorUtils._inGuard++;\nreturn fun.apply(context,args);}\ncatch(e) {\nErrorUtils.reportError(e);}finally \n{\nErrorUtils._inGuard--;}},\n\n\napplyWithGuardIfNeeded:function(fun,context,args){\nif(ErrorUtils.inGuard()){\nreturn fun.apply(context,args);}else \n{\nErrorUtils.applyWithGuard(fun,context,args);}},\n\n\ninGuard:function(){\nreturn ErrorUtils._inGuard;},\n\nguard:function(fun,name,context){\nif(typeof fun !== 'function'){\nconsole.warn('A function must be passed to ErrorUtils.guard, got ',fun);\nreturn null;}\n\nname = name || fun.name || '<generated guard>';\nfunction guarded(){\nreturn (\nErrorUtils.applyWithGuard(\nfun,\ncontext || this,\narguments,\nnull,\nname));}\n\n\n\n\nreturn guarded;}};\n\n\nglobal.ErrorUtils = ErrorUtils;\n\n\n\n\n\nfunction setupErrorGuard(){\nvar onError=function(e){\nglobal.console.error(\n'Error: ' + \n'\\n stack: ' + e.stack + \n'\\n line: ' + e.line + \n'\\n message: ' + e.message,\ne);};\n\n\nglobal.ErrorUtils.setGlobalHandler(onError);}\n\n\nsetupErrorGuard();})(\nthis);","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n */\n/* eslint global-strict:0 */\n(function(global) {\n var ErrorUtils = {\n _inGuard: 0,\n _globalHandler: null,\n setGlobalHandler: function(fun) {\n ErrorUtils._globalHandler = fun;\n },\n reportError: function(error) {\n ErrorUtils._globalHandler && ErrorUtils._globalHandler(error);\n },\n reportFatalError: function(error) {\n ErrorUtils._globalHandler && ErrorUtils._globalHandler(error, true);\n },\n applyWithGuard: function(fun, context, args) {\n try {\n ErrorUtils._inGuard++;\n return fun.apply(context, args);\n } catch (e) {\n ErrorUtils.reportError(e);\n } finally {\n ErrorUtils._inGuard--;\n }\n },\n applyWithGuardIfNeeded: function(fun, context, args) {\n if (ErrorUtils.inGuard()) {\n return fun.apply(context, args);\n } else {\n ErrorUtils.applyWithGuard(fun, context, args);\n }\n },\n inGuard: function() {\n return ErrorUtils._inGuard;\n },\n guard: function(fun, name, context) {\n if (typeof fun !== 'function') {\n console.warn('A function must be passed to ErrorUtils.guard, got ', fun);\n return null;\n }\n name = name || fun.name || '<generated guard>';\n function guarded() {\n return (\n ErrorUtils.applyWithGuard(\n fun,\n context || this,\n arguments,\n null,\n name\n )\n );\n }\n\n return guarded;\n }\n };\n global.ErrorUtils = ErrorUtils;\n\n /**\n * This is the error handler that is called when we encounter an exception\n * when loading a module.\n */\n function setupErrorGuard() {\n var onError = function(e) {\n global.console.error(\n 'Error: ' +\n '\\n stack: ' + e.stack +\n '\\n line: ' + e.line +\n '\\n message: ' + e.message,\n e\n );\n };\n global.ErrorUtils.setGlobalHandler(onError);\n }\n\n setupErrorGuard();\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/error-guard.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/String.prototype.es6.js":{"data":{"code":"if(\n\n\n\n\n\n\n\n\n\n\n\n!String.prototype.startsWith){\nString.prototype.startsWith = function(search){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\nvar pos=arguments.length > 1?\nNumber(arguments[1]) || 0:0;\nvar start=Math.min(Math.max(pos,0),string.length);\nreturn string.indexOf(String(search),pos) === start;};}\n\n\n\nif(!String.prototype.endsWith){\nString.prototype.endsWith = function(search){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\nvar stringLength=string.length;\nvar searchString=String(search);\nvar pos=arguments.length > 1?\nNumber(arguments[1]) || 0:stringLength;\nvar end=Math.min(Math.max(pos,0),stringLength);\nvar start=end - searchString.length;\nif(start < 0){\nreturn false;}\n\nreturn string.lastIndexOf(searchString,start) === start;};}\n\n\n\nif(!String.prototype.contains){\nString.prototype.contains = function(search){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\nvar pos=arguments.length > 1?\nNumber(arguments[1]) || 0:0;\nreturn string.indexOf(String(search),pos) !== -1;};}\n\n\n\nif(!String.prototype.repeat){\nString.prototype.repeat = function(count){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\ncount = Number(count) || 0;\nif(count < 0 || count === Infinity){\nthrow RangeError();}\n\nif(count === 1){\nreturn string;}\n\nvar result='';\nwhile(count) {\nif(count & 1){\nresult += string;}\n\nif(count >>= 1){\nstring += string;}}\n\n\nreturn result;};}","sourceCode":"/**\n * @provides String.prototype.es6\n * @polyfill\n */\n\n/*eslint global-strict:0, no-extend-native:0, no-bitwise:0 */\n/*jshint bitwise:false*/\n\n/*\n * NOTE: We use (Number(x) || 0) to replace NaN values with zero.\n */\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var pos = arguments.length > 1 ?\n (Number(arguments[1]) || 0) : 0;\n var start = Math.min(Math.max(pos, 0), string.length);\n return string.indexOf(String(search), pos) === start;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var stringLength = string.length;\n var searchString = String(search);\n var pos = arguments.length > 1 ?\n (Number(arguments[1]) || 0) : stringLength;\n var end = Math.min(Math.max(pos, 0), stringLength);\n var start = end - searchString.length;\n if (start < 0) {\n return false;\n }\n return string.lastIndexOf(searchString, start) === start;\n };\n}\n\nif (!String.prototype.contains) {\n String.prototype.contains = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var pos = arguments.length > 1 ?\n (Number(arguments[1]) || 0) : 0;\n return string.indexOf(String(search), pos) !== -1;\n };\n}\n\nif (!String.prototype.repeat) {\n String.prototype.repeat = function(count) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n count = Number(count) || 0;\n if (count < 0 || count === Infinity) {\n throw RangeError();\n }\n if (count === 1) {\n return string;\n }\n var result = '';\n while (count) {\n if (count & 1) {\n result += string;\n }\n if ((count >>= 1)) {\n string += string;\n }\n }\n return result;\n };\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/String.prototype.es6.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/Array.prototype.es6.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\nfunction(undefined){\n\nfunction findIndex(predicate,context){\nif(this == null){\nthrow new TypeError(\n'Array.prototype.findIndex called on null or undefined');}\n\n\nif(typeof predicate !== 'function'){\nthrow new TypeError('predicate must be a function');}\n\nvar list=Object(this);\nvar length=list.length >>> 0;\nfor(var i=0;i < length;i++) {\nif(predicate.call(context,list[i],i,list)){\nreturn i;}}\n\n\nreturn -1;}\n\n\nif(!Array.prototype.findIndex){\nObject.defineProperty(Array.prototype,'findIndex',{\nenumerable:false,\nwritable:true,\nconfigurable:true,\nvalue:findIndex});}\n\n\n\n\nif(!Array.prototype.find){\nObject.defineProperty(Array.prototype,'find',{\nenumerable:false,\nwritable:true,\nconfigurable:true,\nvalue:function(predicate,context){\nif(this == null){\nthrow new TypeError(\n'Array.prototype.find called on null or undefined');}\n\n\nvar index=findIndex.call(this,predicate,context);\nreturn index === -1?undefined:this[index];}});}})();","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @provides Array.prototype.es6\n * @polyfill\n */\n\n/*eslint-disable */\n/*jslint bitwise: true */\n\n(function(undefined) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\n function findIndex(predicate, context) {\n if (this == null) {\n throw new TypeError(\n 'Array.prototype.findIndex called on null or undefined'\n );\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n for (var i = 0; i < length; i++) {\n if (predicate.call(context, list[i], i, list)) {\n return i;\n }\n }\n return -1;\n }\n\n if (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, 'findIndex', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: findIndex\n });\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n if (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, 'find', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: function(predicate, context) {\n if (this == null) {\n throw new TypeError(\n 'Array.prototype.find called on null or undefined'\n );\n }\n var index = findIndex.call(this, predicate, context);\n return index === -1 ? undefined : this[index];\n }\n });\n }\n})();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/Array.prototype.es6.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/Libraries/JavaScriptAppEngine/polyfills/document.js":{"data":{"code":"(\nfunction(GLOBAL){\n\n\n\n\n\n\n\nfunction getInvalidGlobalUseError(name){\nreturn new Error(\n'You are trying to render the global ' + name + ' variable as a ' + \n'React element. You probably forgot to require ' + name + '.');}\n\n\nGLOBAL.Text = {\nget defaultProps(){\nthrow getInvalidGlobalUseError('Text');}};\n\n\nGLOBAL.Image = {\nget defaultProps(){\nthrow getInvalidGlobalUseError('Image');}};\n\n\n\nif(GLOBAL.document){\nGLOBAL.document.createElement = null;}\n\n\n\n\nGLOBAL.MutationObserver = undefined;})(\nthis);","sourceCode":"/* eslint global-strict: 0 */\n(function(GLOBAL) {\n /**\n * The document must be shimmed before anything else that might define the\n * `ExecutionEnvironment` module (which checks for `document.createElement`).\n */\n\n // The browser defines Text and Image globals by default. If you forget to\n // require them, then the error message is very confusing.\n function getInvalidGlobalUseError(name) {\n return new Error(\n 'You are trying to render the global ' + name + ' variable as a ' +\n 'React element. You probably forgot to require ' + name + '.'\n );\n }\n GLOBAL.Text = {\n get defaultProps() {\n throw getInvalidGlobalUseError('Text');\n }\n };\n GLOBAL.Image = {\n get defaultProps() {\n throw getInvalidGlobalUseError('Image');\n }\n };\n // Force `ExecutionEnvironment.canUseDOM` to be false.\n if (GLOBAL.document) {\n GLOBAL.document.createElement = null;\n }\n\n // There is no DOM so MutationObserver doesn't make sense. It is used\n // as feature detection in Bluebird Promise implementation\n GLOBAL.MutationObserver = undefined;\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/Libraries/JavaScriptAppEngine/polyfills/document.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/react-native/react-native.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNative=Object.assign(Object.create(require('React')),{\n\nActivityIndicatorIOS:require('ActivityIndicatorIOS'),\nDatePickerIOS:require('DatePickerIOS'),\nImage:require('Image'),\nListView:require('ListView'),\nMapView:require('MapView'),\nNavigator:require('Navigator'),\nNavigatorIOS:require('NavigatorIOS'),\nPickerIOS:require('PickerIOS'),\nProgressViewIOS:require('ProgressViewIOS'),\nScrollView:require('ScrollView'),\nSegmentedControlIOS:require('SegmentedControlIOS'),\nSliderIOS:require('SliderIOS'),\nSwitchIOS:require('SwitchIOS'),\nTabBarIOS:require('TabBarIOS'),\nText:require('Text'),\nTextInput:require('TextInput'),\nTouchableHighlight:require('TouchableHighlight'),\nTouchableOpacity:require('TouchableOpacity'),\nTouchableWithoutFeedback:require('TouchableWithoutFeedback'),\nView:require('View'),\nWebView:require('WebView'),\n\n\nActionSheetIOS:require('ActionSheetIOS'),\nAdSupportIOS:require('AdSupportIOS'),\nAlertIOS:require('AlertIOS'),\nAnimated:require('Animated'),\nAppRegistry:require('AppRegistry'),\nAppStateIOS:require('AppStateIOS'),\nAsyncStorage:require('AsyncStorage'),\nCameraRoll:require('CameraRoll'),\nDimensions:require('Dimensions'),\nEasing:require('Easing'),\nImagePickerIOS:require('ImagePickerIOS'),\nInteractionManager:require('InteractionManager'),\nLayoutAnimation:require('LayoutAnimation'),\nLinkingIOS:require('LinkingIOS'),\nNetInfo:require('NetInfo'),\nPanResponder:require('PanResponder'),\nPixelRatio:require('PixelRatio'),\nPushNotificationIOS:require('PushNotificationIOS'),\nSettings:require('Settings'),\nStatusBarIOS:require('StatusBarIOS'),\nStyleSheet:require('StyleSheet'),\nVibrationIOS:require('VibrationIOS'),\n\n\nDeviceEventEmitter:require('RCTDeviceEventEmitter'),\nNativeAppEventEmitter:require('RCTNativeAppEventEmitter'),\nNativeModules:require('NativeModules'),\nPlatform:require('Platform'),\nrequireNativeComponent:require('requireNativeComponent'),\n\n\nEdgeInsetsPropType:require('EdgeInsetsPropType'),\nPointPropType:require('PointPropType'),\n\naddons:{\nLinkedStateMixin:require('LinkedStateMixin'),\nPerf:undefined,\nPureRenderMixin:require('ReactComponentWithPureRenderMixin'),\nTestModule:require('NativeModules').TestModule,\nTestUtils:undefined,\nbatchedUpdates:require('ReactUpdates').batchedUpdates,\ncloneWithProps:require('cloneWithProps'),\ncreateFragment:require('ReactFragment').create,\nupdate:require('update')}});\n\n\n\nif(__DEV__){\nReactNative.addons.Perf = require('ReactDefaultPerf');\nReactNative.addons.TestUtils = require('ReactTestUtils');}\n\n\nmodule.exports = ReactNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n'use strict';\n\n// Export React, plus some native additions.\n//\n// The use of Object.create/assign is to work around a Flow bug (#6560135).\n// Once that is fixed, change this back to\n//\n// var ReactNative = {...require('React'), /* additions */}\n//\nvar ReactNative = Object.assign(Object.create(require('React')), {\n // Components\n ActivityIndicatorIOS: require('ActivityIndicatorIOS'),\n DatePickerIOS: require('DatePickerIOS'),\n Image: require('Image'),\n ListView: require('ListView'),\n MapView: require('MapView'),\n Navigator: require('Navigator'),\n NavigatorIOS: require('NavigatorIOS'),\n PickerIOS: require('PickerIOS'),\n ProgressViewIOS: require('ProgressViewIOS'),\n ScrollView: require('ScrollView'),\n SegmentedControlIOS: require('SegmentedControlIOS'),\n SliderIOS: require('SliderIOS'),\n SwitchIOS: require('SwitchIOS'),\n TabBarIOS: require('TabBarIOS'),\n Text: require('Text'),\n TextInput: require('TextInput'),\n TouchableHighlight: require('TouchableHighlight'),\n TouchableOpacity: require('TouchableOpacity'),\n TouchableWithoutFeedback: require('TouchableWithoutFeedback'),\n View: require('View'),\n WebView: require('WebView'),\n\n // APIs\n ActionSheetIOS: require('ActionSheetIOS'),\n AdSupportIOS: require('AdSupportIOS'),\n AlertIOS: require('AlertIOS'),\n Animated: require('Animated'),\n AppRegistry: require('AppRegistry'),\n AppStateIOS: require('AppStateIOS'),\n AsyncStorage: require('AsyncStorage'),\n CameraRoll: require('CameraRoll'),\n Dimensions: require('Dimensions'),\n Easing: require('Easing'),\n ImagePickerIOS: require('ImagePickerIOS'),\n InteractionManager: require('InteractionManager'),\n LayoutAnimation: require('LayoutAnimation'),\n LinkingIOS: require('LinkingIOS'),\n NetInfo: require('NetInfo'),\n PanResponder: require('PanResponder'),\n PixelRatio: require('PixelRatio'),\n PushNotificationIOS: require('PushNotificationIOS'),\n Settings: require('Settings'),\n StatusBarIOS: require('StatusBarIOS'),\n StyleSheet: require('StyleSheet'),\n VibrationIOS: require('VibrationIOS'),\n\n // Plugins\n DeviceEventEmitter: require('RCTDeviceEventEmitter'),\n NativeAppEventEmitter: require('RCTNativeAppEventEmitter'),\n NativeModules: require('NativeModules'),\n Platform: require('Platform'),\n requireNativeComponent: require('requireNativeComponent'),\n\n // Prop Types\n EdgeInsetsPropType: require('EdgeInsetsPropType'),\n PointPropType: require('PointPropType'),\n\n addons: {\n LinkedStateMixin: require('LinkedStateMixin'),\n Perf: undefined,\n PureRenderMixin: require('ReactComponentWithPureRenderMixin'),\n TestModule: require('NativeModules').TestModule,\n TestUtils: undefined,\n batchedUpdates: require('ReactUpdates').batchedUpdates,\n cloneWithProps: require('cloneWithProps'),\n createFragment: require('ReactFragment').create,\n update: require('update'),\n },\n});\n\nif (__DEV__) {\n ReactNative.addons.Perf = require('ReactDefaultPerf');\n ReactNative.addons.TestUtils = require('ReactTestUtils');\n}\n\nmodule.exports = ReactNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/react-native/react-native.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/React.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports = require('ReactNative');","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule React\n * @flow\n */\n'use strict';\n\nmodule.exports = require('ReactNative');\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/React.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNative.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactChildren=require('ReactChildren');\nvar ReactClass=require('ReactClass');\nvar ReactComponent=require('ReactComponent');\nvar ReactContext=require('ReactContext');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactElementValidator=require('ReactElementValidator');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactNativeDefaultInjection=require('ReactNativeDefaultInjection');\nvar ReactNativeMount=require('ReactNativeMount');\nvar ReactPropTypes=require('ReactPropTypes');\n\nvar deprecated=require('deprecated');\nvar findNodeHandle=require('findNodeHandle');\nvar invariant=require('invariant');\nvar onlyChild=require('onlyChild');\n\nReactNativeDefaultInjection.inject();\n\nvar createElement=ReactElement.createElement;\nvar createFactory=ReactElement.createFactory;\nvar cloneElement=ReactElement.cloneElement;\n\nif(__DEV__){\ncreateElement = ReactElementValidator.createElement;\ncreateFactory = ReactElementValidator.createFactory;\ncloneElement = ReactElementValidator.cloneElement;}\n\n\nvar resolveDefaultProps=function(element){\n\nvar defaultProps=element.type.defaultProps;\nvar props=element.props;\nfor(var propName in defaultProps) {\nif(props[propName] === undefined){\nprops[propName] = defaultProps[propName];}}};\n\n\n\n\n\nvar augmentElement=function(element){\nif(__DEV__){\ninvariant(\nfalse,\n'This optimized path should never be used in DEV mode because ' + \n'it does not provide validation. Check your JSX transform.');}\n\n\nelement._owner = ReactCurrentOwner.current;\nelement._context = ReactContext.current;\nif(element.type.defaultProps){\nresolveDefaultProps(element);}\n\nreturn element;};\n\n\nvar render=function(\nelement,\nmountInto,\ncallback)\n{\nreturn ReactNativeMount.renderComponent(element,mountInto,callback);};\n\n\nvar ReactNative={\nhasReactNativeInitialized:false,\nChildren:{\nmap:ReactChildren.map,\nforEach:ReactChildren.forEach,\ncount:ReactChildren.count,\nonly:onlyChild},\n\nComponent:ReactComponent,\nPropTypes:ReactPropTypes,\ncreateClass:ReactClass.createClass,\ncreateElement:createElement,\ncreateFactory:createFactory,\ncloneElement:cloneElement,\n_augmentElement:augmentElement,\nfindNodeHandle:findNodeHandle,\nrender:render,\nunmountComponentAtNode:ReactNativeMount.unmountComponentAtNode,\n\n\n__spread:Object.assign,\n\nunmountComponentAtNodeAndRemoveContainer:ReactNativeMount.unmountComponentAtNodeAndRemoveContainer,\nisValidClass:ReactElement.isValidFactory,\nisValidElement:ReactElement.isValidElement,\n\n\nrenderComponent:deprecated(\n'React',\n'renderComponent',\n'render',\nthis,\nrender),\n\nisValidComponent:deprecated(\n'React',\n'isValidComponent',\n'isValidElement',\nthis,\nReactElement.isValidElement)};\n\n\n\n\n\n\nif(\ntypeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && \ntypeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function'){\n__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\nCurrentOwner:ReactCurrentOwner,\nInstanceHandles:ReactInstanceHandles,\nMount:ReactNativeMount,\nReconciler:require('ReactReconciler'),\nTextComponent:require('ReactNativeTextComponent')});}\n\n\n\nmodule.exports = ReactNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNative\n * @flow\n */\n'use strict';\n\nvar ReactChildren = require('ReactChildren');\nvar ReactClass = require('ReactClass');\nvar ReactComponent = require('ReactComponent');\nvar ReactContext = require('ReactContext');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactElementValidator = require('ReactElementValidator');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactNativeDefaultInjection = require('ReactNativeDefaultInjection');\nvar ReactNativeMount = require('ReactNativeMount');\nvar ReactPropTypes = require('ReactPropTypes');\n\nvar deprecated = require('deprecated');\nvar findNodeHandle = require('findNodeHandle');\nvar invariant = require('invariant');\nvar onlyChild = require('onlyChild');\n\nReactNativeDefaultInjection.inject();\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (__DEV__) {\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar resolveDefaultProps = function(element) {\n // Could be optimized, but not currently in heavy use.\n var defaultProps = element.type.defaultProps;\n var props = element.props;\n for (var propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n};\n\n// Experimental optimized element creation\nvar augmentElement = function(element: ReactElement) {\n if (__DEV__) {\n invariant(\n false,\n 'This optimized path should never be used in DEV mode because ' +\n 'it does not provide validation. Check your JSX transform.'\n );\n }\n element._owner = ReactCurrentOwner.current;\n element._context = ReactContext.current;\n if (element.type.defaultProps) {\n resolveDefaultProps(element);\n }\n return element;\n};\n\nvar render = function(\n element: ReactElement,\n mountInto: number,\n callback?: ?(() => void)\n): ?ReactComponent {\n return ReactNativeMount.renderComponent(element, mountInto, callback);\n};\n\nvar ReactNative = {\n hasReactNativeInitialized: false,\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n only: onlyChild\n },\n Component: ReactComponent,\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createElement: createElement,\n createFactory: createFactory,\n cloneElement: cloneElement,\n _augmentElement: augmentElement,\n findNodeHandle: findNodeHandle,\n render: render,\n unmountComponentAtNode: ReactNativeMount.unmountComponentAtNode,\n\n // Hook for JSX spread, don't use this for anything else.\n __spread: Object.assign,\n\n unmountComponentAtNodeAndRemoveContainer: ReactNativeMount.unmountComponentAtNodeAndRemoveContainer,\n isValidClass: ReactElement.isValidFactory,\n isValidElement: ReactElement.isValidElement,\n\n // Deprecations (remove for 0.13)\n renderComponent: deprecated(\n 'React',\n 'renderComponent',\n 'render',\n this,\n render\n ),\n isValidComponent: deprecated(\n 'React',\n 'isValidComponent',\n 'isValidElement',\n this,\n ReactElement.isValidElement\n )\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n CurrentOwner: ReactCurrentOwner,\n InstanceHandles: ReactInstanceHandles,\n Mount: ReactNativeMount,\n Reconciler: require('ReactReconciler'),\n TextComponent: require('ReactNativeTextComponent'),\n });\n}\n\nmodule.exports = ReactNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNative.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/ReactChildren.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PooledClass=require('PooledClass');\nvar ReactFragment=require('ReactFragment');\n\nvar traverseAllChildren=require('traverseAllChildren');\nvar warning=require('warning');\n\nvar twoArgumentPooler=PooledClass.twoArgumentPooler;\nvar threeArgumentPooler=PooledClass.threeArgumentPooler;\n\n\n\n\n\n\n\n\n\nfunction ForEachBookKeeping(forEachFunction,forEachContext){\nthis.forEachFunction = forEachFunction;\nthis.forEachContext = forEachContext;}\n\nPooledClass.addPoolingTo(ForEachBookKeeping,twoArgumentPooler);\n\nfunction forEachSingleChild(traverseContext,child,name,i){\nvar forEachBookKeeping=traverseContext;\nforEachBookKeeping.forEachFunction.call(\nforEachBookKeeping.forEachContext,child,i);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction forEachChildren(children,forEachFunc,forEachContext){\nif(children == null){\nreturn children;}\n\n\nvar traverseContext=\nForEachBookKeeping.getPooled(forEachFunc,forEachContext);\ntraverseAllChildren(children,forEachSingleChild,traverseContext);\nForEachBookKeeping.release(traverseContext);}\n\n\n\n\n\n\n\n\n\n\n\nfunction MapBookKeeping(mapResult,mapFunction,mapContext){\nthis.mapResult = mapResult;\nthis.mapFunction = mapFunction;\nthis.mapContext = mapContext;}\n\nPooledClass.addPoolingTo(MapBookKeeping,threeArgumentPooler);\n\nfunction mapSingleChildIntoContext(traverseContext,child,name,i){\nvar mapBookKeeping=traverseContext;\nvar mapResult=mapBookKeeping.mapResult;\n\nvar keyUnique=!mapResult.hasOwnProperty(name);\nif(__DEV__){\nwarning(\nkeyUnique,\n'ReactChildren.map(...): Encountered two children with the same key, ' + \n'`%s`. Child keys must be unique; when two children share a key, only ' + \n'the first child will be used.',\nname);}\n\n\n\nif(keyUnique){\nvar mappedChild=\nmapBookKeeping.mapFunction.call(mapBookKeeping.mapContext,child,i);\nmapResult[name] = mappedChild;}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction mapChildren(children,func,context){\nif(children == null){\nreturn children;}\n\n\nvar mapResult={};\nvar traverseContext=MapBookKeeping.getPooled(mapResult,func,context);\ntraverseAllChildren(children,mapSingleChildIntoContext,traverseContext);\nMapBookKeeping.release(traverseContext);\nreturn ReactFragment.create(mapResult);}\n\n\nfunction forEachSingleChildDummy(traverseContext,child,name,i){\nreturn null;}\n\n\n\n\n\n\n\n\n\nfunction countChildren(children,context){\nreturn traverseAllChildren(children,forEachSingleChildDummy,null);}\n\n\nvar ReactChildren={\nforEach:forEachChildren,\nmap:mapChildren,\ncount:countChildren};\n\n\nmodule.exports = ReactChildren;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactChildren\n */\n\n'use strict';\n\nvar PooledClass = require('PooledClass');\nvar ReactFragment = require('ReactFragment');\n\nvar traverseAllChildren = require('traverseAllChildren');\nvar warning = require('warning');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar threeArgumentPooler = PooledClass.threeArgumentPooler;\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.forEachFunction = forEachFunction;\n this.forEachContext = forEachContext;\n}\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(traverseContext, child, name, i) {\n var forEachBookKeeping = traverseContext;\n forEachBookKeeping.forEachFunction.call(\n forEachBookKeeping.forEachContext, child, i);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc.\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n\n var traverseContext =\n ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, mapFunction, mapContext) {\n this.mapResult = mapResult;\n this.mapFunction = mapFunction;\n this.mapContext = mapContext;\n}\nPooledClass.addPoolingTo(MapBookKeeping, threeArgumentPooler);\n\nfunction mapSingleChildIntoContext(traverseContext, child, name, i) {\n var mapBookKeeping = traverseContext;\n var mapResult = mapBookKeeping.mapResult;\n\n var keyUnique = !mapResult.hasOwnProperty(name);\n if (__DEV__) {\n warning(\n keyUnique,\n 'ReactChildren.map(...): Encountered two children with the same key, ' +\n '`%s`. Child keys must be unique; when two children share a key, only ' +\n 'the first child will be used.',\n name\n );\n }\n\n if (keyUnique) {\n var mappedChild =\n mapBookKeeping.mapFunction.call(mapBookKeeping.mapContext, child, i);\n mapResult[name] = mappedChild;\n }\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * TODO: This may likely break any calls to `ReactChildren.map` that were\n * previously relying on the fact that we guarded against null children.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} mapFunction.\n * @param {*} mapContext Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var mapResult = {};\n var traverseContext = MapBookKeeping.getPooled(mapResult, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n return ReactFragment.create(mapResult);\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name, i) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n count: countChildren\n};\n\nmodule.exports = ReactChildren;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/ReactChildren.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/PooledClass.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\nvar oneArgumentPooler=function(copyFieldsFrom){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,copyFieldsFrom);\nreturn instance;}else \n{\nreturn new Klass(copyFieldsFrom);}};\n\n\n\nvar twoArgumentPooler=function(a1,a2){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,a1,a2);\nreturn instance;}else \n{\nreturn new Klass(a1,a2);}};\n\n\n\nvar threeArgumentPooler=function(a1,a2,a3){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,a1,a2,a3);\nreturn instance;}else \n{\nreturn new Klass(a1,a2,a3);}};\n\n\n\nvar fiveArgumentPooler=function(a1,a2,a3,a4,a5){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,a1,a2,a3,a4,a5);\nreturn instance;}else \n{\nreturn new Klass(a1,a2,a3,a4,a5);}};\n\n\n\nvar standardReleaser=function(instance){\nvar Klass=this;\ninvariant(\ninstance instanceof Klass,\n'Trying to release an instance into a pool of a different type.');\n\nif(instance.destructor){\ninstance.destructor();}\n\nif(Klass.instancePool.length < Klass.poolSize){\nKlass.instancePool.push(instance);}};\n\n\n\nvar DEFAULT_POOL_SIZE=10;\nvar DEFAULT_POOLER=oneArgumentPooler;\n\n\n\n\n\n\n\n\n\n\nvar addPoolingTo=function(CopyConstructor,pooler){\nvar NewKlass=CopyConstructor;\nNewKlass.instancePool = [];\nNewKlass.getPooled = pooler || DEFAULT_POOLER;\nif(!NewKlass.poolSize){\nNewKlass.poolSize = DEFAULT_POOL_SIZE;}\n\nNewKlass.release = standardReleaser;\nreturn NewKlass;};\n\n\nvar PooledClass={\naddPoolingTo:addPoolingTo,\noneArgumentPooler:oneArgumentPooler,\ntwoArgumentPooler:twoArgumentPooler,\nthreeArgumentPooler:threeArgumentPooler,\nfiveArgumentPooler:fiveArgumentPooler};\n\n\nmodule.exports = PooledClass;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PooledClass\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function(copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function(a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function(a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fiveArgumentPooler = function(a1, a2, a3, a4, a5) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4, a5);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4, a5);\n }\n};\n\nvar standardReleaser = function(instance) {\n var Klass = this;\n invariant(\n instance instanceof Klass,\n 'Trying to release an instance into a pool of a different type.'\n );\n if (instance.destructor) {\n instance.destructor();\n }\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances (optional).\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function(CopyConstructor, pooler) {\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fiveArgumentPooler: fiveArgumentPooler\n};\n\nmodule.exports = PooledClass;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/PooledClass.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/invariant.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=function(condition,format,a,b,c,d,e,f){\nif(__DEV__){\nif(format === undefined){\nthrow new Error('invariant requires an error message argument');}}\n\n\n\nif(!condition){\nvar error;\nif(format === undefined){\nerror = new Error(\n'Minified exception occurred; use the non-minified dev environment ' + \n'for the full error message and additional helpful warnings.');}else \n\n{\nvar args=[a,b,c,d,e,f];\nvar argIndex=0;\nerror = new Error(\n'Invariant Violation: ' + \nformat.replace(/%s/g,function(){return args[argIndex++];}));}\n\n\n\nerror.framesToPop = 1;\nthrow error;}};\n\n\n\nmodule.exports = invariant;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (__DEV__) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n 'Invariant Violation: ' +\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/invariant.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/ReactFragment.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\n\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\nif(__DEV__){\nvar fragmentKey='_reactFragment';\nvar didWarnKey='_reactDidWarn';\nvar canWarnForReactFragment=false;\n\ntry{\n\n\n\nvar dummy=function(){\nreturn 1;};\n\n\nObject.defineProperty(\n{},\nfragmentKey,\n{enumerable:false,value:true});\n\n\nObject.defineProperty(\n{},\n'key',\n{enumerable:true,get:dummy});\n\n\ncanWarnForReactFragment = true;}\ncatch(x) {}\n\nvar proxyPropertyAccessWithWarning=function(obj,key){\nObject.defineProperty(obj,key,{\nenumerable:true,\nget:function(){\nwarning(\nthis[didWarnKey],\n'A ReactFragment is an opaque type. Accessing any of its ' + \n'properties is deprecated. Pass it to one of the React.Children ' + \n'helpers.');\n\nthis[didWarnKey] = true;\nreturn this[fragmentKey][key];},\n\nset:function(value){\nwarning(\nthis[didWarnKey],\n'A ReactFragment is an immutable opaque type. Mutating its ' + \n'properties is deprecated.');\n\nthis[didWarnKey] = true;\nthis[fragmentKey][key] = value;}});};\n\n\n\n\nvar issuedWarnings={};\n\nvar didWarnForFragment=function(fragment){\n\n\nvar fragmentCacheKey='';\nfor(var key in fragment) {\nfragmentCacheKey += key + ':' + typeof fragment[key] + ',';}\n\nvar alreadyWarnedOnce=!!issuedWarnings[fragmentCacheKey];\nissuedWarnings[fragmentCacheKey] = true;\nreturn alreadyWarnedOnce;};}\n\n\n\nvar ReactFragment={\n\n\ncreate:function(object){\nif(__DEV__){\nif(typeof object !== 'object' || !object || Array.isArray(object)){\nwarning(\nfalse,\n'React.addons.createFragment only accepts a single object.',\nobject);\n\nreturn object;}\n\nif(ReactElement.isValidElement(object)){\nwarning(\nfalse,\n'React.addons.createFragment does not accept a ReactElement ' + \n'without a wrapper object.');\n\nreturn object;}\n\nif(canWarnForReactFragment){\nvar proxy={};\nObject.defineProperty(proxy,fragmentKey,{\nenumerable:false,\nvalue:object});\n\nObject.defineProperty(proxy,didWarnKey,{\nwritable:true,\nenumerable:false,\nvalue:false});\n\nfor(var key in object) {\nproxyPropertyAccessWithWarning(proxy,key);}\n\nObject.preventExtensions(proxy);\nreturn proxy;}}\n\n\nreturn object;},\n\n\n\nextract:function(fragment){\nif(__DEV__){\nif(canWarnForReactFragment){\nif(!fragment[fragmentKey]){\nwarning(\ndidWarnForFragment(fragment),\n'Any use of a keyed object should be wrapped in ' + \n'React.addons.createFragment(object) before being passed as a ' + \n'child.');\n\nreturn fragment;}\n\nreturn fragment[fragmentKey];}}\n\n\nreturn fragment;},\n\n\n\n\nextractIfFragment:function(fragment){\nif(__DEV__){\nif(canWarnForReactFragment){\n\nif(fragment[fragmentKey]){\nreturn fragment[fragmentKey];}\n\n\n\n\nfor(var key in fragment) {\nif(fragment.hasOwnProperty(key) && \nReactElement.isValidElement(fragment[key])){\n\n\nreturn ReactFragment.extract(fragment);}}}}\n\n\n\n\nreturn fragment;}};\n\n\n\nmodule.exports = ReactFragment;","sourceCode":"/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n* @providesModule ReactFragment\n*/\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\n\nvar warning = require('warning');\n\n/**\n * We used to allow keyed objects to serve as a collection of ReactElements,\n * or nested sets. This allowed us a way to explicitly key a set a fragment of\n * components. This is now being replaced with an opaque data structure.\n * The upgrade path is to call React.addons.createFragment({ key: value }) to\n * create a keyed fragment. The resulting data structure is opaque, for now.\n */\n\nif (__DEV__) {\n var fragmentKey = '_reactFragment';\n var didWarnKey = '_reactDidWarn';\n var canWarnForReactFragment = false;\n\n try {\n // Feature test. Don't even try to issue this warning if we can't use\n // enumerable: false.\n\n var dummy = function() {\n return 1;\n };\n\n Object.defineProperty(\n {},\n fragmentKey,\n {enumerable: false, value: true}\n );\n\n Object.defineProperty(\n {},\n 'key',\n {enumerable: true, get: dummy}\n );\n\n canWarnForReactFragment = true;\n } catch (x) { }\n\n var proxyPropertyAccessWithWarning = function(obj, key) {\n Object.defineProperty(obj, key, {\n enumerable: true,\n get: function() {\n warning(\n this[didWarnKey],\n 'A ReactFragment is an opaque type. Accessing any of its ' +\n 'properties is deprecated. Pass it to one of the React.Children ' +\n 'helpers.'\n );\n this[didWarnKey] = true;\n return this[fragmentKey][key];\n },\n set: function(value) {\n warning(\n this[didWarnKey],\n 'A ReactFragment is an immutable opaque type. Mutating its ' +\n 'properties is deprecated.'\n );\n this[didWarnKey] = true;\n this[fragmentKey][key] = value;\n }\n });\n };\n\n var issuedWarnings = {};\n\n var didWarnForFragment = function(fragment) {\n // We use the keys and the type of the value as a heuristic to dedupe the\n // warning to avoid spamming too much.\n var fragmentCacheKey = '';\n for (var key in fragment) {\n fragmentCacheKey += key + ':' + (typeof fragment[key]) + ',';\n }\n var alreadyWarnedOnce = !!issuedWarnings[fragmentCacheKey];\n issuedWarnings[fragmentCacheKey] = true;\n return alreadyWarnedOnce;\n };\n}\n\nvar ReactFragment = {\n // Wrap a keyed object in an opaque proxy that warns you if you access any\n // of its properties.\n create: function(object) {\n if (__DEV__) {\n if (typeof object !== 'object' || !object || Array.isArray(object)) {\n warning(\n false,\n 'React.addons.createFragment only accepts a single object.',\n object\n );\n return object;\n }\n if (ReactElement.isValidElement(object)) {\n warning(\n false,\n 'React.addons.createFragment does not accept a ReactElement ' +\n 'without a wrapper object.'\n );\n return object;\n }\n if (canWarnForReactFragment) {\n var proxy = {};\n Object.defineProperty(proxy, fragmentKey, {\n enumerable: false,\n value: object\n });\n Object.defineProperty(proxy, didWarnKey, {\n writable: true,\n enumerable: false,\n value: false\n });\n for (var key in object) {\n proxyPropertyAccessWithWarning(proxy, key);\n }\n Object.preventExtensions(proxy);\n return proxy;\n }\n }\n return object;\n },\n // Extract the original keyed object from the fragment opaque type. Warn if\n // a plain object is passed here.\n extract: function(fragment) {\n if (__DEV__) {\n if (canWarnForReactFragment) {\n if (!fragment[fragmentKey]) {\n warning(\n didWarnForFragment(fragment),\n 'Any use of a keyed object should be wrapped in ' +\n 'React.addons.createFragment(object) before being passed as a ' +\n 'child.'\n );\n return fragment;\n }\n return fragment[fragmentKey];\n }\n }\n return fragment;\n },\n // Check if this is a fragment and if so, extract the keyed object. If it\n // is a fragment-like object, warn that it should be wrapped. Ignore if we\n // can't determine what kind of object this is.\n extractIfFragment: function(fragment) {\n if (__DEV__) {\n if (canWarnForReactFragment) {\n // If it is the opaque type, return the keyed object.\n if (fragment[fragmentKey]) {\n return fragment[fragmentKey];\n }\n // Otherwise, check each property if it has an element, if it does\n // it is probably meant as a fragment, so we can warn early. Defer,\n // the warning to extract.\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key) &&\n ReactElement.isValidElement(fragment[key])) {\n // This looks like a fragment object, we should provide an\n // early warning.\n return ReactFragment.extract(fragment);\n }\n }\n }\n }\n return fragment;\n }\n};\n\nmodule.exports = ReactFragment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/ReactFragment.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElement.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactContext=require('ReactContext');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\n\nvar assign=require('Object.assign');\nvar warning=require('warning');\n\nvar RESERVED_PROPS={\nkey:true,\nref:true};\n\n\n\n\n\n\n\n\n\nfunction defineWarningProperty(object,key){\nObject.defineProperty(object,key,{\n\nconfigurable:false,\nenumerable:true,\n\nget:function(){\nif(!this._store){\nreturn null;}\n\nreturn this._store[key];},\n\n\nset:function(value){\nwarning(\nfalse,\n'Don\\'t set the %s property of the React element. Instead, ' + \n'specify the correct value when initially creating the element.',\nkey);\n\nthis._store[key] = value;}});}\n\n\n\n\n\n\n\n\nvar useMutationMembrane=false;\n\n\n\n\n\n\n\nfunction defineMutationMembrane(prototype){\ntry{\nvar pseudoFrozenProperties={\nprops:true};\n\nfor(var key in pseudoFrozenProperties) {\ndefineWarningProperty(prototype,key);}\n\nuseMutationMembrane = true;}\ncatch(x) {}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=function(type,key,ref,owner,context,props){\n\nthis.type = type;\nthis.key = key;\nthis.ref = ref;\n\n\nthis._owner = owner;\n\n\n\nthis._context = context;\n\nif(__DEV__){\n\n\n\n\nthis._store = {props:props,originalProps:assign({},props)};\n\n\n\n\n\ntry{\nObject.defineProperty(this._store,'validated',{\nconfigurable:false,\nenumerable:false,\nwritable:true});}\n\ncatch(x) {}\n\nthis._store.validated = false;\n\n\n\n\nif(useMutationMembrane){\nObject.freeze(this);\nreturn;}}\n\n\n\nthis.props = props;};\n\n\n\n\nReactElement.prototype = {\n_isReactElement:true};\n\n\nif(__DEV__){\ndefineMutationMembrane(ReactElement.prototype);}\n\n\nReactElement.createElement = function(type,config,children){\nvar propName;\n\n\nvar props={};\n\nvar key=null;\nvar ref=null;\n\nif(config != null){\nref = config.ref === undefined?null:config.ref;\nkey = config.key === undefined?null:'' + config.key;\n\nfor(propName in config) {\nif(config.hasOwnProperty(propName) && \n!RESERVED_PROPS.hasOwnProperty(propName)){\nprops[propName] = config[propName];}}}\n\n\n\n\n\n\nvar childrenLength=arguments.length - 2;\nif(childrenLength === 1){\nprops.children = children;}else \nif(childrenLength > 1){\nvar childArray=Array(childrenLength);\nfor(var i=0;i < childrenLength;i++) {\nchildArray[i] = arguments[i + 2];}\n\nprops.children = childArray;}\n\n\n\nif(type && type.defaultProps){\nvar defaultProps=type.defaultProps;\nfor(propName in defaultProps) {\nif(typeof props[propName] === 'undefined'){\nprops[propName] = defaultProps[propName];}}}\n\n\n\n\nreturn new ReactElement(\ntype,\nkey,\nref,\nReactCurrentOwner.current,\nReactContext.current,\nprops);};\n\n\n\nReactElement.createFactory = function(type){\nvar factory=ReactElement.createElement.bind(null,type);\n\n\n\n\n\nfactory.type = type;\nreturn factory;};\n\n\nReactElement.cloneAndReplaceProps = function(oldElement,newProps){\nvar newElement=new ReactElement(\noldElement.type,\noldElement.key,\noldElement.ref,\noldElement._owner,\noldElement._context,\nnewProps);\n\n\nif(__DEV__){\n\nnewElement._store.validated = oldElement._store.validated;}\n\nreturn newElement;};\n\n\nReactElement.cloneElement = function(element,config,children){\nvar propName;\n\n\nvar props=assign({},element.props);\n\n\nvar key=element.key;\nvar ref=element.ref;\n\n\nvar owner=element._owner;\n\nif(config != null){\nif(config.ref !== undefined){\n\nref = config.ref;\nowner = ReactCurrentOwner.current;}\n\nif(config.key !== undefined){\nkey = '' + config.key;}\n\n\nfor(propName in config) {\nif(config.hasOwnProperty(propName) && \n!RESERVED_PROPS.hasOwnProperty(propName)){\nprops[propName] = config[propName];}}}\n\n\n\n\n\n\nvar childrenLength=arguments.length - 2;\nif(childrenLength === 1){\nprops.children = children;}else \nif(childrenLength > 1){\nvar childArray=Array(childrenLength);\nfor(var i=0;i < childrenLength;i++) {\nchildArray[i] = arguments[i + 2];}\n\nprops.children = childArray;}\n\n\nreturn new ReactElement(\nelement.type,\nkey,\nref,\nowner,\nelement._context,\nprops);};\n\n\n\n\n\n\n\n\nReactElement.isValidElement = function(object){\n\n\n\n\nvar isElement=!!(object && object._isReactElement);\n\n\n\n\n\nreturn isElement;};\n\n\nmodule.exports = ReactElement;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElement\n */\n\n'use strict';\n\nvar ReactContext = require('ReactContext');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\n\nvar assign = require('Object.assign');\nvar warning = require('warning');\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true\n};\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} object\n * @param {string} key\n */\nfunction defineWarningProperty(object, key) {\n Object.defineProperty(object, key, {\n\n configurable: false,\n enumerable: true,\n\n get: function() {\n if (!this._store) {\n return null;\n }\n return this._store[key];\n },\n\n set: function(value) {\n warning(\n false,\n 'Don\\'t set the %s property of the React element. Instead, ' +\n 'specify the correct value when initially creating the element.',\n key\n );\n this._store[key] = value;\n }\n\n });\n}\n\n/**\n * This is updated to true if the membrane is successfully created.\n */\nvar useMutationMembrane = false;\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} element\n */\nfunction defineMutationMembrane(prototype) {\n try {\n var pseudoFrozenProperties = {\n props: true\n };\n for (var key in pseudoFrozenProperties) {\n defineWarningProperty(prototype, key);\n }\n useMutationMembrane = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\n/**\n * Base constructor for all React elements. This is only used to make this\n * work with a dynamic instanceof check. Nothing should live on this prototype.\n *\n * @param {*} type\n * @param {string|object} ref\n * @param {*} key\n * @param {*} props\n * @internal\n */\nvar ReactElement = function(type, key, ref, owner, context, props) {\n // Built-in properties that belong on the element\n this.type = type;\n this.key = key;\n this.ref = ref;\n\n // Record the component responsible for creating this element.\n this._owner = owner;\n\n // TODO: Deprecate withContext, and then the context becomes accessible\n // through the owner.\n this._context = context;\n\n if (__DEV__) {\n // The validation flag and props are currently mutative. We put them on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n this._store = {props: props, originalProps: assign({}, props)};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n try {\n Object.defineProperty(this._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true\n });\n } catch (x) {\n }\n this._store.validated = false;\n\n // We're not allowed to set props directly on the object so we early\n // return and rely on the prototype membrane to forward to the backing\n // store.\n if (useMutationMembrane) {\n Object.freeze(this);\n return;\n }\n }\n\n this.props = props;\n};\n\n// We intentionally don't expose the function on the constructor property.\n// ReactElement should be indistinguishable from a plain object.\nReactElement.prototype = {\n _isReactElement: true\n};\n\nif (__DEV__) {\n defineMutationMembrane(ReactElement.prototype);\n}\n\nReactElement.createElement = function(type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n\n if (config != null) {\n ref = config.ref === undefined ? null : config.ref;\n key = config.key === undefined ? null : '' + config.key;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (typeof props[propName] === 'undefined') {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n return new ReactElement(\n type,\n key,\n ref,\n ReactCurrentOwner.current,\n ReactContext.current,\n props\n );\n};\n\nReactElement.createFactory = function(type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. <Foo />.type === Foo.type.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceProps = function(oldElement, newProps) {\n var newElement = new ReactElement(\n oldElement.type,\n oldElement.key,\n oldElement.ref,\n oldElement._owner,\n oldElement._context,\n newProps\n );\n\n if (__DEV__) {\n // If the key on the original is valid, then the clone is valid\n newElement._store.validated = oldElement._store.validated;\n }\n return newElement;\n};\n\nReactElement.cloneElement = function(element, config, children) {\n var propName;\n\n // Original props are copied\n var props = assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (config.ref !== undefined) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (config.key !== undefined) {\n key = '' + config.key;\n }\n // Remaining properties override existing props\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return new ReactElement(\n element.type,\n key,\n ref,\n owner,\n element._context,\n props\n );\n};\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function(object) {\n // ReactTestUtils is often used outside of beforeEach where as React is\n // within it. This leads to two different instances of React on the same\n // page. To identify a element from a different React instance we use\n // a flag instead of an instanceof check.\n var isElement = !!(object && object._isReactElement);\n // if (isElement && !(object instanceof ReactElement)) {\n // This is an indicator that you're using multiple versions of React at the\n // same time. This will screw with ownership and stuff. Fix it, please.\n // TODO: We could possibly warn here.\n // }\n return isElement;\n};\n\nmodule.exports = ReactElement;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElement.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactContext.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar emptyObject=require('emptyObject');\nvar warning=require('warning');\n\nvar didWarn=false;\n\n\n\n\n\n\n\nvar ReactContext={\n\n\n\n\n\ncurrent:emptyObject,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nwithContext:function(newContext,scopedCallback){\nif(__DEV__){\nwarning(\ndidWarn,\n'withContext is deprecated and will be removed in a future version. ' + \n'Use a wrapper component with getChildContext instead.');\n\n\ndidWarn = true;}\n\n\nvar result;\nvar previousContext=ReactContext.current;\nReactContext.current = assign({},previousContext,newContext);\ntry{\nresult = scopedCallback();}finally \n{\nReactContext.current = previousContext;}\n\nreturn result;}};\n\n\n\n\nmodule.exports = ReactContext;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactContext\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar emptyObject = require('emptyObject');\nvar warning = require('warning');\n\nvar didWarn = false;\n\n/**\n * Keeps track of the current context.\n *\n * The context is automatically passed down the component ownership hierarchy\n * and is accessible via `this.context` on ReactCompositeComponents.\n */\nvar ReactContext = {\n\n /**\n * @internal\n * @type {object}\n */\n current: emptyObject,\n\n /**\n * Temporarily extends the current context while executing scopedCallback.\n *\n * A typical use case might look like\n *\n * render: function() {\n * var children = ReactContext.withContext({foo: 'foo'}, () => (\n *\n * ));\n * return <div>{children}</div>;\n * }\n *\n * @param {object} newContext New context to merge into the existing context\n * @param {function} scopedCallback Callback to run with the new context\n * @return {ReactComponent|array<ReactComponent>}\n */\n withContext: function(newContext, scopedCallback) {\n if (__DEV__) {\n warning(\n didWarn,\n 'withContext is deprecated and will be removed in a future version. ' +\n 'Use a wrapper component with getChildContext instead.'\n );\n\n didWarn = true;\n }\n\n var result;\n var previousContext = ReactContext.current;\n ReactContext.current = assign({}, previousContext, newContext);\n try {\n result = scopedCallback();\n } finally {\n ReactContext.current = previousContext;\n }\n return result;\n }\n\n};\n\nmodule.exports = ReactContext;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactContext.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/stubs/Object.assign.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction assign(target,sources){\nif(target == null){\nthrow new TypeError('Object.assign target cannot be null or undefined');}\n\n\nvar to=Object(target);\nvar hasOwnProperty=Object.prototype.hasOwnProperty;\n\nfor(var nextIndex=1;nextIndex < arguments.length;nextIndex++) {\nvar nextSource=arguments[nextIndex];\nif(nextSource == null){\ncontinue;}\n\n\nvar from=Object(nextSource);\n\n\n\n\n\n\nfor(var key in from) {\nif(hasOwnProperty.call(from,key)){\nto[key] = from[key];}}}\n\n\n\n\nreturn to;}\n\n\nmodule.exports = assign;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Object.assign\n */\n\n// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign\n\n'use strict';\n\nfunction assign(target, sources) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n\n var to = Object(target);\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n var from = Object(nextSource);\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects. We don't support symbols so they won't\n // be transferred.\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n }\n\n return to;\n}\n\nmodule.exports = assign;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/stubs/Object.assign.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyObject.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar emptyObject={};\n\nif(__DEV__){\nObject.freeze(emptyObject);}\n\n\nmodule.exports = emptyObject;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyObject\n */\n\n\"use strict\";\n\nvar emptyObject = {};\n\nif (__DEV__) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyObject.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/warning.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar emptyFunction=require('emptyFunction');\n\n\n\n\n\n\n\n\nvar warning=emptyFunction;\n\nif(__DEV__){\nwarning = function(condition,format){for(var _len=arguments.length,args=Array(_len > 2?_len - 2:0),_key=2;_key < _len;_key++) {args[_key - 2] = arguments[_key];}\nif(format === undefined){\nthrow new Error(\n'`warning(condition, format, ...args)` requires a warning ' + \n'message argument');}\n\n\n\nif(format.length < 10 || /^[s\\W]*$/.test(format)){\nthrow new Error(\n'The warning format should be able to uniquely identify this ' + \n'warning. Please, use a more descriptive format than: ' + format);}\n\n\n\nif(format.indexOf('Failed Composite propType: ') === 0){\nreturn;}\n\n\nif(!condition){\nvar argIndex=0;\nvar message='Warning: ' + format.replace(/%s/g,function(){return args[argIndex++];});\nconsole.warn(message);\ntry{\n\n\n\nthrow new Error(message);}\ncatch(x) {}}};}\n\n\n\n\nmodule.exports = warning;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule warning\n */\n\n\"use strict\";\n\nvar emptyFunction = require('emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (__DEV__) {\n warning = function(condition, format, ...args) {\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, () => args[argIndex++]);\n console.warn(message);\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/warning.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyFunction.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\nmakeEmptyFunction(arg){\nreturn function(){\nreturn arg;};}\n\n\n\n\n\n\n\n\nfunction emptyFunction(){}\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function(){return this;};\nemptyFunction.thatReturnsArgument = function(arg){return arg;};\n\nmodule.exports = emptyFunction;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyFunction\n */\n\nfunction makeEmptyFunction(arg) {\n return function() {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nfunction emptyFunction() {}\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function() { return this; };\nemptyFunction.thatReturnsArgument = function(arg) { return arg; };\n\nmodule.exports = emptyFunction;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyFunction.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCurrentOwner.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactCurrentOwner={\n\n\n\n\n\ncurrent:null};\n\n\n\nmodule.exports = ReactCurrentOwner;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCurrentOwner\n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n *\n * The depth indicate how many composite components are above this render level.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCurrentOwner.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/traverseAllChildren.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactFragment=require('ReactFragment');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\n\nvar getIteratorFn=require('getIteratorFn');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nvar SEPARATOR=ReactInstanceHandles.SEPARATOR;\nvar SUBSEPARATOR=':';\n\n\n\n\n\n\nvar userProvidedKeyEscaperLookup={\n'=':'=0',\n'.':'=1',\n':':'=2'};\n\n\nvar userProvidedKeyEscapeRegex=/[=.:]/g;\n\nvar didWarnAboutMaps=false;\n\nfunction userProvidedKeyEscaper(match){\nreturn userProvidedKeyEscaperLookup[match];}\n\n\n\n\n\n\n\n\n\nfunction getComponentKey(component,index){\nif(component && component.key != null){\n\nreturn wrapUserProvidedKey(component.key);}\n\n\nreturn index.toString(36);}\n\n\n\n\n\n\n\n\nfunction escapeUserProvidedKey(text){\nreturn ('' + text).replace(\nuserProvidedKeyEscapeRegex,\nuserProvidedKeyEscaper);}\n\n\n\n\n\n\n\n\n\n\nfunction wrapUserProvidedKey(key){\nreturn '$' + escapeUserProvidedKey(key);}\n\n\n\n\n\n\n\n\n\n\n\nfunction traverseAllChildrenImpl(\nchildren,\nnameSoFar,\nindexSoFar,\ncallback,\ntraverseContext)\n{\nvar type=typeof children;\n\nif(type === 'undefined' || type === 'boolean'){\n\nchildren = null;}\n\n\nif(children === null || \ntype === 'string' || \ntype === 'number' || \nReactElement.isValidElement(children)){\ncallback(\ntraverseContext,\nchildren,\n\n\nnameSoFar === ''?SEPARATOR + getComponentKey(children,0):nameSoFar,\nindexSoFar);\n\nreturn 1;}\n\n\nvar child,nextName,nextIndex;\nvar subtreeCount=0;\n\nif(Array.isArray(children)){\nfor(var i=0;i < children.length;i++) {\nchild = children[i];\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \ngetComponentKey(child,i);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}else \n\n\n{\nvar iteratorFn=getIteratorFn(children);\nif(iteratorFn){\nvar iterator=iteratorFn.call(children);\nvar step;\nif(iteratorFn !== children.entries){\nvar ii=0;\nwhile(!(step = iterator.next()).done) {\nchild = step.value;\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \ngetComponentKey(child,ii++);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}else \n\n\n{\nif(__DEV__){\nwarning(\ndidWarnAboutMaps,\n'Using Maps as children is not yet fully supported. It is an ' + \n'experimental feature that might be removed. Convert it to a ' + \n'sequence / iterable of keyed ReactElements instead.');\n\ndidWarnAboutMaps = true;}\n\n\nwhile(!(step = iterator.next()).done) {\nvar entry=step.value;\nif(entry){\nchild = entry[1];\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \nwrapUserProvidedKey(entry[0]) + SUBSEPARATOR + \ngetComponentKey(child,0);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}}}else \n\n\n\n\nif(type === 'object'){\ninvariant(\nchildren.nodeType !== 1,\n'traverseAllChildren(...): Encountered an invalid child; DOM ' + \n'elements are not valid children of React components.');\n\nvar fragment=ReactFragment.extract(children);\nfor(var key in fragment) {\nif(fragment.hasOwnProperty(key)){\nchild = fragment[key];\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \nwrapUserProvidedKey(key) + SUBSEPARATOR + \ngetComponentKey(child,0);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}}}\n\n\n\n\n\n\nreturn subtreeCount;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction traverseAllChildren(children,callback,traverseContext){\nif(children == null){\nreturn 0;}\n\n\nreturn traverseAllChildrenImpl(children,'',0,callback,traverseContext);}\n\n\nmodule.exports = traverseAllChildren;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule traverseAllChildren\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactFragment = require('ReactFragment');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\n\nvar getIteratorFn = require('getIteratorFn');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nvar SEPARATOR = ReactInstanceHandles.SEPARATOR;\nvar SUBSEPARATOR = ':';\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar userProvidedKeyEscaperLookup = {\n '=': '=0',\n '.': '=1',\n ':': '=2'\n};\n\nvar userProvidedKeyEscapeRegex = /[=.:]/g;\n\nvar didWarnAboutMaps = false;\n\nfunction userProvidedKeyEscaper(match) {\n return userProvidedKeyEscaperLookup[match];\n}\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n if (component && component.key != null) {\n // Explicit key\n return wrapUserProvidedKey(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * Escape a component key so that it is safe to use in a reactid.\n *\n * @param {*} key Component key to be escaped.\n * @return {string} An escaped string.\n */\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(\n userProvidedKeyEscapeRegex,\n userProvidedKeyEscaper\n );\n}\n\n/**\n * Wrap a `key` value explicitly provided by the user to distinguish it from\n * implicitly-generated keys generated by a component's index in its parent.\n *\n * @param {string} key Value of a user-provided `key` attribute\n * @return {string}\n */\nfunction wrapUserProvidedKey(key) {\n return '$' + escapeUserProvidedKey(key);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!number} indexSoFar Number of children encountered until this point.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(\n children,\n nameSoFar,\n indexSoFar,\n callback,\n traverseContext\n) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null ||\n type === 'string' ||\n type === 'number' ||\n ReactElement.isValidElement(children)) {\n callback(\n traverseContext,\n children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar,\n indexSoFar\n );\n return 1;\n }\n\n var child, nextName, nextIndex;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n getComponentKey(child, i)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n getComponentKey(child, ii++)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n } else {\n if (__DEV__) {\n warning(\n didWarnAboutMaps,\n 'Using Maps as children is not yet fully supported. It is an ' +\n 'experimental feature that might be removed. Convert it to a ' +\n 'sequence / iterable of keyed ReactElements instead.'\n );\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n wrapUserProvidedKey(entry[0]) + SUBSEPARATOR +\n getComponentKey(child, 0)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n }\n }\n } else if (type === 'object') {\n invariant(\n children.nodeType !== 1,\n 'traverseAllChildren(...): Encountered an invalid child; DOM ' +\n 'elements are not valid children of React components.'\n );\n var fragment = ReactFragment.extract(children);\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key)) {\n child = fragment[key];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n wrapUserProvidedKey(key) + SUBSEPARATOR +\n getComponentKey(child, 0)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n }\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', 0, callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/traverseAllChildren.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/core/ReactInstanceHandles.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactRootIndex=require('ReactRootIndex');\n\nvar invariant=require('invariant');\n\nvar SEPARATOR='.';\nvar SEPARATOR_LENGTH=SEPARATOR.length;\n\n\n\n\nvar MAX_TREE_DEPTH=100;\n\n\n\n\n\n\n\n\nfunction getReactRootIDString(index){\nreturn SEPARATOR + index.toString(36);}\n\n\n\n\n\n\n\n\n\n\nfunction isBoundary(id,index){\nreturn id.charAt(index) === SEPARATOR || index === id.length;}\n\n\n\n\n\n\n\n\n\nfunction isValidID(id){\nreturn id === '' || \nid.charAt(0) === SEPARATOR && id.charAt(id.length - 1) !== SEPARATOR;}\n\n\n\n\n\n\n\n\n\n\n\nfunction isAncestorIDOf(ancestorID,descendantID){\nreturn (\ndescendantID.indexOf(ancestorID) === 0 && \nisBoundary(descendantID,ancestorID.length));}\n\n\n\n\n\n\n\n\n\n\nfunction getParentID(id){\nreturn id?id.substr(0,id.lastIndexOf(SEPARATOR)):'';}\n\n\n\n\n\n\n\n\n\n\n\nfunction getNextDescendantID(ancestorID,destinationID){\ninvariant(\nisValidID(ancestorID) && isValidID(destinationID),\n'getNextDescendantID(%s, %s): Received an invalid React DOM ID.',\nancestorID,\ndestinationID);\n\ninvariant(\nisAncestorIDOf(ancestorID,destinationID),\n'getNextDescendantID(...): React has made an invalid assumption about ' + \n'the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.',\nancestorID,\ndestinationID);\n\nif(ancestorID === destinationID){\nreturn ancestorID;}\n\n\n\nvar start=ancestorID.length + SEPARATOR_LENGTH;\nfor(var i=start;i < destinationID.length;i++) {\nif(isBoundary(destinationID,i)){\nbreak;}}\n\n\nreturn destinationID.substr(0,i);}\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getFirstCommonAncestorID(oneID,twoID){\nvar minLength=Math.min(oneID.length,twoID.length);\nif(minLength === 0){\nreturn '';}\n\nvar lastCommonMarkerIndex=0;\n\nfor(var i=0;i <= minLength;i++) {\nif(isBoundary(oneID,i) && isBoundary(twoID,i)){\nlastCommonMarkerIndex = i;}else \nif(oneID.charAt(i) !== twoID.charAt(i)){\nbreak;}}\n\n\nvar longestCommonID=oneID.substr(0,lastCommonMarkerIndex);\ninvariant(\nisValidID(longestCommonID),\n'getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s',\noneID,\ntwoID,\nlongestCommonID);\n\nreturn longestCommonID;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction traverseParentPath(start,stop,cb,arg,skipFirst,skipLast){\nstart = start || '';\nstop = stop || '';\ninvariant(\nstart !== stop,\n'traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.',\nstart);\n\nvar traverseUp=isAncestorIDOf(stop,start);\ninvariant(\ntraverseUp || isAncestorIDOf(start,stop),\n'traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do ' + \n'not have a parent path.',\nstart,\nstop);\n\n\nvar depth=0;\nvar traverse=traverseUp?getParentID:getNextDescendantID;\nfor(var id=start;;id = traverse(id,stop)) {\nvar ret;\nif((!skipFirst || id !== start) && (!skipLast || id !== stop)){\nret = cb(id,traverseUp,arg);}\n\nif(ret === false || id === stop){\n\nbreak;}\n\ninvariant(\ndepth++ < MAX_TREE_DEPTH,\n'traverseParentPath(%s, %s, ...): Detected an infinite loop while ' + \n'traversing the React DOM ID tree. This may be due to malformed IDs: %s',\nstart,stop);}}\n\n\n\n\n\n\n\n\n\n\n\nvar ReactInstanceHandles={\n\n\n\n\n\ncreateReactRootID:function(){\nreturn getReactRootIDString(ReactRootIndex.createReactRootIndex());},\n\n\n\n\n\n\n\n\n\n\ncreateReactID:function(rootID,name){\nreturn rootID + name;},\n\n\n\n\n\n\n\n\n\n\ngetReactRootIDFromNodeID:function(id){\nif(id && id.charAt(0) === SEPARATOR && id.length > 1){\nvar index=id.indexOf(SEPARATOR,1);\nreturn index > -1?id.substr(0,index):id;}\n\nreturn null;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ntraverseEnterLeave:function(leaveID,enterID,cb,upArg,downArg){\nvar ancestorID=getFirstCommonAncestorID(leaveID,enterID);\nif(ancestorID !== leaveID){\ntraverseParentPath(leaveID,ancestorID,cb,upArg,false,true);}\n\nif(ancestorID !== enterID){\ntraverseParentPath(ancestorID,enterID,cb,downArg,true,false);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\ntraverseTwoPhase:function(targetID,cb,arg){\nif(targetID){\ntraverseParentPath('',targetID,cb,arg,true,false);\ntraverseParentPath(targetID,'',cb,arg,false,true);}},\n\n\n\n\n\n\ntraverseTwoPhaseSkipTarget:function(targetID,cb,arg){\nif(targetID){\ntraverseParentPath('',targetID,cb,arg,true,true);\ntraverseParentPath(targetID,'',cb,arg,true,true);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ntraverseAncestors:function(targetID,cb,arg){\ntraverseParentPath('',targetID,cb,arg,true,false);},\n\n\n\n\n\n\n_getFirstCommonAncestorID:getFirstCommonAncestorID,\n\n\n\n\n\n_getNextDescendantID:getNextDescendantID,\n\nisAncestorIDOf:isAncestorIDOf,\n\nSEPARATOR:SEPARATOR};\n\n\n\nmodule.exports = ReactInstanceHandles;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule ReactInstanceHandles\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar ReactRootIndex = require('ReactRootIndex');\n\nvar invariant = require('invariant');\n\nvar SEPARATOR = '.';\nvar SEPARATOR_LENGTH = SEPARATOR.length;\n\n/**\n * Maximum depth of traversals before we consider the possibility of a bad ID.\n */\nvar MAX_TREE_DEPTH = 100;\n\n/**\n * Creates a DOM ID prefix to use when mounting React components.\n *\n * @param {number} index A unique integer\n * @return {string} React root ID.\n * @internal\n */\nfunction getReactRootIDString(index) {\n return SEPARATOR + index.toString(36);\n}\n\n/**\n * Checks if a character in the supplied ID is a separator or the end.\n *\n * @param {string} id A React DOM ID.\n * @param {number} index Index of the character to check.\n * @return {boolean} True if the character is a separator or end of the ID.\n * @private\n */\nfunction isBoundary(id, index) {\n return id.charAt(index) === SEPARATOR || index === id.length;\n}\n\n/**\n * Checks if the supplied string is a valid React DOM ID.\n *\n * @param {string} id A React DOM ID, maybe.\n * @return {boolean} True if the string is a valid React DOM ID.\n * @private\n */\nfunction isValidID(id) {\n return id === '' || (\n id.charAt(0) === SEPARATOR && id.charAt(id.length - 1) !== SEPARATOR\n );\n}\n\n/**\n * Checks if the first ID is an ancestor of or equal to the second ID.\n *\n * @param {string} ancestorID\n * @param {string} descendantID\n * @return {boolean} True if `ancestorID` is an ancestor of `descendantID`.\n * @internal\n */\nfunction isAncestorIDOf(ancestorID, descendantID) {\n return (\n descendantID.indexOf(ancestorID) === 0 &&\n isBoundary(descendantID, ancestorID.length)\n );\n}\n\n/**\n * Gets the parent ID of the supplied React DOM ID, `id`.\n *\n * @param {string} id ID of a component.\n * @return {string} ID of the parent, or an empty string.\n * @private\n */\nfunction getParentID(id) {\n return id ? id.substr(0, id.lastIndexOf(SEPARATOR)) : '';\n}\n\n/**\n * Gets the next DOM ID on the tree path from the supplied `ancestorID` to the\n * supplied `destinationID`. If they are equal, the ID is returned.\n *\n * @param {string} ancestorID ID of an ancestor node of `destinationID`.\n * @param {string} destinationID ID of the destination node.\n * @return {string} Next ID on the path from `ancestorID` to `destinationID`.\n * @private\n */\nfunction getNextDescendantID(ancestorID, destinationID) {\n invariant(\n isValidID(ancestorID) && isValidID(destinationID),\n 'getNextDescendantID(%s, %s): Received an invalid React DOM ID.',\n ancestorID,\n destinationID\n );\n invariant(\n isAncestorIDOf(ancestorID, destinationID),\n 'getNextDescendantID(...): React has made an invalid assumption about ' +\n 'the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.',\n ancestorID,\n destinationID\n );\n if (ancestorID === destinationID) {\n return ancestorID;\n }\n // Skip over the ancestor and the immediate separator. Traverse until we hit\n // another separator or we reach the end of `destinationID`.\n var start = ancestorID.length + SEPARATOR_LENGTH;\n for (var i = start; i < destinationID.length; i++) {\n if (isBoundary(destinationID, i)) {\n break;\n }\n }\n return destinationID.substr(0, i);\n}\n\n/**\n * Gets the nearest common ancestor ID of two IDs.\n *\n * Using this ID scheme, the nearest common ancestor ID is the longest common\n * prefix of the two IDs that immediately preceded a \"marker\" in both strings.\n *\n * @param {string} oneID\n * @param {string} twoID\n * @return {string} Nearest common ancestor ID, or the empty string if none.\n * @private\n */\nfunction getFirstCommonAncestorID(oneID, twoID) {\n var minLength = Math.min(oneID.length, twoID.length);\n if (minLength === 0) {\n return '';\n }\n var lastCommonMarkerIndex = 0;\n // Use `<=` to traverse until the \"EOL\" of the shorter string.\n for (var i = 0; i <= minLength; i++) {\n if (isBoundary(oneID, i) && isBoundary(twoID, i)) {\n lastCommonMarkerIndex = i;\n } else if (oneID.charAt(i) !== twoID.charAt(i)) {\n break;\n }\n }\n var longestCommonID = oneID.substr(0, lastCommonMarkerIndex);\n invariant(\n isValidID(longestCommonID),\n 'getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s',\n oneID,\n twoID,\n longestCommonID\n );\n return longestCommonID;\n}\n\n/**\n * Traverses the parent path between two IDs (either up or down). The IDs must\n * not be the same, and there must exist a parent path between them. If the\n * callback returns `false`, traversal is stopped.\n *\n * @param {?string} start ID at which to start traversal.\n * @param {?string} stop ID at which to end traversal.\n * @param {function} cb Callback to invoke each ID with.\n * @param {?boolean} skipFirst Whether or not to skip the first node.\n * @param {?boolean} skipLast Whether or not to skip the last node.\n * @private\n */\nfunction traverseParentPath(start, stop, cb, arg, skipFirst, skipLast) {\n start = start || '';\n stop = stop || '';\n invariant(\n start !== stop,\n 'traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.',\n start\n );\n var traverseUp = isAncestorIDOf(stop, start);\n invariant(\n traverseUp || isAncestorIDOf(start, stop),\n 'traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do ' +\n 'not have a parent path.',\n start,\n stop\n );\n // Traverse from `start` to `stop` one depth at a time.\n var depth = 0;\n var traverse = traverseUp ? getParentID : getNextDescendantID;\n for (var id = start; /* until break */; id = traverse(id, stop)) {\n var ret;\n if ((!skipFirst || id !== start) && (!skipLast || id !== stop)) {\n ret = cb(id, traverseUp, arg);\n }\n if (ret === false || id === stop) {\n // Only break //after// visiting `stop`.\n break;\n }\n invariant(\n depth++ < MAX_TREE_DEPTH,\n 'traverseParentPath(%s, %s, ...): Detected an infinite loop while ' +\n 'traversing the React DOM ID tree. This may be due to malformed IDs: %s',\n start, stop\n );\n }\n}\n\n/**\n * Manages the IDs assigned to DOM representations of React components. This\n * uses a specific scheme in order to traverse the DOM efficiently (e.g. in\n * order to simulate events).\n *\n * @internal\n */\nvar ReactInstanceHandles = {\n\n /**\n * Constructs a React root ID\n * @return {string} A React root ID.\n */\n createReactRootID: function() {\n return getReactRootIDString(ReactRootIndex.createReactRootIndex());\n },\n\n /**\n * Constructs a React ID by joining a root ID with a name.\n *\n * @param {string} rootID Root ID of a parent component.\n * @param {string} name A component's name (as flattened children).\n * @return {string} A React ID.\n * @internal\n */\n createReactID: function(rootID, name) {\n return rootID + name;\n },\n\n /**\n * Gets the DOM ID of the React component that is the root of the tree that\n * contains the React component with the supplied DOM ID.\n *\n * @param {string} id DOM ID of a React component.\n * @return {?string} DOM ID of the React component that is the root.\n * @internal\n */\n getReactRootIDFromNodeID: function(id) {\n if (id && id.charAt(0) === SEPARATOR && id.length > 1) {\n var index = id.indexOf(SEPARATOR, 1);\n return index > -1 ? id.substr(0, index) : id;\n }\n return null;\n },\n\n /**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * NOTE: Does not invoke the callback on the nearest common ancestor because\n * nothing \"entered\" or \"left\" that element.\n *\n * @param {string} leaveID ID being left.\n * @param {string} enterID ID being entered.\n * @param {function} cb Callback to invoke on each entered/left ID.\n * @param {*} upArg Argument to invoke the callback with on left IDs.\n * @param {*} downArg Argument to invoke the callback with on entered IDs.\n * @internal\n */\n traverseEnterLeave: function(leaveID, enterID, cb, upArg, downArg) {\n var ancestorID = getFirstCommonAncestorID(leaveID, enterID);\n if (ancestorID !== leaveID) {\n traverseParentPath(leaveID, ancestorID, cb, upArg, false, true);\n }\n if (ancestorID !== enterID) {\n traverseParentPath(ancestorID, enterID, cb, downArg, true, false);\n }\n },\n\n /**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n *\n * NOTE: This traversal happens on IDs without touching the DOM.\n *\n * @param {string} targetID ID of the target node.\n * @param {function} cb Callback to invoke.\n * @param {*} arg Argument to invoke the callback with.\n * @internal\n */\n traverseTwoPhase: function(targetID, cb, arg) {\n if (targetID) {\n traverseParentPath('', targetID, cb, arg, true, false);\n traverseParentPath(targetID, '', cb, arg, false, true);\n }\n },\n\n /**\n * Same as `traverseTwoPhase` but skips the `targetID`.\n */\n traverseTwoPhaseSkipTarget: function(targetID, cb, arg) {\n if (targetID) {\n traverseParentPath('', targetID, cb, arg, true, true);\n traverseParentPath(targetID, '', cb, arg, true, true);\n }\n },\n\n /**\n * Traverse a node ID, calling the supplied `cb` for each ancestor ID. For\n * example, passing `.0.$row-0.1` would result in `cb` getting called\n * with `.0`, `.0.$row-0`, and `.0.$row-0.1`.\n *\n * NOTE: This traversal happens on IDs without touching the DOM.\n *\n * @param {string} targetID ID of the target node.\n * @param {function} cb Callback to invoke.\n * @param {*} arg Argument to invoke the callback with.\n * @internal\n */\n traverseAncestors: function(targetID, cb, arg) {\n traverseParentPath('', targetID, cb, arg, true, false);\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _getFirstCommonAncestorID: getFirstCommonAncestorID,\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _getNextDescendantID: getNextDescendantID,\n\n isAncestorIDOf: isAncestorIDOf,\n\n SEPARATOR: SEPARATOR\n\n};\n\nmodule.exports = ReactInstanceHandles;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/core/ReactInstanceHandles.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRootIndex.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactRootIndexInjection={\n\n\n\ninjectCreateReactRootIndex:function(_createReactRootIndex){\nReactRootIndex.createReactRootIndex = _createReactRootIndex;}};\n\n\n\nvar ReactRootIndex={\ncreateReactRootIndex:null,\ninjection:ReactRootIndexInjection};\n\n\nmodule.exports = ReactRootIndex;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactRootIndex\n * @typechecks\n */\n\n'use strict';\n\nvar ReactRootIndexInjection = {\n /**\n * @param {function} _createReactRootIndex\n */\n injectCreateReactRootIndex: function(_createReactRootIndex) {\n ReactRootIndex.createReactRootIndex = _createReactRootIndex;\n }\n};\n\nvar ReactRootIndex = {\n createReactRootIndex: null,\n injection: ReactRootIndexInjection\n};\n\nmodule.exports = ReactRootIndex;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRootIndex.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/getIteratorFn.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ITERATOR_SYMBOL=typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL='@@iterator';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getIteratorFn(maybeIterable){\nvar iteratorFn=maybeIterable && (\nITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || \nmaybeIterable[FAUX_ITERATOR_SYMBOL]);\n\nif(typeof iteratorFn === 'function'){\nreturn iteratorFn;}}\n\n\n\nmodule.exports = getIteratorFn;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getIteratorFn\n * @typechecks static-only\n */\n\n'use strict';\n\n/* global Symbol */\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (\n (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL]) ||\n maybeIterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/getIteratorFn.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/class/ReactClass.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactComponent=require('ReactComponent');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactErrorUtils=require('ReactErrorUtils');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactLifeCycle=require('ReactLifeCycle');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\nvar ReactUpdateQueue=require('ReactUpdateQueue');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar keyOf=require('keyOf');\nvar warning=require('warning');\n\nvar MIXINS_KEY=keyOf({mixins:null});\n\n\n\n\nvar SpecPolicy=keyMirror({\n\n\n\nDEFINE_ONCE:null,\n\n\n\n\nDEFINE_MANY:null,\n\n\n\nOVERRIDE_BASE:null,\n\n\n\n\n\nDEFINE_MANY_MERGED:null});\n\n\n\nvar injectedMixins=[];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactClassInterface={\n\n\n\n\n\n\n\nmixins:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\nstatics:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\npropTypes:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\ncontextTypes:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\nchildContextTypes:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\ngetDefaultProps:SpecPolicy.DEFINE_MANY_MERGED,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ngetInitialState:SpecPolicy.DEFINE_MANY_MERGED,\n\n\n\n\n\ngetChildContext:SpecPolicy.DEFINE_MANY_MERGED,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrender:SpecPolicy.DEFINE_ONCE,\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillMount:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\ncomponentDidMount:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillReceiveProps:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nshouldComponentUpdate:SpecPolicy.DEFINE_ONCE,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillUpdate:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentDidUpdate:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillUnmount:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nupdateComponent:SpecPolicy.OVERRIDE_BASE};\n\n\n\n\n\n\n\n\n\n\n\n\nvar RESERVED_SPEC_KEYS={\ndisplayName:function(Constructor,displayName){\nConstructor.displayName = displayName;},\n\nmixins:function(Constructor,mixins){\nif(mixins){\nfor(var i=0;i < mixins.length;i++) {\nmixSpecIntoComponent(Constructor,mixins[i]);}}},\n\n\n\nchildContextTypes:function(Constructor,childContextTypes){\nif(__DEV__){\nvalidateTypeDef(\nConstructor,\nchildContextTypes,\nReactPropTypeLocations.childContext);}\n\n\nConstructor.childContextTypes = assign(\n{},\nConstructor.childContextTypes,\nchildContextTypes);},\n\n\ncontextTypes:function(Constructor,contextTypes){\nif(__DEV__){\nvalidateTypeDef(\nConstructor,\ncontextTypes,\nReactPropTypeLocations.context);}\n\n\nConstructor.contextTypes = assign(\n{},\nConstructor.contextTypes,\ncontextTypes);},\n\n\n\n\n\n\ngetDefaultProps:function(Constructor,getDefaultProps){\nif(Constructor.getDefaultProps){\nConstructor.getDefaultProps = createMergedResultFunction(\nConstructor.getDefaultProps,\ngetDefaultProps);}else \n\n{\nConstructor.getDefaultProps = getDefaultProps;}},\n\n\npropTypes:function(Constructor,propTypes){\nif(__DEV__){\nvalidateTypeDef(\nConstructor,\npropTypes,\nReactPropTypeLocations.prop);}\n\n\nConstructor.propTypes = assign(\n{},\nConstructor.propTypes,\npropTypes);},\n\n\nstatics:function(Constructor,statics){\nmixStaticSpecIntoComponent(Constructor,statics);}};\n\n\n\nfunction validateTypeDef(Constructor,typeDef,location){\nfor(var propName in typeDef) {\nif(typeDef.hasOwnProperty(propName)){\n\n\nwarning(\ntypeof typeDef[propName] === 'function',\n'%s: %s type `%s` is invalid; it must be a function, usually from ' + \n'React.PropTypes.',\nConstructor.displayName || 'ReactClass',\nReactPropTypeLocationNames[location],\npropName);}}}\n\n\n\n\n\nfunction validateMethodOverride(proto,name){\nvar specPolicy=ReactClassInterface.hasOwnProperty(name)?\nReactClassInterface[name]:\nnull;\n\n\nif(ReactClassMixin.hasOwnProperty(name)){\ninvariant(\nspecPolicy === SpecPolicy.OVERRIDE_BASE,\n'ReactClassInterface: You are attempting to override ' + \n'`%s` from your class specification. Ensure that your method names ' + \n'do not overlap with React methods.',\nname);}\n\n\n\n\nif(proto.hasOwnProperty(name)){\ninvariant(\nspecPolicy === SpecPolicy.DEFINE_MANY || \nspecPolicy === SpecPolicy.DEFINE_MANY_MERGED,\n'ReactClassInterface: You are attempting to define ' + \n'`%s` on your component more than once. This conflict may be due ' + \n'to a mixin.',\nname);}}\n\n\n\n\n\n\n\n\nfunction mixSpecIntoComponent(Constructor,spec){\nif(!spec){\nreturn;}\n\n\ninvariant(\ntypeof spec !== 'function',\n'ReactClass: You\\'re attempting to ' + \n'use a component class as a mixin. Instead, just use a regular object.');\n\ninvariant(\n!ReactElement.isValidElement(spec),\n'ReactClass: You\\'re attempting to ' + \n'use a component as a mixin. Instead, just use a regular object.');\n\n\nvar proto=Constructor.prototype;\n\n\n\n\nif(spec.hasOwnProperty(MIXINS_KEY)){\nRESERVED_SPEC_KEYS.mixins(Constructor,spec.mixins);}\n\n\nfor(var name in spec) {\nif(!spec.hasOwnProperty(name)){\ncontinue;}\n\n\nif(name === MIXINS_KEY){\n\ncontinue;}\n\n\nvar property=spec[name];\nvalidateMethodOverride(proto,name);\n\nif(RESERVED_SPEC_KEYS.hasOwnProperty(name)){\nRESERVED_SPEC_KEYS[name](Constructor,property);}else \n{\n\n\n\n\nvar isReactClassMethod=\nReactClassInterface.hasOwnProperty(name);\nvar isAlreadyDefined=proto.hasOwnProperty(name);\nvar markedDontBind=property && property.__reactDontBind;\nvar isFunction=typeof property === 'function';\nvar shouldAutoBind=\nisFunction && \n!isReactClassMethod && \n!isAlreadyDefined && \n!markedDontBind;\n\nif(shouldAutoBind){\nif(!proto.__reactAutoBindMap){\nproto.__reactAutoBindMap = {};}\n\nproto.__reactAutoBindMap[name] = property;\nproto[name] = property;}else \n{\nif(isAlreadyDefined){\nvar specPolicy=ReactClassInterface[name];\n\n\ninvariant(\nisReactClassMethod && (\nspecPolicy === SpecPolicy.DEFINE_MANY_MERGED || \nspecPolicy === SpecPolicy.DEFINE_MANY),\n\n'ReactClass: Unexpected spec policy %s for key %s ' + \n'when mixing in component specs.',\nspecPolicy,\nname);\n\n\n\n\nif(specPolicy === SpecPolicy.DEFINE_MANY_MERGED){\nproto[name] = createMergedResultFunction(proto[name],property);}else \nif(specPolicy === SpecPolicy.DEFINE_MANY){\nproto[name] = createChainedFunction(proto[name],property);}}else \n\n{\nproto[name] = property;\nif(__DEV__){\n\n\nif(typeof property === 'function' && spec.displayName){\nproto[name].displayName = spec.displayName + '_' + name;}}}}}}}\n\n\n\n\n\n\n\n\nfunction mixStaticSpecIntoComponent(Constructor,statics){\nif(!statics){\nreturn;}\n\nfor(var name in statics) {\nvar property=statics[name];\nif(!statics.hasOwnProperty(name)){\ncontinue;}\n\n\nvar isReserved=(name in RESERVED_SPEC_KEYS);\ninvariant(\n!isReserved,\n'ReactClass: You are attempting to define a reserved ' + \n'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' + \n'as an instance property instead; it will still be accessible on the ' + \n'constructor.',\nname);\n\n\nvar isInherited=(name in Constructor);\ninvariant(\n!isInherited,\n'ReactClass: You are attempting to define ' + \n'`%s` on your component more than once. This conflict may be ' + \n'due to a mixin.',\nname);\n\nConstructor[name] = property;}}\n\n\n\n\n\n\n\n\n\n\nfunction mergeIntoWithNoDuplicateKeys(one,two){\ninvariant(\none && two && typeof one === 'object' && typeof two === 'object',\n'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.');\n\n\nfor(var key in two) {\nif(two.hasOwnProperty(key)){\ninvariant(\none[key] === undefined,\n'mergeIntoWithNoDuplicateKeys(): ' + \n'Tried to merge two objects with the same key: `%s`. This conflict ' + \n'may be due to a mixin; in particular, this may be caused by two ' + \n'getInitialState() or getDefaultProps() methods returning objects ' + \n'with clashing keys.',\nkey);\n\none[key] = two[key];}}\n\n\nreturn one;}\n\n\n\n\n\n\n\n\n\n\nfunction createMergedResultFunction(one,two){\nreturn function mergedResult(){\nvar a=one.apply(this,arguments);\nvar b=two.apply(this,arguments);\nif(a == null){\nreturn b;}else \nif(b == null){\nreturn a;}\n\nvar c={};\nmergeIntoWithNoDuplicateKeys(c,a);\nmergeIntoWithNoDuplicateKeys(c,b);\nreturn c;};}\n\n\n\n\n\n\n\n\n\n\n\nfunction createChainedFunction(one,two){\nreturn function chainedFunction(){\none.apply(this,arguments);\ntwo.apply(this,arguments);};}\n\n\n\n\n\n\n\n\n\n\nfunction bindAutoBindMethod(component,method){\nvar boundMethod=method.bind(component);\nif(__DEV__){\nboundMethod.__reactBoundContext = component;\nboundMethod.__reactBoundMethod = method;\nboundMethod.__reactBoundArguments = null;\nvar componentName=component.constructor.displayName;\nvar _bind=boundMethod.bind;\n\nboundMethod.bind = function(newThis){for(var _len=arguments.length,args=Array(_len > 1?_len - 1:0),_key=1;_key < _len;_key++) {args[_key - 1] = arguments[_key];}\n\n\n\nif(newThis !== component && newThis !== null){\nwarning(\nfalse,\n'bind(): React component methods may only be bound to the ' + \n'component instance. See %s',\ncomponentName);}else \n\nif(!args.length){\nwarning(\nfalse,\n'bind(): You are binding a component method to the component. ' + \n'React does this for you automatically in a high-performance ' + \n'way, so you can safely remove this call. See %s',\ncomponentName);\n\nreturn boundMethod;}\n\nvar reboundMethod=_bind.apply(boundMethod,arguments);\nreboundMethod.__reactBoundContext = component;\nreboundMethod.__reactBoundMethod = method;\nreboundMethod.__reactBoundArguments = args;\nreturn reboundMethod;};}\n\n\n\nreturn boundMethod;}\n\n\n\n\n\n\n\nfunction bindAutoBindMethods(component){\nfor(var autoBindKey in component.__reactAutoBindMap) {\nif(component.__reactAutoBindMap.hasOwnProperty(autoBindKey)){\nvar method=component.__reactAutoBindMap[autoBindKey];\ncomponent[autoBindKey] = bindAutoBindMethod(\ncomponent,\nReactErrorUtils.guard(\nmethod,\ncomponent.constructor.displayName + '.' + autoBindKey));}}}\n\n\n\n\n\n\nvar typeDeprecationDescriptor={\nenumerable:false,\nget:function(){\nvar displayName=this.displayName || this.name || 'Component';\nwarning(\nfalse,\n'%s.type is deprecated. Use %s directly to access the class.',\ndisplayName,\ndisplayName);\n\nObject.defineProperty(this,'type',{\nvalue:this});\n\nreturn this;}};\n\n\n\n\n\n\n\nvar ReactClassMixin={\n\n\n\n\n\nreplaceState:function(newState,callback){\nReactUpdateQueue.enqueueReplaceState(this,newState);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}},\n\n\n\n\n\n\n\n\n\nisMounted:function(){\nif(__DEV__){\nvar owner=ReactCurrentOwner.current;\nif(owner !== null){\nwarning(\nowner._warnedAboutRefsInRender,\n'%s is accessing isMounted inside its render() function. ' + \n'render() should be a pure function of props and state. It should ' + \n'never access something that requires stale data from the previous ' + \n'render, such as refs. Move this logic to componentDidMount and ' + \n'componentDidUpdate instead.',\nowner.getName() || 'A component');\n\nowner._warnedAboutRefsInRender = true;}}\n\n\nvar internalInstance=ReactInstanceMap.get(this);\nreturn (\ninternalInstance && \ninternalInstance !== ReactLifeCycle.currentlyMountingInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\nsetProps:function(partialProps,callback){\nReactUpdateQueue.enqueueSetProps(this,partialProps);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}},\n\n\n\n\n\n\n\n\n\n\n\n\nreplaceProps:function(newProps,callback){\nReactUpdateQueue.enqueueReplaceProps(this,newProps);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}}};\n\n\n\n\nvar ReactClassComponent=function(){};\nassign(\nReactClassComponent.prototype,\nReactComponent.prototype,\nReactClassMixin);\n\n\n\n\n\n\n\nvar ReactClass={\n\n\n\n\n\n\n\n\ncreateClass:function(spec){\nvar Constructor=function(props,context){\n\n\n\nif(__DEV__){\nwarning(\nthis instanceof Constructor,\n'Something is calling a React component directly. Use a factory or ' + \n'JSX instead. See: http://fb.me/react-legacyfactory');}\n\n\n\n\nif(this.__reactAutoBindMap){\nbindAutoBindMethods(this);}\n\n\nthis.props = props;\nthis.context = context;\nthis.state = null;\n\n\n\n\nvar initialState=this.getInitialState?this.getInitialState():null;\nif(__DEV__){\n\nif(typeof initialState === 'undefined' && \nthis.getInitialState._isMockFunction){\n\n\ninitialState = null;}}\n\n\ninvariant(\ntypeof initialState === 'object' && !Array.isArray(initialState),\n'%s.getInitialState(): must return an object or null',\nConstructor.displayName || 'ReactCompositeComponent');\n\n\nthis.state = initialState;};\n\nConstructor.prototype = new ReactClassComponent();\nConstructor.prototype.constructor = Constructor;\n\ninjectedMixins.forEach(\nmixSpecIntoComponent.bind(null,Constructor));\n\n\nmixSpecIntoComponent(Constructor,spec);\n\n\nif(Constructor.getDefaultProps){\nConstructor.defaultProps = Constructor.getDefaultProps();}\n\n\nif(__DEV__){\n\n\n\n\nif(Constructor.getDefaultProps){\nConstructor.getDefaultProps.isReactClassApproved = {};}\n\nif(Constructor.prototype.getInitialState){\nConstructor.prototype.getInitialState.isReactClassApproved = {};}}\n\n\n\ninvariant(\nConstructor.prototype.render,\n'createClass(...): Class specification must implement a `render` method.');\n\n\nif(__DEV__){\nwarning(\n!Constructor.prototype.componentShouldUpdate,\n'%s has a method called ' + \n'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + \n'The name is phrased as a question because the function is ' + \n'expected to return a value.',\nspec.displayName || 'A component');}\n\n\n\n\nfor(var methodName in ReactClassInterface) {\nif(!Constructor.prototype[methodName]){\nConstructor.prototype[methodName] = null;}}\n\n\n\n\nConstructor.type = Constructor;\nif(__DEV__){\ntry{\nObject.defineProperty(Constructor,'type',typeDeprecationDescriptor);}\ncatch(x) {}}\n\n\n\n\nreturn Constructor;},\n\n\ninjection:{\ninjectMixin:function(mixin){\ninjectedMixins.push(mixin);}}};\n\n\n\n\n\nmodule.exports = ReactClass;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactClass\n */\n\n'use strict';\n\nvar ReactComponent = require('ReactComponent');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactErrorUtils = require('ReactErrorUtils');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactLifeCycle = require('ReactLifeCycle');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\nvar ReactUpdateQueue = require('ReactUpdateQueue');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar keyOf = require('keyOf');\nvar warning = require('warning');\n\nvar MIXINS_KEY = keyOf({mixins: null});\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\nvar SpecPolicy = keyMirror({\n /**\n * These methods may be defined only once by the class specification or mixin.\n */\n DEFINE_ONCE: null,\n /**\n * These methods may be defined by both the class specification and mixins.\n * Subsequent definitions will be chained. These methods must return void.\n */\n DEFINE_MANY: null,\n /**\n * These methods are overriding the base class.\n */\n OVERRIDE_BASE: null,\n /**\n * These methods are similar to DEFINE_MANY, except we assume they return\n * objects. We try to merge the keys of the return values of all the mixed in\n * functions. If there is a key conflict we throw.\n */\n DEFINE_MANY_MERGED: null\n});\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or native components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: SpecPolicy.DEFINE_MANY,\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: SpecPolicy.DEFINE_MANY,\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @nosideeffects\n * @required\n */\n render: SpecPolicy.DEFINE_ONCE,\n\n\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: SpecPolicy.DEFINE_ONCE,\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: SpecPolicy.DEFINE_MANY,\n\n\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: SpecPolicy.OVERRIDE_BASE\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (__DEV__) {\n validateTypeDef(\n Constructor,\n childContextTypes,\n ReactPropTypeLocations.childContext\n );\n }\n Constructor.childContextTypes = assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (__DEV__) {\n validateTypeDef(\n Constructor,\n contextTypes,\n ReactPropTypeLocations.context\n );\n }\n Constructor.contextTypes = assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (__DEV__) {\n validateTypeDef(\n Constructor,\n propTypes,\n ReactPropTypeLocations.prop\n );\n }\n Constructor.propTypes = assign(\n {},\n Constructor.propTypes,\n propTypes\n );\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n }\n};\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but not in __DEV__\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n}\n\nfunction validateMethodOverride(proto, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ?\n ReactClassInterface[name] :\n null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n invariant(\n specPolicy === SpecPolicy.OVERRIDE_BASE,\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (proto.hasOwnProperty(name)) {\n invariant(\n specPolicy === SpecPolicy.DEFINE_MANY ||\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED,\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classses.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n return;\n }\n\n invariant(\n typeof spec !== 'function',\n 'ReactClass: You\\'re attempting to ' +\n 'use a component class as a mixin. Instead, just use a regular object.'\n );\n invariant(\n !ReactElement.isValidElement(spec),\n 'ReactClass: You\\'re attempting to ' +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above\n continue;\n }\n\n var property = spec[name];\n validateMethodOverride(proto, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod =\n ReactClassInterface.hasOwnProperty(name);\n var isAlreadyDefined = proto.hasOwnProperty(name);\n var markedDontBind = property && property.__reactDontBind;\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n !markedDontBind;\n\n if (shouldAutoBind) {\n if (!proto.__reactAutoBindMap) {\n proto.__reactAutoBindMap = {};\n }\n proto.__reactAutoBindMap[name] = property;\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride\n invariant(\n isReactClassMethod && (\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED ||\n specPolicy === SpecPolicy.DEFINE_MANY\n ),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === SpecPolicy.DEFINE_MANY) {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (__DEV__) {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isInherited = name in Constructor;\n invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (__DEV__) {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n /* eslint-disable block-scoped-var, no-undef */\n boundMethod.bind = function(newThis, ...args) {\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n } else if (!args.length) {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n /* eslint-enable */\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n for (var autoBindKey in component.__reactAutoBindMap) {\n if (component.__reactAutoBindMap.hasOwnProperty(autoBindKey)) {\n var method = component.__reactAutoBindMap[autoBindKey];\n component[autoBindKey] = bindAutoBindMethod(\n component,\n ReactErrorUtils.guard(\n method,\n component.constructor.displayName + '.' + autoBindKey\n )\n );\n }\n }\n}\n\nvar typeDeprecationDescriptor = {\n enumerable: false,\n get: function() {\n var displayName = this.displayName || this.name || 'Component';\n warning(\n false,\n '%s.type is deprecated. Use %s directly to access the class.',\n displayName,\n displayName\n );\n Object.defineProperty(this, 'type', {\n value: this\n });\n return this;\n }\n};\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n ReactUpdateQueue.enqueueReplaceState(this, newState);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (__DEV__) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n warning(\n owner._warnedAboutRefsInRender,\n '%s is accessing isMounted inside its render() function. ' +\n 'render() should be a pure function of props and state. It should ' +\n 'never access something that requires stale data from the previous ' +\n 'render, such as refs. Move this logic to componentDidMount and ' +\n 'componentDidUpdate instead.',\n owner.getName() || 'A component'\n );\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(this);\n return (\n internalInstance &&\n internalInstance !== ReactLifeCycle.currentlyMountingInstance\n );\n },\n\n /**\n * Sets a subset of the props.\n *\n * @param {object} partialProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @public\n * @deprecated\n */\n setProps: function(partialProps, callback) {\n ReactUpdateQueue.enqueueSetProps(this, partialProps);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n },\n\n /**\n * Replace all the props.\n *\n * @param {object} newProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @public\n * @deprecated\n */\n replaceProps: function(newProps, callback) {\n ReactUpdateQueue.enqueueReplaceProps(this, newProps);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n }\n};\n\nvar ReactClassComponent = function() {};\nassign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n);\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function(spec) {\n var Constructor = function(props, context) {\n // This constructor is overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (__DEV__) {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: http://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindMap) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (__DEV__) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (typeof initialState === 'undefined' &&\n this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n };\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n\n injectedMixins.forEach(\n mixSpecIntoComponent.bind(null, Constructor)\n );\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (__DEV__) {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (__DEV__) {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n // Legacy hook\n Constructor.type = Constructor;\n if (__DEV__) {\n try {\n Object.defineProperty(Constructor, 'type', typeDeprecationDescriptor);\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function(mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/class/ReactClass.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/modern/class/ReactComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactUpdateQueue=require('ReactUpdateQueue');\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\n\n\nfunction ReactComponent(props,context){\nthis.props = props;\nthis.context = context;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nReactComponent.prototype.setState = function(partialState,callback){\ninvariant(\ntypeof partialState === 'object' || \ntypeof partialState === 'function' || \npartialState == null,\n'setState(...): takes an object of state variables to update or a ' + \n'function which returns an object of state variables.');\n\nif(__DEV__){\nwarning(\npartialState != null,\n'setState(...): You passed an undefined or null state object; ' + \n'instead, use forceUpdate().');}\n\n\nReactUpdateQueue.enqueueSetState(this,partialState);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nReactComponent.prototype.forceUpdate = function(callback){\nReactUpdateQueue.enqueueForceUpdate(this);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}};\n\n\n\n\n\n\n\n\nif(__DEV__){\nvar deprecatedAPIs={\ngetDOMNode:'getDOMNode',\nisMounted:'isMounted',\nreplaceProps:'replaceProps',\nreplaceState:'replaceState',\nsetProps:'setProps'};\n\nvar defineDeprecationWarning=function(methodName,displayName){\ntry{\nObject.defineProperty(ReactComponent.prototype,methodName,{\nget:function(){\nwarning(\nfalse,\n'%s(...) is deprecated in plain JavaScript React classes.',\ndisplayName);\n\nreturn undefined;}});}\n\n\ncatch(x) {}};\n\n\n\nfor(var fnName in deprecatedAPIs) {\nif(deprecatedAPIs.hasOwnProperty(fnName)){\ndefineDeprecationWarning(fnName,deprecatedAPIs[fnName]);}}}\n\n\n\n\nmodule.exports = ReactComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponent\n */\n\n'use strict';\n\nvar ReactUpdateQueue = require('ReactUpdateQueue');\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context) {\n this.props = props;\n this.context = context;\n}\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function(partialState, callback) {\n invariant(\n typeof partialState === 'object' ||\n typeof partialState === 'function' ||\n partialState == null,\n 'setState(...): takes an object of state variables to update or a ' +\n 'function which returns an object of state variables.'\n );\n if (__DEV__) {\n warning(\n partialState != null,\n 'setState(...): You passed an undefined or null state object; ' +\n 'instead, use forceUpdate().'\n );\n }\n ReactUpdateQueue.enqueueSetState(this, partialState);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function(callback) {\n ReactUpdateQueue.enqueueForceUpdate(this);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (__DEV__) {\n var deprecatedAPIs = {\n getDOMNode: 'getDOMNode',\n isMounted: 'isMounted',\n replaceProps: 'replaceProps',\n replaceState: 'replaceState',\n setProps: 'setProps'\n };\n var defineDeprecationWarning = function(methodName, displayName) {\n try {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function() {\n warning(\n false,\n '%s(...) is deprecated in plain JavaScript React classes.',\n displayName\n );\n return undefined;\n }\n });\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/modern/class/ReactComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdateQueue.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactLifeCycle=require('ReactLifeCycle');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactUpdates=require('ReactUpdates');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nfunction enqueueUpdate(internalInstance){\nif(internalInstance !== ReactLifeCycle.currentlyMountingInstance){\n\n\n\n\nReactUpdates.enqueueUpdate(internalInstance);}}\n\n\n\nfunction getInternalInstanceReadyForUpdate(publicInstance,callerName){\ninvariant(\nReactCurrentOwner.current == null,\n'%s(...): Cannot update during an existing state transition ' + \n'(such as within `render`). Render methods should be a pure function ' + \n'of props and state.',\ncallerName);\n\n\nvar internalInstance=ReactInstanceMap.get(publicInstance);\nif(!internalInstance){\nif(__DEV__){\n\n\n\nwarning(\n!callerName,\n'%s(...): Can only update a mounted or mounting component. ' + \n'This usually means you called %s() on an unmounted ' + \n'component. This is a no-op.',\ncallerName,\ncallerName);}\n\n\nreturn null;}\n\n\nif(internalInstance === ReactLifeCycle.currentlyUnmountingInstance){\nreturn null;}\n\n\nreturn internalInstance;}\n\n\n\n\n\n\nvar ReactUpdateQueue={\n\n\n\n\n\n\n\n\n\nenqueueCallback:function(publicInstance,callback){\ninvariant(\ntypeof callback === 'function',\n'enqueueCallback(...): You called `setProps`, `replaceProps`, ' + \n'`setState`, `replaceState`, or `forceUpdate` with a callback that ' + \n'isn\\'t callable.');\n\nvar internalInstance=getInternalInstanceReadyForUpdate(publicInstance);\n\n\n\n\n\n\nif(!internalInstance || \ninternalInstance === ReactLifeCycle.currentlyMountingInstance){\nreturn null;}\n\n\nif(internalInstance._pendingCallbacks){\ninternalInstance._pendingCallbacks.push(callback);}else \n{\ninternalInstance._pendingCallbacks = [callback];}\n\n\n\n\n\nenqueueUpdate(internalInstance);},\n\n\nenqueueCallbackInternal:function(internalInstance,callback){\ninvariant(\ntypeof callback === 'function',\n'enqueueCallback(...): You called `setProps`, `replaceProps`, ' + \n'`setState`, `replaceState`, or `forceUpdate` with a callback that ' + \n'isn\\'t callable.');\n\nif(internalInstance._pendingCallbacks){\ninternalInstance._pendingCallbacks.push(callback);}else \n{\ninternalInstance._pendingCallbacks = [callback];}\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nenqueueForceUpdate:function(publicInstance){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'forceUpdate');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninternalInstance._pendingForceUpdate = true;\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nenqueueReplaceState:function(publicInstance,completeState){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'replaceState');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninternalInstance._pendingStateQueue = [completeState];\ninternalInstance._pendingReplaceState = true;\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\nenqueueSetState:function(publicInstance,partialState){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'setState');\n\n\nif(!internalInstance){\nreturn;}\n\n\nvar queue=\ninternalInstance._pendingStateQueue || (\ninternalInstance._pendingStateQueue = []);\nqueue.push(partialState);\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\nenqueueSetProps:function(publicInstance,partialProps){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'setProps');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninvariant(\ninternalInstance._isTopLevel,\n'setProps(...): You called `setProps` on a ' + \n'component with a parent. This is an anti-pattern since props will ' + \n'get reactively updated when rendered. Instead, change the owner\\'s ' + \n'`render` method to pass the correct value as props to the component ' + \n'where it is created.');\n\n\n\n\nvar element=internalInstance._pendingElement || \ninternalInstance._currentElement;\nvar props=assign({},element.props,partialProps);\ninternalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\nelement,\nprops);\n\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\nenqueueReplaceProps:function(publicInstance,props){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'replaceProps');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninvariant(\ninternalInstance._isTopLevel,\n'replaceProps(...): You called `replaceProps` on a ' + \n'component with a parent. This is an anti-pattern since props will ' + \n'get reactively updated when rendered. Instead, change the owner\\'s ' + \n'`render` method to pass the correct value as props to the component ' + \n'where it is created.');\n\n\n\n\nvar element=internalInstance._pendingElement || \ninternalInstance._currentElement;\ninternalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\nelement,\nprops);\n\n\nenqueueUpdate(internalInstance);},\n\n\nenqueueElementInternal:function(internalInstance,newElement){\ninternalInstance._pendingElement = newElement;\nenqueueUpdate(internalInstance);}};\n\n\n\n\nmodule.exports = ReactUpdateQueue;","sourceCode":"/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactUpdateQueue\n */\n\n'use strict';\n\nvar ReactLifeCycle = require('ReactLifeCycle');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactUpdates = require('ReactUpdates');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nfunction enqueueUpdate(internalInstance) {\n if (internalInstance !== ReactLifeCycle.currentlyMountingInstance) {\n // If we're in a componentWillMount handler, don't enqueue a rerender\n // because ReactUpdates assumes we're in a browser context (which is\n // wrong for server rendering) and we're about to do a render anyway.\n // See bug in #1740.\n ReactUpdates.enqueueUpdate(internalInstance);\n }\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n invariant(\n ReactCurrentOwner.current == null,\n '%s(...): Cannot update during an existing state transition ' +\n '(such as within `render`). Render methods should be a pure function ' +\n 'of props and state.',\n callerName\n );\n\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (__DEV__) {\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n warning(\n !callerName,\n '%s(...): Can only update a mounted or mounting component. ' +\n 'This usually means you called %s() on an unmounted ' +\n 'component. This is a no-op.',\n callerName,\n callerName\n );\n }\n return null;\n }\n\n if (internalInstance === ReactLifeCycle.currentlyUnmountingInstance) {\n return null;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function(publicInstance, callback) {\n invariant(\n typeof callback === 'function',\n 'enqueueCallback(...): You called `setProps`, `replaceProps`, ' +\n '`setState`, `replaceState`, or `forceUpdate` with a callback that ' +\n 'isn\\'t callable.'\n );\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance ||\n internalInstance === ReactLifeCycle.currentlyMountingInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function(internalInstance, callback) {\n invariant(\n typeof callback === 'function',\n 'enqueueCallback(...): You called `setProps`, `replaceProps`, ' +\n '`setState`, `replaceState`, or `forceUpdate` with a callback that ' +\n 'isn\\'t callable.'\n );\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldUpdateComponent`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function(publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'forceUpdate'\n );\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function(publicInstance, completeState) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'replaceState'\n );\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function(publicInstance, partialState) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'setState'\n );\n\n if (!internalInstance) {\n return;\n }\n\n var queue =\n internalInstance._pendingStateQueue ||\n (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the props.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialProps Subset of the next props.\n * @internal\n */\n enqueueSetProps: function(publicInstance, partialProps) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'setProps'\n );\n\n if (!internalInstance) {\n return;\n }\n\n invariant(\n internalInstance._isTopLevel,\n 'setProps(...): You called `setProps` on a ' +\n 'component with a parent. This is an anti-pattern since props will ' +\n 'get reactively updated when rendered. Instead, change the owner\\'s ' +\n '`render` method to pass the correct value as props to the component ' +\n 'where it is created.'\n );\n\n // Merge with the pending element if it exists, otherwise with existing\n // element props.\n var element = internalInstance._pendingElement ||\n internalInstance._currentElement;\n var props = assign({}, element.props, partialProps);\n internalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n props\n );\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the props.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} props New props.\n * @internal\n */\n enqueueReplaceProps: function(publicInstance, props) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'replaceProps'\n );\n\n if (!internalInstance) {\n return;\n }\n\n invariant(\n internalInstance._isTopLevel,\n 'replaceProps(...): You called `replaceProps` on a ' +\n 'component with a parent. This is an anti-pattern since props will ' +\n 'get reactively updated when rendered. Instead, change the owner\\'s ' +\n '`render` method to pass the correct value as props to the component ' +\n 'where it is created.'\n );\n\n // Merge with the pending element if it exists, otherwise with existing\n // element props.\n var element = internalInstance._pendingElement ||\n internalInstance._currentElement;\n internalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n props\n );\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function(internalInstance, newElement) {\n internalInstance._pendingElement = newElement;\n enqueueUpdate(internalInstance);\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdateQueue.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactLifeCycle.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactLifeCycle={\ncurrentlyMountingInstance:null,\ncurrentlyUnmountingInstance:null};\n\n\nmodule.exports = ReactLifeCycle;","sourceCode":"/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactLifeCycle\n */\n\n'use strict';\n\n/**\n * This module manages the bookkeeping when a component is in the process\n * of being mounted or being unmounted. This is used as a way to enforce\n * invariants (or warnings) when it is not recommended to call\n * setState/forceUpdate.\n *\n * currentlyMountingInstance: During the construction phase, it is not possible\n * to trigger an update since the instance is not fully mounted yet. However, we\n * currently allow this as a convenience for mutating the initial state.\n *\n * currentlyUnmountingInstance: During the unmounting phase, the instance is\n * still mounted and can therefore schedule an update. However, this is not\n * recommended and probably an error since it's about to be unmounted.\n * Therefore we still want to trigger in an error for that case.\n */\n\nvar ReactLifeCycle = {\n currentlyMountingInstance: null,\n currentlyUnmountingInstance: null\n};\n\nmodule.exports = ReactLifeCycle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactLifeCycle.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactInstanceMap.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactInstanceMap={\n\n\n\n\n\n\nremove:function(key){\nkey._reactInternalInstance = undefined;},\n\n\nget:function(key){\nreturn key._reactInternalInstance;},\n\n\nhas:function(key){\nreturn key._reactInternalInstance !== undefined;},\n\n\nset:function(key,value){\nkey._reactInternalInstance = value;}};\n\n\n\n\nmodule.exports = ReactInstanceMap;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInstanceMap\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function(key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function(key) {\n return key._reactInternalInstance;\n },\n\n has: function(key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function(key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactInstanceMap.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdates.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar CallbackQueue=require('CallbackQueue');\nvar PooledClass=require('PooledClass');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactPerf=require('ReactPerf');\nvar ReactReconciler=require('ReactReconciler');\nvar Transaction=require('Transaction');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nvar dirtyComponents=[];\nvar asapCallbackQueue=CallbackQueue.getPooled();\nvar asapEnqueued=false;\n\nvar batchingStrategy=null;\n\nfunction ensureInjected(){\ninvariant(\nReactUpdates.ReactReconcileTransaction && batchingStrategy,\n'ReactUpdates: must inject a reconcile transaction class and batching ' + \n'strategy');}\n\n\n\nvar NESTED_UPDATES={\ninitialize:function(){\nthis.dirtyComponentsLength = dirtyComponents.length;},\n\nclose:function(){\nif(this.dirtyComponentsLength !== dirtyComponents.length){\n\n\n\n\n\ndirtyComponents.splice(0,this.dirtyComponentsLength);\nflushBatchedUpdates();}else \n{\ndirtyComponents.length = 0;}}};\n\n\n\n\nvar UPDATE_QUEUEING={\ninitialize:function(){\nthis.callbackQueue.reset();},\n\nclose:function(){\nthis.callbackQueue.notifyAll();}};\n\n\n\nvar TRANSACTION_WRAPPERS=[NESTED_UPDATES,UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction(){\nthis.reinitializeTransaction();\nthis.dirtyComponentsLength = null;\nthis.callbackQueue = CallbackQueue.getPooled();\nthis.reconcileTransaction = \nReactUpdates.ReactReconcileTransaction.getPooled();}\n\n\nassign(\nReactUpdatesFlushTransaction.prototype,\nTransaction.Mixin,{\ngetTransactionWrappers:function(){\nreturn TRANSACTION_WRAPPERS;},\n\n\ndestructor:function(){\nthis.dirtyComponentsLength = null;\nCallbackQueue.release(this.callbackQueue);\nthis.callbackQueue = null;\nReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\nthis.reconcileTransaction = null;},\n\n\nperform:function(method,scope,a){\n\n\nreturn Transaction.Mixin.perform.call(\nthis,\nthis.reconcileTransaction.perform,\nthis.reconcileTransaction,\nmethod,\nscope,\na);}});\n\n\n\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback,a,b,c,d){\nensureInjected();\nbatchingStrategy.batchedUpdates(callback,a,b,c,d);}\n\n\n\n\n\n\n\n\n\nfunction mountOrderComparator(c1,c2){\nreturn c1._mountOrder - c2._mountOrder;}\n\n\nfunction runBatchedUpdates(transaction){\nvar len=transaction.dirtyComponentsLength;\ninvariant(\nlen === dirtyComponents.length,\n'Expected flush transaction\\'s stored dirty-components length (%s) to ' + \n'match dirty-components array length (%s).',\nlen,\ndirtyComponents.length);\n\n\n\n\n\ndirtyComponents.sort(mountOrderComparator);\n\nfor(var i=0;i < len;i++) {\n\n\n\nvar component=dirtyComponents[i];\n\n\n\n\nvar callbacks=component._pendingCallbacks;\ncomponent._pendingCallbacks = null;\n\nReactReconciler.performUpdateIfNecessary(\ncomponent,\ntransaction.reconcileTransaction);\n\n\nif(callbacks){\nfor(var j=0;j < callbacks.length;j++) {\ntransaction.callbackQueue.enqueue(\ncallbacks[j],\ncomponent.getPublicInstance());}}}}\n\n\n\n\n\n\nvar flushBatchedUpdates=function(){\n\n\n\n\nwhile(dirtyComponents.length || asapEnqueued) {\nif(dirtyComponents.length){\nvar transaction=ReactUpdatesFlushTransaction.getPooled();\ntransaction.perform(runBatchedUpdates,null,transaction);\nReactUpdatesFlushTransaction.release(transaction);}\n\n\nif(asapEnqueued){\nasapEnqueued = false;\nvar queue=asapCallbackQueue;\nasapCallbackQueue = CallbackQueue.getPooled();\nqueue.notifyAll();\nCallbackQueue.release(queue);}}};\n\n\n\nflushBatchedUpdates = ReactPerf.measure(\n'ReactUpdates',\n'flushBatchedUpdates',\nflushBatchedUpdates);\n\n\n\n\n\n\nfunction enqueueUpdate(component){\nensureInjected();\n\n\n\n\n\n\nwarning(\nReactCurrentOwner.current == null,\n'enqueueUpdate(): Render methods should be a pure function of props ' + \n'and state; triggering nested component updates from render is not ' + \n'allowed. If necessary, trigger nested updates in ' + \n'componentDidUpdate.');\n\n\nif(!batchingStrategy.isBatchingUpdates){\nbatchingStrategy.batchedUpdates(enqueueUpdate,component);\nreturn;}\n\n\ndirtyComponents.push(component);}\n\n\n\n\n\n\nfunction asap(callback,context){\ninvariant(\nbatchingStrategy.isBatchingUpdates,\n'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context where' + \n'updates are not being batched.');\n\nasapCallbackQueue.enqueue(callback,context);\nasapEnqueued = true;}\n\n\nvar ReactUpdatesInjection={\ninjectReconcileTransaction:function(ReconcileTransaction){\ninvariant(\nReconcileTransaction,\n'ReactUpdates: must provide a reconcile transaction class');\n\nReactUpdates.ReactReconcileTransaction = ReconcileTransaction;},\n\n\ninjectBatchingStrategy:function(_batchingStrategy){\ninvariant(\n_batchingStrategy,\n'ReactUpdates: must provide a batching strategy');\n\ninvariant(\ntypeof _batchingStrategy.batchedUpdates === 'function',\n'ReactUpdates: must provide a batchedUpdates() function');\n\ninvariant(\ntypeof _batchingStrategy.isBatchingUpdates === 'boolean',\n'ReactUpdates: must provide an isBatchingUpdates boolean attribute');\n\nbatchingStrategy = _batchingStrategy;}};\n\n\n\nvar ReactUpdates={\n\n\n\n\n\n\nReactReconcileTransaction:null,\n\nbatchedUpdates:batchedUpdates,\nenqueueUpdate:enqueueUpdate,\nflushBatchedUpdates:flushBatchedUpdates,\ninjection:ReactUpdatesInjection,\nasap:asap};\n\n\nmodule.exports = ReactUpdates;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactUpdates\n */\n\n'use strict';\n\nvar CallbackQueue = require('CallbackQueue');\nvar PooledClass = require('PooledClass');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactPerf = require('ReactPerf');\nvar ReactReconciler = require('ReactReconciler');\nvar Transaction = require('Transaction');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nvar dirtyComponents = [];\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n invariant(\n ReactUpdates.ReactReconcileTransaction && batchingStrategy,\n 'ReactUpdates: must inject a reconcile transaction class and batching ' +\n 'strategy'\n );\n}\n\nvar NESTED_UPDATES = {\n initialize: function() {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function() {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function() {\n this.callbackQueue.reset();\n },\n close: function() {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction =\n ReactUpdates.ReactReconcileTransaction.getPooled();\n}\n\nassign(\n ReactUpdatesFlushTransaction.prototype,\n Transaction.Mixin, {\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function() {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function(method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.Mixin.perform.call(\n this,\n this.reconcileTransaction.perform,\n this.reconcileTransaction,\n method,\n scope,\n a\n );\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d) {\n ensureInjected();\n batchingStrategy.batchedUpdates(callback, a, b, c, d);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n invariant(\n len === dirtyComponents.length,\n 'Expected flush transaction\\'s stored dirty-components length (%s) to ' +\n 'match dirty-components array length (%s).',\n len,\n dirtyComponents.length\n );\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n ReactReconciler.performUpdateIfNecessary(\n component,\n transaction.reconcileTransaction\n );\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(\n callbacks[j],\n component.getPublicInstance()\n );\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function() {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\nflushBatchedUpdates = ReactPerf.measure(\n 'ReactUpdates',\n 'flushBatchedUpdates',\n flushBatchedUpdates\n);\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setProps, setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n warning(\n ReactCurrentOwner.current == null,\n 'enqueueUpdate(): Render methods should be a pure function of props ' +\n 'and state; triggering nested component updates from render is not ' +\n 'allowed. If necessary, trigger nested updates in ' +\n 'componentDidUpdate.'\n );\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n invariant(\n batchingStrategy.isBatchingUpdates,\n 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context where' +\n 'updates are not being batched.'\n );\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function(ReconcileTransaction) {\n invariant(\n ReconcileTransaction,\n 'ReactUpdates: must provide a reconcile transaction class'\n );\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function(_batchingStrategy) {\n invariant(\n _batchingStrategy,\n 'ReactUpdates: must provide a batching strategy'\n );\n invariant(\n typeof _batchingStrategy.batchedUpdates === 'function',\n 'ReactUpdates: must provide a batchedUpdates() function'\n );\n invariant(\n typeof _batchingStrategy.isBatchingUpdates === 'boolean',\n 'ReactUpdates: must provide an isBatchingUpdates boolean attribute'\n );\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdates.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/CallbackQueue.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\nfunction CallbackQueue(){\nthis._callbacks = null;\nthis._contexts = null;}\n\n\nassign(CallbackQueue.prototype,{\n\n\n\n\n\n\n\n\nenqueue:function(callback,context){\nthis._callbacks = this._callbacks || [];\nthis._contexts = this._contexts || [];\nthis._callbacks.push(callback);\nthis._contexts.push(context);},\n\n\n\n\n\n\n\n\nnotifyAll:function(){\nvar callbacks=this._callbacks;\nvar contexts=this._contexts;\nif(callbacks){\ninvariant(\ncallbacks.length === contexts.length,\n'Mismatched list of contexts in callback queue');\n\nthis._callbacks = null;\nthis._contexts = null;\nfor(var i=0,l=callbacks.length;i < l;i++) {\ncallbacks[i].call(contexts[i]);}\n\ncallbacks.length = 0;\ncontexts.length = 0;}},\n\n\n\n\n\n\n\n\nreset:function(){\nthis._callbacks = null;\nthis._contexts = null;},\n\n\n\n\n\ndestructor:function(){\nthis.reset();}});\n\n\n\n\nPooledClass.addPoolingTo(CallbackQueue);\n\nmodule.exports = CallbackQueue;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CallbackQueue\n */\n\n'use strict';\n\nvar PooledClass = require('PooledClass');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\nfunction CallbackQueue() {\n this._callbacks = null;\n this._contexts = null;\n}\n\nassign(CallbackQueue.prototype, {\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n enqueue: function(callback, context) {\n this._callbacks = this._callbacks || [];\n this._contexts = this._contexts || [];\n this._callbacks.push(callback);\n this._contexts.push(context);\n },\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n notifyAll: function() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n if (callbacks) {\n invariant(\n callbacks.length === contexts.length,\n 'Mismatched list of contexts in callback queue'\n );\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0, l = callbacks.length; i < l; i++) {\n callbacks[i].call(contexts[i]);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n },\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n reset: function() {\n this._callbacks = null;\n this._contexts = null;\n },\n\n /**\n * `PooledClass` looks for this.\n */\n destructor: function() {\n this.reset();\n }\n\n});\n\nPooledClass.addPoolingTo(CallbackQueue);\n\nmodule.exports = CallbackQueue;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/CallbackQueue.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactPerf.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPerf={\n\n\n\n\nenableMeasure:false,\n\n\n\n\n\nstoredMeasure:_noMeasure,\n\n\n\n\n\n\nmeasureMethods:function(object,objectName,methodNames){\nif(__DEV__){\nfor(var key in methodNames) {\nif(!methodNames.hasOwnProperty(key)){\ncontinue;}\n\nobject[key] = ReactPerf.measure(\nobjectName,\nmethodNames[key],\nobject[key]);}}},\n\n\n\n\n\n\n\n\n\n\n\n\n\nmeasure:function(objName,fnName,func){\nif(__DEV__){\nvar measuredFunc=null;\nvar wrapper=function(){\nif(ReactPerf.enableMeasure){\nif(!measuredFunc){\nmeasuredFunc = ReactPerf.storedMeasure(objName,fnName,func);}\n\nreturn measuredFunc.apply(this,arguments);}\n\nreturn func.apply(this,arguments);};\n\nwrapper.displayName = objName + '_' + fnName;\nreturn wrapper;}\n\nreturn func;},\n\n\ninjection:{\n\n\n\ninjectMeasure:function(measure){\nReactPerf.storedMeasure = measure;}}};\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _noMeasure(objName,fnName,func){\nreturn func;}\n\n\nmodule.exports = ReactPerf;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPerf\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * ReactPerf is a general AOP system designed to measure performance. This\n * module only has the hooks: see ReactDefaultPerf for the analysis tool.\n */\nvar ReactPerf = {\n /**\n * Boolean to enable/disable measurement. Set to false by default to prevent\n * accidental logging and perf loss.\n */\n enableMeasure: false,\n\n /**\n * Holds onto the measure function in use. By default, don't measure\n * anything, but we'll override this if we inject a measure function.\n */\n storedMeasure: _noMeasure,\n\n /**\n * @param {object} object\n * @param {string} objectName\n * @param {object<string>} methodNames\n */\n measureMethods: function(object, objectName, methodNames) {\n if (__DEV__) {\n for (var key in methodNames) {\n if (!methodNames.hasOwnProperty(key)) {\n continue;\n }\n object[key] = ReactPerf.measure(\n objectName,\n methodNames[key],\n object[key]\n );\n }\n }\n },\n\n /**\n * Use this to wrap methods you want to measure. Zero overhead in production.\n *\n * @param {string} objName\n * @param {string} fnName\n * @param {function} func\n * @return {function}\n */\n measure: function(objName, fnName, func) {\n if (__DEV__) {\n var measuredFunc = null;\n var wrapper = function() {\n if (ReactPerf.enableMeasure) {\n if (!measuredFunc) {\n measuredFunc = ReactPerf.storedMeasure(objName, fnName, func);\n }\n return measuredFunc.apply(this, arguments);\n }\n return func.apply(this, arguments);\n };\n wrapper.displayName = objName + '_' + fnName;\n return wrapper;\n }\n return func;\n },\n\n injection: {\n /**\n * @param {function} measure\n */\n injectMeasure: function(measure) {\n ReactPerf.storedMeasure = measure;\n }\n }\n};\n\n/**\n * Simply passes through the measured function, without measuring it.\n *\n * @param {string} objName\n * @param {string} fnName\n * @param {function} func\n * @return {function}\n */\nfunction _noMeasure(objName, fnName, func) {\n return func;\n}\n\nmodule.exports = ReactPerf;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactPerf.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactReconciler.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactRef=require('ReactRef');\nvar ReactElementValidator=require('ReactElementValidator');\n\n\n\n\n\nfunction attachRefs(){\nReactRef.attachRefs(this,this._currentElement);}\n\n\nvar ReactReconciler={\n\n\n\n\n\n\n\n\n\n\n\nmountComponent:function(internalInstance,rootID,transaction,context){\nvar markup=internalInstance.mountComponent(rootID,transaction,context);\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(\ninternalInstance._currentElement);}\n\n\ntransaction.getReactMountReady().enqueue(attachRefs,internalInstance);\nreturn markup;},\n\n\n\n\n\n\n\n\nunmountComponent:function(internalInstance){\nReactRef.detachRefs(internalInstance,internalInstance._currentElement);\ninternalInstance.unmountComponent();},\n\n\n\n\n\n\n\n\n\n\n\nreceiveComponent:function(\ninternalInstance,nextElement,transaction,context)\n{\nvar prevElement=internalInstance._currentElement;\n\nif(nextElement === prevElement && nextElement._owner != null){\n\n\n\n\n\n\n\nreturn;}\n\n\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(nextElement);}\n\n\nvar refsChanged=ReactRef.shouldUpdateRefs(\nprevElement,\nnextElement);\n\n\nif(refsChanged){\nReactRef.detachRefs(internalInstance,prevElement);}\n\n\ninternalInstance.receiveComponent(nextElement,transaction,context);\n\nif(refsChanged){\ntransaction.getReactMountReady().enqueue(attachRefs,internalInstance);}},\n\n\n\n\n\n\n\n\n\n\nperformUpdateIfNecessary:function(\ninternalInstance,\ntransaction)\n{\ninternalInstance.performUpdateIfNecessary(transaction);}};\n\n\n\n\nmodule.exports = ReactReconciler;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactReconciler\n */\n\n'use strict';\n\nvar ReactRef = require('ReactRef');\nvar ReactElementValidator = require('ReactElementValidator');\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function(internalInstance, rootID, transaction, context) {\n var markup = internalInstance.mountComponent(rootID, transaction, context);\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(\n internalInstance._currentElement\n );\n }\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n return markup;\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function(internalInstance) {\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent();\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function(\n internalInstance, nextElement, transaction, context\n ) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && nextElement._owner != null) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n return;\n }\n\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(nextElement);\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(\n prevElement,\n nextElement\n );\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function(\n internalInstance,\n transaction\n ) {\n internalInstance.performUpdateIfNecessary(transaction);\n }\n\n};\n\nmodule.exports = ReactReconciler;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactReconciler.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRef.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactOwner=require('ReactOwner');\n\nvar ReactRef={};\n\nfunction attachRef(ref,component,owner){\nif(typeof ref === 'function'){\nref(component.getPublicInstance());}else \n{\n\nReactOwner.addComponentAsRefTo(component,ref,owner);}}\n\n\n\nfunction detachRef(ref,component,owner){\nif(typeof ref === 'function'){\nref(null);}else \n{\n\nReactOwner.removeComponentAsRefFrom(component,ref,owner);}}\n\n\n\nReactRef.attachRefs = function(instance,element){\nvar ref=element.ref;\nif(ref != null){\nattachRef(ref,instance,element._owner);}};\n\n\n\nReactRef.shouldUpdateRefs = function(prevElement,nextElement){\n\n\n\n\n\n\n\n\n\n\n\n\nreturn (\nnextElement._owner !== prevElement._owner || \nnextElement.ref !== prevElement.ref);};\n\n\n\nReactRef.detachRefs = function(instance,element){\nvar ref=element.ref;\nif(ref != null){\ndetachRef(ref,instance,element._owner);}};\n\n\n\nmodule.exports = ReactRef;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactRef\n */\n\n'use strict';\n\nvar ReactOwner = require('ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function(instance, element) {\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function(prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n return (\n nextElement._owner !== prevElement._owner ||\n nextElement.ref !== prevElement.ref\n );\n};\n\nReactRef.detachRefs = function(instance, element) {\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRef.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactOwner.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactOwner={\n\n\n\n\n\n\nisValidOwner:function(object){\nreturn !!(\nobject && \ntypeof object.attachRef === 'function' && \ntypeof object.detachRef === 'function');},\n\n\n\n\n\n\n\n\n\n\n\n\naddComponentAsRefTo:function(component,ref,owner){\ninvariant(\nReactOwner.isValidOwner(owner),\n'addComponentAsRefTo(...): Only a ReactOwner can have refs. This ' + \n'usually means that you\\'re trying to add a ref to a component that ' + \n'doesn\\'t have an owner (that is, was not created inside of another ' + \n'component\\'s `render` method). Try rendering this component inside of ' + \n'a new top-level component which will hold the ref.');\n\nowner.attachRef(ref,component);},\n\n\n\n\n\n\n\n\n\n\n\nremoveComponentAsRefFrom:function(component,ref,owner){\ninvariant(\nReactOwner.isValidOwner(owner),\n'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This ' + \n'usually means that you\\'re trying to remove a ref to a component that ' + \n'doesn\\'t have an owner (that is, was not created inside of another ' + \n'component\\'s `render` method). Try rendering this component inside of ' + \n'a new top-level component which will hold the ref.');\n\n\n\nif(owner.getPublicInstance().refs[ref] === component.getPublicInstance()){\nowner.detachRef(ref);}}};\n\n\n\n\n\nmodule.exports = ReactOwner;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactOwner\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n\n /**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\n isValidOwner: function(object) {\n return !!(\n object &&\n typeof object.attachRef === 'function' &&\n typeof object.detachRef === 'function'\n );\n },\n\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function(component, ref, owner) {\n invariant(\n ReactOwner.isValidOwner(owner),\n 'addComponentAsRefTo(...): Only a ReactOwner can have refs. This ' +\n 'usually means that you\\'re trying to add a ref to a component that ' +\n 'doesn\\'t have an owner (that is, was not created inside of another ' +\n 'component\\'s `render` method). Try rendering this component inside of ' +\n 'a new top-level component which will hold the ref.'\n );\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function(component, ref, owner) {\n invariant(\n ReactOwner.isValidOwner(owner),\n 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This ' +\n 'usually means that you\\'re trying to remove a ref to a component that ' +\n 'doesn\\'t have an owner (that is, was not created inside of another ' +\n 'component\\'s `render` method). Try rendering this component inside of ' +\n 'a new top-level component which will hold the ref.'\n );\n // Check that `component` is still the current ref because we do not want to\n // detach the ref if another component stole it.\n if (owner.getPublicInstance().refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactOwner.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElementValidator.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactFragment=require('ReactFragment');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactNativeComponent=require('ReactNativeComponent');\n\nvar getIteratorFn=require('getIteratorFn');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nfunction getDeclarationErrorAddendum(){\nif(ReactCurrentOwner.current){\nvar name=ReactCurrentOwner.current.getName();\nif(name){\nreturn ' Check the render method of `' + name + '`.';}}\n\n\nreturn '';}\n\n\n\n\n\n\n\nvar ownerHasKeyUseWarning={};\n\nvar loggedTypeFailures={};\n\nvar NUMERIC_PROPERTY_REGEX=/^\\d+$/;\n\n\n\n\n\n\n\nfunction getName(instance){\nvar publicInstance=instance && instance.getPublicInstance();\nif(!publicInstance){\nreturn undefined;}\n\nvar constructor=publicInstance.constructor;\nif(!constructor){\nreturn undefined;}\n\nreturn constructor.displayName || constructor.name || undefined;}\n\n\n\n\n\n\n\n\nfunction getCurrentOwnerDisplayName(){\nvar current=ReactCurrentOwner.current;\nreturn (\ncurrent && getName(current) || undefined);}\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validateExplicitKey(element,parentType){\nif(element._store.validated || element.key != null){\nreturn;}\n\nelement._store.validated = true;\n\nwarnAndMonitorForKeyUse(\n'Each child in an array or iterator should have a unique \"key\" prop.',\nelement,\nparentType);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validatePropertyKey(name,element,parentType){\nif(!NUMERIC_PROPERTY_REGEX.test(name)){\nreturn;}\n\nwarnAndMonitorForKeyUse(\n'Child objects should have non-numeric keys so ordering is preserved.',\nelement,\nparentType);}\n\n\n\n\n\n\n\n\n\n\n\nfunction warnAndMonitorForKeyUse(message,element,parentType){\nvar ownerName=getCurrentOwnerDisplayName();\nvar parentName=typeof parentType === 'string'?\nparentType:parentType.displayName || parentType.name;\n\nvar useName=ownerName || parentName;\nvar memoizer=ownerHasKeyUseWarning[message] || (\nownerHasKeyUseWarning[message] = {});\n\nif(memoizer.hasOwnProperty(useName)){\nreturn;}\n\nmemoizer[useName] = true;\n\nvar parentOrOwnerAddendum=\nownerName?' Check the render method of ' + ownerName + '.':\nparentName?' Check the React.render call using <' + parentName + '>.':\n'';\n\n\n\n\nvar childOwnerAddendum='';\nif(element && \nelement._owner && \nelement._owner !== ReactCurrentOwner.current){\n\nvar childOwnerName=getName(element._owner);\n\nchildOwnerAddendum = ' It was passed a child from ' + childOwnerName + '.';}\n\n\nwarning(\nfalse,\nmessage + '%s%s See http://fb.me/react-warning-keys for more information.',\nparentOrOwnerAddendum,\nchildOwnerAddendum);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validateChildKeys(node,parentType){\nif(Array.isArray(node)){\nfor(var i=0;i < node.length;i++) {\nvar child=node[i];\nif(ReactElement.isValidElement(child)){\nvalidateExplicitKey(child,parentType);}}}else \n\n\nif(ReactElement.isValidElement(node)){\n\nnode._store.validated = true;}else \nif(node){\nvar iteratorFn=getIteratorFn(node);\n\nif(iteratorFn){\nif(iteratorFn !== node.entries){\nvar iterator=iteratorFn.call(node);\nvar step;\nwhile(!(step = iterator.next()).done) {\nif(ReactElement.isValidElement(step.value)){\nvalidateExplicitKey(step.value,parentType);}}}}else \n\n\n\nif(typeof node === 'object'){\nvar fragment=ReactFragment.extractIfFragment(node);\nfor(var key in fragment) {\nif(fragment.hasOwnProperty(key)){\nvalidatePropertyKey(key,fragment[key],parentType);}}}}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction checkPropTypes(componentName,propTypes,props,location){\nfor(var propName in propTypes) {\nif(propTypes.hasOwnProperty(propName)){\nvar error;\n\n\n\ntry{\n\n\ninvariant(\ntypeof propTypes[propName] === 'function',\n'%s: %s type `%s` is invalid; it must be a function, usually from ' + \n'React.PropTypes.',\ncomponentName || 'React class',\nReactPropTypeLocationNames[location],\npropName);\n\nerror = propTypes[propName](props,propName,componentName,location);}\ncatch(ex) {\nerror = ex;}\n\nif(error instanceof Error && !(error.message in loggedTypeFailures)){\n\n\nloggedTypeFailures[error.message] = true;\n\nvar addendum=getDeclarationErrorAddendum(this);\nwarning(false,'Failed propType: %s%s',error.message,addendum);}}}}\n\n\n\n\n\nvar warnedPropsMutations={};\n\n\n\n\n\n\n\nfunction warnForPropsMutation(propName,element){\nvar type=element.type;\nvar elementName=typeof type === 'string'?type:type.displayName;\nvar ownerName=element._owner?\nelement._owner.getPublicInstance().constructor.displayName:null;\n\nvar warningKey=propName + '|' + elementName + '|' + ownerName;\nif(warnedPropsMutations.hasOwnProperty(warningKey)){\nreturn;}\n\nwarnedPropsMutations[warningKey] = true;\n\nvar elementInfo='';\nif(elementName){\nelementInfo = ' <' + elementName + ' />';}\n\nvar ownerInfo='';\nif(ownerName){\nownerInfo = ' The element was created by ' + ownerName + '.';}\n\n\nwarning(\nfalse,\n'Don\\'t set .props.%s of the React component%s. Instead, specify the ' + \n'correct value when initially creating the element or use ' + \n'React.cloneElement to make a new element with updated props.%s',\npropName,\nelementInfo,\nownerInfo);}\n\n\n\n\nfunction is(a,b){\nif(a !== a){\n\nreturn b !== b;}\n\nif(a === 0 && b === 0){\n\nreturn 1 / a === 1 / b;}\n\nreturn a === b;}\n\n\n\n\n\n\n\n\n\n\nfunction checkAndWarnForMutatedProps(element){\nif(!element._store){\n\n\nreturn;}\n\n\nvar originalProps=element._store.originalProps;\nvar props=element.props;\n\nfor(var propName in props) {\nif(props.hasOwnProperty(propName)){\nif(!originalProps.hasOwnProperty(propName) || \n!is(originalProps[propName],props[propName])){\nwarnForPropsMutation(propName,element);\n\n\noriginalProps[propName] = props[propName];}}}}\n\n\n\n\n\n\n\n\n\n\n\nfunction validatePropTypes(element){\nif(element.type == null){\n\nreturn;}\n\n\n\n\n\nvar componentClass=ReactNativeComponent.getComponentClassForElement(\nelement);\n\nvar name=componentClass.displayName || componentClass.name;\nif(componentClass.propTypes){\ncheckPropTypes(\nname,\ncomponentClass.propTypes,\nelement.props,\nReactPropTypeLocations.prop);}\n\n\nif(typeof componentClass.getDefaultProps === 'function'){\nwarning(\ncomponentClass.getDefaultProps.isReactClassApproved,\n'getDefaultProps is only used on classic React.createClass ' + \n'definitions. Use a static property named `defaultProps` instead.');}}\n\n\n\n\nvar ReactElementValidator={\n\ncheckAndWarnForMutatedProps:checkAndWarnForMutatedProps,\n\ncreateElement:function(type,props,children){\n\n\nwarning(\ntype != null,\n'React.createElement: type should not be null or undefined. It should ' + \n'be a string (for DOM elements) or a ReactClass (for composite ' + \n'components).');\n\n\nvar element=ReactElement.createElement.apply(this,arguments);\n\n\n\nif(element == null){\nreturn element;}\n\n\nfor(var i=2;i < arguments.length;i++) {\nvalidateChildKeys(arguments[i],type);}\n\n\nvalidatePropTypes(element);\n\nreturn element;},\n\n\ncreateFactory:function(type){\nvar validatedFactory=ReactElementValidator.createElement.bind(\nnull,\ntype);\n\n\nvalidatedFactory.type = type;\n\nif(__DEV__){\ntry{\nObject.defineProperty(\nvalidatedFactory,\n'type',\n{\nenumerable:false,\nget:function(){\nwarning(\nfalse,\n'Factory.type is deprecated. Access the class directly ' + \n'before passing it to createFactory.');\n\nObject.defineProperty(this,'type',{\nvalue:type});\n\nreturn type;}});}\n\n\n\ncatch(x) {}}\n\n\n\n\n\nreturn validatedFactory;},\n\n\ncloneElement:function(element,props,children){\nvar newElement=ReactElement.cloneElement.apply(this,arguments);\nfor(var i=2;i < arguments.length;i++) {\nvalidateChildKeys(arguments[i],newElement.type);}\n\nvalidatePropTypes(newElement);\nreturn newElement;}};\n\n\n\n\nmodule.exports = ReactElementValidator;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElementValidator\n */\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactFragment = require('ReactFragment');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactNativeComponent = require('ReactNativeComponent');\n\nvar getIteratorFn = require('getIteratorFn');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nvar loggedTypeFailures = {};\n\nvar NUMERIC_PROPERTY_REGEX = /^\\d+$/;\n\n/**\n * Gets the instance's name for use in warnings.\n *\n * @internal\n * @return {?string} Display name or undefined\n */\nfunction getName(instance) {\n var publicInstance = instance && instance.getPublicInstance();\n if (!publicInstance) {\n return undefined;\n }\n var constructor = publicInstance.constructor;\n if (!constructor) {\n return undefined;\n }\n return constructor.displayName || constructor.name || undefined;\n}\n\n/**\n * Gets the current owner's displayName for use in warnings.\n *\n * @internal\n * @return {?string} Display name or undefined\n */\nfunction getCurrentOwnerDisplayName() {\n var current = ReactCurrentOwner.current;\n return (\n current && getName(current) || undefined\n );\n}\n\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validateExplicitKey(element, parentType) {\n if (element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n\n warnAndMonitorForKeyUse(\n 'Each child in an array or iterator should have a unique \"key\" prop.',\n element,\n parentType\n );\n}\n\n/**\n * Warn if the key is being defined as an object property but has an incorrect\n * value.\n *\n * @internal\n * @param {string} name Property name of the key.\n * @param {ReactElement} element Component that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validatePropertyKey(name, element, parentType) {\n if (!NUMERIC_PROPERTY_REGEX.test(name)) {\n return;\n }\n warnAndMonitorForKeyUse(\n 'Child objects should have non-numeric keys so ordering is preserved.',\n element,\n parentType\n );\n}\n\n/**\n * Shared warning and monitoring code for the key warnings.\n *\n * @internal\n * @param {string} message The base warning that gets output.\n * @param {ReactElement} element Component that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction warnAndMonitorForKeyUse(message, element, parentType) {\n var ownerName = getCurrentOwnerDisplayName();\n var parentName = typeof parentType === 'string' ?\n parentType : parentType.displayName || parentType.name;\n\n var useName = ownerName || parentName;\n var memoizer = ownerHasKeyUseWarning[message] || (\n ownerHasKeyUseWarning[message] = {}\n );\n if (memoizer.hasOwnProperty(useName)) {\n return;\n }\n memoizer[useName] = true;\n\n var parentOrOwnerAddendum =\n ownerName ? ` Check the render method of ${ownerName}.` :\n parentName ? ` Check the React.render call using <${parentName}>.` :\n '';\n\n // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n var childOwnerAddendum = '';\n if (element &&\n element._owner &&\n element._owner !== ReactCurrentOwner.current) {\n // Name of the component that originally created this child.\n var childOwnerName = getName(element._owner);\n\n childOwnerAddendum = ` It was passed a child from ${childOwnerName}.`;\n }\n\n warning(\n false,\n message + '%s%s See http://fb.me/react-warning-keys for more information.',\n parentOrOwnerAddendum,\n childOwnerAddendum\n );\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\nfunction validateChildKeys(node, parentType) {\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n if (ReactElement.isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (ReactElement.isValidElement(node)) {\n // This element was passed in a valid location.\n node._store.validated = true;\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n // Entry iterators provide implicit keys.\n if (iteratorFn) {\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n while (!(step = iterator.next()).done) {\n if (ReactElement.isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n } else if (typeof node === 'object') {\n var fragment = ReactFragment.extractIfFragment(node);\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key)) {\n validatePropertyKey(key, fragment[key], parentType);\n }\n }\n }\n }\n}\n\n/**\n * Assert that the props are valid\n *\n * @param {string} componentName Name of the component for error messages.\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\nfunction checkPropTypes(componentName, propTypes, props, location) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(\n typeof propTypes[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n componentName || 'React class',\n ReactPropTypeLocationNames[location],\n propName\n );\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(this);\n warning(false, 'Failed propType: %s%s', error.message, addendum);\n }\n }\n }\n}\n\nvar warnedPropsMutations = {};\n\n/**\n * Warn about mutating props when setting `propName` on `element`.\n *\n * @param {string} propName The string key within props that was set\n * @param {ReactElement} element\n */\nfunction warnForPropsMutation(propName, element) {\n var type = element.type;\n var elementName = typeof type === 'string' ? type : type.displayName;\n var ownerName = element._owner ?\n element._owner.getPublicInstance().constructor.displayName : null;\n\n var warningKey = propName + '|' + elementName + '|' + ownerName;\n if (warnedPropsMutations.hasOwnProperty(warningKey)) {\n return;\n }\n warnedPropsMutations[warningKey] = true;\n\n var elementInfo = '';\n if (elementName) {\n elementInfo = ' <' + elementName + ' />';\n }\n var ownerInfo = '';\n if (ownerName) {\n ownerInfo = ' The element was created by ' + ownerName + '.';\n }\n\n warning(\n false,\n 'Don\\'t set .props.%s of the React component%s. Instead, specify the ' +\n 'correct value when initially creating the element or use ' +\n 'React.cloneElement to make a new element with updated props.%s',\n propName,\n elementInfo,\n ownerInfo\n );\n}\n\n// Inline Object.is polyfill\nfunction is(a, b) {\n if (a !== a) {\n // NaN\n return b !== b;\n }\n if (a === 0 && b === 0) {\n // +-0\n return 1 / a === 1 / b;\n }\n return a === b;\n}\n\n/**\n * Given an element, check if its props have been mutated since element\n * creation (or the last call to this function). In particular, check if any\n * new props have been added, which we can't directly catch by defining warning\n * properties on the props object.\n *\n * @param {ReactElement} element\n */\nfunction checkAndWarnForMutatedProps(element) {\n if (!element._store) {\n // Element was created using `new ReactElement` directly or with\n // `ReactElement.createElement`; skip mutation checking\n return;\n }\n\n var originalProps = element._store.originalProps;\n var props = element.props;\n\n for (var propName in props) {\n if (props.hasOwnProperty(propName)) {\n if (!originalProps.hasOwnProperty(propName) ||\n !is(originalProps[propName], props[propName])) {\n warnForPropsMutation(propName, element);\n\n // Copy over the new value so that the two props objects match again\n originalProps[propName] = props[propName];\n }\n }\n }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n if (element.type == null) {\n // This has already warned. Don't throw.\n return;\n }\n // Extract the component class from the element. Converts string types\n // to a composite class which may have propTypes.\n // TODO: Validating a string's propTypes is not decoupled from the\n // rendering target which is problematic.\n var componentClass = ReactNativeComponent.getComponentClassForElement(\n element\n );\n var name = componentClass.displayName || componentClass.name;\n if (componentClass.propTypes) {\n checkPropTypes(\n name,\n componentClass.propTypes,\n element.props,\n ReactPropTypeLocations.prop\n );\n }\n if (typeof componentClass.getDefaultProps === 'function') {\n warning(\n componentClass.getDefaultProps.isReactClassApproved,\n 'getDefaultProps is only used on classic React.createClass ' +\n 'definitions. Use a static property named `defaultProps` instead.'\n );\n }\n}\n\nvar ReactElementValidator = {\n\n checkAndWarnForMutatedProps: checkAndWarnForMutatedProps,\n\n createElement: function(type, props, children) {\n // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n warning(\n type != null,\n 'React.createElement: type should not be null or undefined. It should ' +\n 'be a string (for DOM elements) or a ReactClass (for composite ' +\n 'components).'\n );\n\n var element = ReactElement.createElement.apply(this, arguments);\n\n // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n if (element == null) {\n return element;\n }\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n\n validatePropTypes(element);\n\n return element;\n },\n\n createFactory: function(type) {\n var validatedFactory = ReactElementValidator.createElement.bind(\n null,\n type\n );\n // Legacy hook TODO: Warn if this is accessed\n validatedFactory.type = type;\n\n if (__DEV__) {\n try {\n Object.defineProperty(\n validatedFactory,\n 'type',\n {\n enumerable: false,\n get: function() {\n warning(\n false,\n 'Factory.type is deprecated. Access the class directly ' +\n 'before passing it to createFactory.'\n );\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n }\n );\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n }\n\n\n return validatedFactory;\n },\n\n cloneElement: function(element, props, children) {\n var newElement = ReactElement.cloneElement.apply(this, arguments);\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n validatePropTypes(newElement);\n return newElement;\n }\n\n};\n\nmodule.exports = ReactElementValidator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElementValidator.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocations.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=require('keyMirror');\n\nvar ReactPropTypeLocations=keyMirror({\nprop:null,\ncontext:null,\nchildContext:null});\n\n\nmodule.exports = ReactPropTypeLocations;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypeLocations\n */\n\n'use strict';\n\nvar keyMirror = require('keyMirror');\n\nvar ReactPropTypeLocations = keyMirror({\n prop: null,\n context: null,\n childContext: null\n});\n\nmodule.exports = ReactPropTypeLocations;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocations.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyMirror.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=function(obj){\nvar ret={};\nvar key;\ninvariant(\nobj instanceof Object && !Array.isArray(obj),\n'keyMirror(...): Argument must be an object.');\n\nfor(key in obj) {\nif(!obj.hasOwnProperty(key)){\ncontinue;}\n\nret[key] = key;}\n\nreturn ret;};\n\n\nmodule.exports = keyMirror;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule keyMirror\n * @typechecks static-only\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n invariant(\n obj instanceof Object && !Array.isArray(obj),\n 'keyMirror(...): Argument must be an object.'\n );\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyMirror.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocationNames.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypeLocationNames={};\n\nif(__DEV__){\nReactPropTypeLocationNames = {\nprop:'prop',\ncontext:'context',\nchildContext:'child context'};}\n\n\n\nmodule.exports = ReactPropTypeLocationNames;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypeLocationNames\n */\n\n'use strict';\n\nvar ReactPropTypeLocationNames = {};\n\nif (__DEV__) {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocationNames.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactNativeComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\n\nvar autoGenerateWrapperClass=null;\nvar genericComponentClass=null;\n\nvar tagToComponentClass={};\nvar textComponentClass=null;\n\nvar ReactNativeComponentInjection={\n\n\ninjectGenericComponentClass:function(componentClass){\ngenericComponentClass = componentClass;},\n\n\n\ninjectTextComponentClass:function(componentClass){\ntextComponentClass = componentClass;},\n\n\n\ninjectComponentClasses:function(componentClasses){\nassign(tagToComponentClass,componentClasses);},\n\n\n\ninjectAutoWrapper:function(wrapperFactory){\nautoGenerateWrapperClass = wrapperFactory;}};\n\n\n\n\n\n\n\n\n\nfunction getComponentClassForElement(element){\nif(typeof element.type === 'function'){\nreturn element.type;}\n\nvar tag=element.type;\nvar componentClass=tagToComponentClass[tag];\nif(componentClass == null){\ntagToComponentClass[tag] = componentClass = autoGenerateWrapperClass(tag);}\n\nreturn componentClass;}\n\n\n\n\n\n\n\n\nfunction createInternalComponent(element){\ninvariant(\ngenericComponentClass,\n'There is no registered component for the tag %s',\nelement.type);\n\nreturn new genericComponentClass(element.type,element.props);}\n\n\n\n\n\n\nfunction createInstanceForText(text){\nreturn new textComponentClass(text);}\n\n\n\n\n\n\nfunction isTextComponent(component){\nreturn component instanceof textComponentClass;}\n\n\nvar ReactNativeComponent={\ngetComponentClassForElement:getComponentClassForElement,\ncreateInternalComponent:createInternalComponent,\ncreateInstanceForText:createInstanceForText,\nisTextComponent:isTextComponent,\ninjection:ReactNativeComponentInjection};\n\n\nmodule.exports = ReactNativeComponent;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeComponent\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\n\nvar autoGenerateWrapperClass = null;\nvar genericComponentClass = null;\n// This registry keeps track of wrapper classes around native tags\nvar tagToComponentClass = {};\nvar textComponentClass = null;\n\nvar ReactNativeComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function(componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function(componentClass) {\n textComponentClass = componentClass;\n },\n // This accepts a keyed object with classes as values. Each key represents a\n // tag. That particular tag will use this class instead of the generic one.\n injectComponentClasses: function(componentClasses) {\n assign(tagToComponentClass, componentClasses);\n },\n // Temporary hack since we expect DOM refs to behave like composites,\n // for this release.\n injectAutoWrapper: function(wrapperFactory) {\n autoGenerateWrapperClass = wrapperFactory;\n }\n};\n\n/**\n * Get a composite component wrapper class for a specific tag.\n *\n * @param {ReactElement} element The tag for which to get the class.\n * @return {function} The React class constructor function.\n */\nfunction getComponentClassForElement(element) {\n if (typeof element.type === 'function') {\n return element.type;\n }\n var tag = element.type;\n var componentClass = tagToComponentClass[tag];\n if (componentClass == null) {\n tagToComponentClass[tag] = componentClass = autoGenerateWrapperClass(tag);\n }\n return componentClass;\n}\n\n/**\n * Get a native internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n invariant(\n genericComponentClass,\n 'There is no registered component for the tag %s',\n element.type\n );\n return new genericComponentClass(element.type, element.props);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactNativeComponent = {\n getComponentClassForElement: getComponentClassForElement,\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactNativeComponentInjection\n};\n\nmodule.exports = ReactNativeComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactNativeComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/Transaction.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Mixin={\n\n\n\n\n\n\n\nreinitializeTransaction:function(){\nthis.transactionWrappers = this.getTransactionWrappers();\nif(!this.wrapperInitData){\nthis.wrapperInitData = [];}else \n{\nthis.wrapperInitData.length = 0;}\n\nthis._isInTransaction = false;},\n\n\n_isInTransaction:false,\n\n\n\n\n\ngetTransactionWrappers:null,\n\nisInTransaction:function(){\nreturn !!this._isInTransaction;},\n\n\n\n\n\n\n\n\n\n\n\n\n\nperform:function(method,scope,a,b,c,d,e,f){\ninvariant(\n!this.isInTransaction(),\n'Transaction.perform(...): Cannot initialize a transaction when there ' + \n'is already an outstanding transaction.');\n\nvar errorThrown;\nvar ret;\ntry{\nthis._isInTransaction = true;\n\n\n\n\nerrorThrown = true;\nthis.initializeAll(0);\nret = method.call(scope,a,b,c,d,e,f);\nerrorThrown = false;}finally \n{\ntry{\nif(errorThrown){\n\n\ntry{\nthis.closeAll(0);}\ncatch(err) {}}else \n\n{\n\n\nthis.closeAll(0);}}finally \n\n{\nthis._isInTransaction = false;}}\n\n\nreturn ret;},\n\n\ninitializeAll:function(startIndex){\nvar transactionWrappers=this.transactionWrappers;\nfor(var i=startIndex;i < transactionWrappers.length;i++) {\nvar wrapper=transactionWrappers[i];\ntry{\n\n\n\n\nthis.wrapperInitData[i] = Transaction.OBSERVED_ERROR;\nthis.wrapperInitData[i] = wrapper.initialize?\nwrapper.initialize.call(this):\nnull;}finally \n{\nif(this.wrapperInitData[i] === Transaction.OBSERVED_ERROR){\n\n\n\ntry{\nthis.initializeAll(i + 1);}\ncatch(err) {}}}}},\n\n\n\n\n\n\n\n\n\n\n\n\ncloseAll:function(startIndex){\ninvariant(\nthis.isInTransaction(),\n'Transaction.closeAll(): Cannot close transaction when none are open.');\n\nvar transactionWrappers=this.transactionWrappers;\nfor(var i=startIndex;i < transactionWrappers.length;i++) {\nvar wrapper=transactionWrappers[i];\nvar initData=this.wrapperInitData[i];\nvar errorThrown;\ntry{\n\n\n\n\nerrorThrown = true;\nif(initData !== Transaction.OBSERVED_ERROR && wrapper.close){\nwrapper.close.call(this,initData);}\n\nerrorThrown = false;}finally \n{\nif(errorThrown){\n\n\n\ntry{\nthis.closeAll(i + 1);}\ncatch(e) {}}}}\n\n\n\n\nthis.wrapperInitData.length = 0;}};\n\n\n\nvar Transaction={\n\nMixin:Mixin,\n\n\n\n\nOBSERVED_ERROR:{}};\n\n\n\nmodule.exports = Transaction;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Transaction\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar Mixin = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function() {\n this.transactionWrappers = this.getTransactionWrappers();\n if (!this.wrapperInitData) {\n this.wrapperInitData = [];\n } else {\n this.wrapperInitData.length = 0;\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function() {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} args... Arguments to pass to the method (optional).\n * Helps prevent need to bind in many cases.\n * @return Return value from `method`.\n */\n perform: function(method, scope, a, b, c, d, e, f) {\n invariant(\n !this.isInTransaction(),\n 'Transaction.perform(...): Cannot initialize a transaction when there ' +\n 'is already an outstanding transaction.'\n );\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {\n }\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function(startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = Transaction.OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ?\n wrapper.initialize.call(this) :\n null;\n } finally {\n if (this.wrapperInitData[i] === Transaction.OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {\n }\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function(startIndex) {\n invariant(\n this.isInTransaction(),\n 'Transaction.closeAll(): Cannot close transaction when none are open.'\n );\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== Transaction.OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {\n }\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nvar Transaction = {\n\n Mixin: Mixin,\n\n /**\n * Token to look for to determine if an error occured.\n */\n OBSERVED_ERROR: {}\n\n};\n\nmodule.exports = Transaction;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/Transaction.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/stubs/ReactErrorUtils.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactErrorUtils={\n\n\n\n\n\n\n\n\n\nguard:function(func,name){\nreturn func;}};\n\n\n\nmodule.exports = ReactErrorUtils;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactErrorUtils\n * @typechecks\n */\n\n\"use strict\";\n\nvar ReactErrorUtils = {\n /**\n * Creates a guarded version of a function. This is supposed to make debugging\n * of event handlers easier. To aid debugging with the browser's debugger,\n * this currently simply returns the original function.\n *\n * @param {function} func Function to be executed\n * @param {string} name The name of the guard\n * @return {function}\n */\n guard: function(func, name) {\n return func;\n }\n};\n\nmodule.exports = ReactErrorUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/stubs/ReactErrorUtils.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyOf.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nkeyOf=function(oneKeyObj){\nvar key;\nfor(key in oneKeyObj) {\nif(!oneKeyObj.hasOwnProperty(key)){\ncontinue;}\n\nreturn key;}\n\nreturn null;};\n\n\n\nmodule.exports = keyOf;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule keyOf\n */\n\n/**\n * Allows extraction of a minified key. Let's the build system minify keys\n * without loosing the ability to dynamically use key strings as values\n * themselves. Pass in an object with a single key/val pair and it will return\n * you the string key of that single record. Suppose you want to grab the\n * value for a key 'className' inside of an object. Key/val minification may\n * have aliased that key to be 'xa12'. keyOf({className: null}) will return\n * 'xa12' in that case. Resolve keys you want to use once at startup time, then\n * reuse those resolutions.\n */\nvar keyOf = function(oneKeyObj) {\n var key;\n for (key in oneKeyObj) {\n if (!oneKeyObj.hasOwnProperty(key)) {\n continue;\n }\n return key;\n }\n return null;\n};\n\n\nmodule.exports = keyOf;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyOf.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeDefaultInjection.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrequire('InitializeJavaScriptAppEngine');\nvar EventPluginHub=require('EventPluginHub');\nvar EventPluginUtils=require('EventPluginUtils');\nvar IOSDefaultEventPluginOrder=require('IOSDefaultEventPluginOrder');\nvar IOSNativeBridgeEventPlugin=require('IOSNativeBridgeEventPlugin');\nvar NodeHandle=require('NodeHandle');\nvar ReactComponentEnvironment=require('ReactComponentEnvironment');\nvar ReactDefaultBatchingStrategy=require('ReactDefaultBatchingStrategy');\nvar ReactEmptyComponent=require('ReactEmptyComponent');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactNativeComponentEnvironment=require('ReactNativeComponentEnvironment');\nvar ReactNativeGlobalInteractionHandler=require('ReactNativeGlobalInteractionHandler');\nvar ReactNativeGlobalResponderHandler=require('ReactNativeGlobalResponderHandler');\nvar ReactNativeMount=require('ReactNativeMount');\nvar ReactNativeTextComponent=require('ReactNativeTextComponent');\nvar ReactNativeComponent=require('ReactNativeComponent');\nvar ReactUpdates=require('ReactUpdates');\nvar ResponderEventPlugin=require('ResponderEventPlugin');\nvar UniversalWorkerNodeHandle=require('UniversalWorkerNodeHandle');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar invariant=require('invariant');\n\n\nrequire('RCTEventEmitter');\nrequire('RCTLog');\nrequire('JSTimersExecution');\n\nfunction inject(){\n\n\n\nEventPluginHub.injection.injectEventPluginOrder(IOSDefaultEventPluginOrder);\nEventPluginHub.injection.injectInstanceHandle(ReactInstanceHandles);\n\nResponderEventPlugin.injection.injectGlobalResponderHandler(\nReactNativeGlobalResponderHandler);\n\n\nResponderEventPlugin.injection.injectGlobalInteractionHandler(\nReactNativeGlobalInteractionHandler);\n\n\n\n\n\n\nEventPluginHub.injection.injectEventPluginsByName({\n'ResponderEventPlugin':ResponderEventPlugin,\n'IOSNativeBridgeEventPlugin':IOSNativeBridgeEventPlugin});\n\n\nReactUpdates.injection.injectReconcileTransaction(\nReactNativeComponentEnvironment.ReactReconcileTransaction);\n\n\nReactUpdates.injection.injectBatchingStrategy(\nReactDefaultBatchingStrategy);\n\n\nReactComponentEnvironment.injection.injectEnvironment(\nReactNativeComponentEnvironment);\n\n\n\nvar RCTView=createReactNativeComponentClass({\nvalidAttributes:{},\nuiViewClassName:'RCTView'});\n\nReactEmptyComponent.injection.injectEmptyComponent(RCTView);\n\nEventPluginUtils.injection.injectMount(ReactNativeMount);\n\nReactNativeComponent.injection.injectTextComponentClass(\nReactNativeTextComponent);\n\nReactNativeComponent.injection.injectAutoWrapper(function(tag){\n\nvar info='';\nif(typeof tag === 'string' && /^[a-z]/.test(tag)){\ninfo += ' Each component name should start with an uppercase letter.';}\n\ninvariant(false,'Expected a component class, got %s.%s',tag,info);});\n\n\nNodeHandle.injection.injectImplementation(UniversalWorkerNodeHandle);}\n\n\nmodule.exports = {\ninject:inject};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeDefaultInjection\n * @flow\n */\n'use strict';\n\n/**\n * Make sure `setTimeout`/`setInterval` are patched correctly.\n */\nrequire('InitializeJavaScriptAppEngine');\nvar EventPluginHub = require('EventPluginHub');\nvar EventPluginUtils = require('EventPluginUtils');\nvar IOSDefaultEventPluginOrder = require('IOSDefaultEventPluginOrder');\nvar IOSNativeBridgeEventPlugin = require('IOSNativeBridgeEventPlugin');\nvar NodeHandle = require('NodeHandle');\nvar ReactComponentEnvironment = require('ReactComponentEnvironment');\nvar ReactDefaultBatchingStrategy = require('ReactDefaultBatchingStrategy');\nvar ReactEmptyComponent = require('ReactEmptyComponent');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactNativeComponentEnvironment = require('ReactNativeComponentEnvironment');\nvar ReactNativeGlobalInteractionHandler = require('ReactNativeGlobalInteractionHandler');\nvar ReactNativeGlobalResponderHandler = require('ReactNativeGlobalResponderHandler');\nvar ReactNativeMount = require('ReactNativeMount');\nvar ReactNativeTextComponent = require('ReactNativeTextComponent');\nvar ReactNativeComponent = require('ReactNativeComponent');\nvar ReactUpdates = require('ReactUpdates');\nvar ResponderEventPlugin = require('ResponderEventPlugin');\nvar UniversalWorkerNodeHandle = require('UniversalWorkerNodeHandle');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar invariant = require('invariant');\n\n// Just to ensure this gets packaged, since its only caller is from Native.\nrequire('RCTEventEmitter');\nrequire('RCTLog');\nrequire('JSTimersExecution');\n\nfunction inject() {\n /**\n * Inject module for resolving DOM hierarchy and plugin ordering.\n */\n EventPluginHub.injection.injectEventPluginOrder(IOSDefaultEventPluginOrder);\n EventPluginHub.injection.injectInstanceHandle(ReactInstanceHandles);\n\n ResponderEventPlugin.injection.injectGlobalResponderHandler(\n ReactNativeGlobalResponderHandler\n );\n\n ResponderEventPlugin.injection.injectGlobalInteractionHandler(\n ReactNativeGlobalInteractionHandler\n );\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n EventPluginHub.injection.injectEventPluginsByName({\n 'ResponderEventPlugin': ResponderEventPlugin,\n 'IOSNativeBridgeEventPlugin': IOSNativeBridgeEventPlugin\n });\n\n ReactUpdates.injection.injectReconcileTransaction(\n ReactNativeComponentEnvironment.ReactReconcileTransaction\n );\n\n ReactUpdates.injection.injectBatchingStrategy(\n ReactDefaultBatchingStrategy\n );\n\n ReactComponentEnvironment.injection.injectEnvironment(\n ReactNativeComponentEnvironment\n );\n\n // Can't import View here because it depends on React to make its composite\n var RCTView = createReactNativeComponentClass({\n validAttributes: {},\n uiViewClassName: 'RCTView',\n });\n ReactEmptyComponent.injection.injectEmptyComponent(RCTView);\n\n EventPluginUtils.injection.injectMount(ReactNativeMount);\n\n ReactNativeComponent.injection.injectTextComponentClass(\n ReactNativeTextComponent\n );\n ReactNativeComponent.injection.injectAutoWrapper(function(tag) {\n // Show a nicer error message for non-function tags\n var info = '';\n if (typeof tag === 'string' && /^[a-z]/.test(tag)) {\n info += ' Each component name should start with an uppercase letter.';\n }\n invariant(false, 'Expected a component class, got %s.%s', tag, info);\n });\n\n NodeHandle.injection.injectImplementation(UniversalWorkerNodeHandle);\n}\n\nmodule.exports = {\n inject: inject,\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeDefaultInjection.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js":{"data":{"code":"require(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'RCTDebugComponentOwnership');\nrequire('RCTDeviceEventEmitter');\nrequire('PerformanceLogger');\n\nif(typeof GLOBAL === 'undefined'){\nGLOBAL = this;}\n\n\nif(typeof window === 'undefined'){\nwindow = GLOBAL;}\n\n\nfunction handleError(e,isFatal){\ntry{\nrequire('ExceptionsManager').handleException(e,isFatal);}\ncatch(ee) {\nconsole.log('Failed to print error: ',ee.message);}}\n\n\n\nfunction setUpRedBoxErrorHandler(){\nvar ErrorUtils=require('ErrorUtils');\nErrorUtils.setGlobalHandler(handleError);}\n\n\nfunction setUpRedBoxConsoleErrorHandler(){\n\nvar ExceptionsManager=require('ExceptionsManager');\nvar Platform=require('Platform');\n\nif(__DEV__ && Platform.OS === 'ios'){\nExceptionsManager.installConsoleErrorReporter();}}\n\n\n\n\n\n\n\n\n\n\nfunction setUpTimers(){\nvar JSTimers=require('JSTimers');\nGLOBAL.setTimeout = JSTimers.setTimeout;\nGLOBAL.setInterval = JSTimers.setInterval;\nGLOBAL.setImmediate = JSTimers.setImmediate;\nGLOBAL.clearTimeout = JSTimers.clearTimeout;\nGLOBAL.clearInterval = JSTimers.clearInterval;\nGLOBAL.clearImmediate = JSTimers.clearImmediate;\nGLOBAL.cancelAnimationFrame = JSTimers.clearInterval;\nGLOBAL.requestAnimationFrame = function(cb){\n\nreturn JSTimers.requestAnimationFrame(cb);};}\n\n\n\nfunction setUpAlert(){\nvar RCTAlertManager=require('NativeModules').AlertManager;\nif(!GLOBAL.alert){\nGLOBAL.alert = function(text){\nvar alertOpts={\ntitle:'Alert',\nmessage:'' + text,\nbuttons:[{'cancel':'OK'}]};\n\nRCTAlertManager.alertWithArgs(alertOpts,null);};}}\n\n\n\n\nfunction setUpPromise(){\n\n\nGLOBAL.Promise = require('Promise');}\n\n\nfunction setUpXHR(){\n\n\nGLOBAL.XMLHttpRequest = require('XMLHttpRequest');\nGLOBAL.FormData = require('FormData');\n\nvar fetchPolyfill=require('fetch');\nGLOBAL.fetch = fetchPolyfill.fetch;\nGLOBAL.Headers = fetchPolyfill.Headers;\nGLOBAL.Request = fetchPolyfill.Request;\nGLOBAL.Response = fetchPolyfill.Response;}\n\n\nfunction setUpGeolocation(){\nGLOBAL.navigator = GLOBAL.navigator || {};\nGLOBAL.navigator.geolocation = require('Geolocation');}\n\n\nfunction setUpWebSockets(){\nGLOBAL.WebSocket = require('WebSocket');}\n\n\nfunction setupProfile(){\nconsole.profile = console.profile || GLOBAL.consoleProfile || function(){};\nconsole.profileEnd = console.profileEnd || GLOBAL.consoleProfileEnd || function(){};\nrequire('BridgeProfiling').swizzleReactPerf();}\n\n\nsetUpRedBoxErrorHandler();\nsetUpTimers();\nsetUpAlert();\nsetUpPromise();\nsetUpXHR();\nsetUpRedBoxConsoleErrorHandler();\nsetUpGeolocation();\nsetUpWebSockets();\nsetupProfile();","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Sets up global variables typical in most JavaScript environments.\n *\n * 1. Global timers (via `setTimeout` etc).\n * 2. Global console object.\n * 3. Hooks for printing stack traces with source maps.\n *\n * Leaves enough room in the environment for implementing your own:\n * 1. Require system.\n * 2. Bridged modules.\n *\n * @providesModule InitializeJavaScriptAppEngine\n */\n\n/* eslint global-strict: 0 */\n/* globals GLOBAL: true, window: true */\n\n// Just to make sure the JS gets packaged up.\nrequire('RCTDebugComponentOwnership');\nrequire('RCTDeviceEventEmitter');\nrequire('PerformanceLogger');\n\nif (typeof GLOBAL === 'undefined') {\n GLOBAL = this;\n}\n\nif (typeof window === 'undefined') {\n window = GLOBAL;\n}\n\nfunction handleError(e, isFatal) {\n try {\n require('ExceptionsManager').handleException(e, isFatal);\n } catch(ee) {\n console.log('Failed to print error: ', ee.message);\n }\n}\n\nfunction setUpRedBoxErrorHandler() {\n var ErrorUtils = require('ErrorUtils');\n ErrorUtils.setGlobalHandler(handleError);\n}\n\nfunction setUpRedBoxConsoleErrorHandler() {\n // ExceptionsManager transitively requires Promise so we install it after\n var ExceptionsManager = require('ExceptionsManager');\n var Platform = require('Platform');\n // TODO (#6925182): Enable console.error redbox on Android\n if (__DEV__ && Platform.OS === 'ios') {\n ExceptionsManager.installConsoleErrorReporter();\n }\n}\n\n/**\n * Sets up a set of window environment wrappers that ensure that the\n * BatchedBridge is flushed after each tick. In both the case of the\n * `UIWebView` based `RCTJavaScriptCaller` and `RCTContextCaller`, we\n * implement our own custom timing bridge that should be immune to\n * unexplainably dropped timing signals.\n */\nfunction setUpTimers() {\n var JSTimers = require('JSTimers');\n GLOBAL.setTimeout = JSTimers.setTimeout;\n GLOBAL.setInterval = JSTimers.setInterval;\n GLOBAL.setImmediate = JSTimers.setImmediate;\n GLOBAL.clearTimeout = JSTimers.clearTimeout;\n GLOBAL.clearInterval = JSTimers.clearInterval;\n GLOBAL.clearImmediate = JSTimers.clearImmediate;\n GLOBAL.cancelAnimationFrame = JSTimers.clearInterval;\n GLOBAL.requestAnimationFrame = function(cb) {\n /*requestAnimationFrame() { [native code] };*/ // Trick scroller library\n return JSTimers.requestAnimationFrame(cb); // into thinking it's native\n };\n}\n\nfunction setUpAlert() {\n var RCTAlertManager = require('NativeModules').AlertManager;\n if (!GLOBAL.alert) {\n GLOBAL.alert = function(text) {\n var alertOpts = {\n title: 'Alert',\n message: '' + text,\n buttons: [{'cancel': 'OK'}],\n };\n RCTAlertManager.alertWithArgs(alertOpts, null);\n };\n }\n}\n\nfunction setUpPromise() {\n // The native Promise implementation throws the following error:\n // ERROR: Event loop not supported.\n GLOBAL.Promise = require('Promise');\n}\n\nfunction setUpXHR() {\n // The native XMLHttpRequest in Chrome dev tools is CORS aware and won't\n // let you fetch anything from the internet\n GLOBAL.XMLHttpRequest = require('XMLHttpRequest');\n GLOBAL.FormData = require('FormData');\n\n var fetchPolyfill = require('fetch');\n GLOBAL.fetch = fetchPolyfill.fetch;\n GLOBAL.Headers = fetchPolyfill.Headers;\n GLOBAL.Request = fetchPolyfill.Request;\n GLOBAL.Response = fetchPolyfill.Response;\n}\n\nfunction setUpGeolocation() {\n GLOBAL.navigator = GLOBAL.navigator || {};\n GLOBAL.navigator.geolocation = require('Geolocation');\n}\n\nfunction setUpWebSockets() {\n GLOBAL.WebSocket = require('WebSocket');\n}\n\nfunction setupProfile() {\n console.profile = console.profile || GLOBAL.consoleProfile || function () {};\n console.profileEnd = console.profileEnd || GLOBAL.consoleProfileEnd || function () {};\n require('BridgeProfiling').swizzleReactPerf();\n}\n\nsetUpRedBoxErrorHandler();\nsetUpTimers();\nsetUpAlert();\nsetUpPromise();\nsetUpXHR();\nsetUpRedBoxConsoleErrorHandler();\nsetUpGeolocation();\nsetUpWebSockets();\nsetupProfile();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/DebugComponentHierarchy/RCTDebugComponentOwnership.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DebugComponentOwnershipModule=require('NativeModules').DebugComponentOwnershipModule;\nvar InspectorUtils=require('InspectorUtils');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\n\nfunction componentToString(component){\nreturn component.getName?component.getName():'Unknown';}\n\n\nfunction getRootTagForTag(tag){\nvar rootNodeID=ReactNativeTagHandles.tagToRootNodeID[tag];\nif(!rootNodeID){\nreturn null;}\n\nvar rootID=ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootNodeID);\nif(!rootID){\nreturn null;}\n\nreturn ReactNativeTagHandles.rootNodeIDToTag[rootID];}\n\n\nmodule.exports = {\n\n\n\n\n\n\n\n\ngetOwnerHierarchy:function(requestID,tag){\nvar rootTag=getRootTagForTag(tag);\nvar instance=InspectorUtils.findInstanceByNativeTag(rootTag,tag);\nvar ownerHierarchy=instance?\nInspectorUtils.getOwnerHierarchy(instance).map(componentToString):\nnull;\nDebugComponentOwnershipModule.receiveOwnershipHierarchy(requestID,tag,ownerHierarchy);}};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Utility class to provide the component owner hierarchy to native code for\n * debugging purposes.\n *\n * @providesModule RCTDebugComponentOwnership\n * @flow\n */\n\n'use strict';\n\nvar DebugComponentOwnershipModule = require('NativeModules').DebugComponentOwnershipModule;\nvar InspectorUtils = require('InspectorUtils');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nfunction componentToString(component) {\n return component.getName ? component.getName() : 'Unknown';\n}\n\nfunction getRootTagForTag(tag: number): ?number {\n var rootNodeID = ReactNativeTagHandles.tagToRootNodeID[tag];\n if (!rootNodeID) {\n return null;\n }\n var rootID = ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootNodeID);\n if (!rootID) {\n return null;\n }\n return ReactNativeTagHandles.rootNodeIDToTag[rootID];\n}\n\nmodule.exports = {\n\n /**\n * Asynchronously returns the owner hierarchy as an array of strings. Request id is\n * passed along to the native module so that the native module can identify the\n * particular call instance.\n *\n * Example returned owner hierarchy: ['RootView', 'Dialog', 'TitleView', 'Text']\n */\n getOwnerHierarchy: function(requestID: number, tag: number) {\n var rootTag = getRootTagForTag(tag);\n var instance = InspectorUtils.findInstanceByNativeTag(rootTag, tag);\n var ownerHierarchy = instance ?\n InspectorUtils.getOwnerHierarchy(instance).map(componentToString) :\n null;\n DebugComponentOwnershipModule.receiveOwnershipHierarchy(requestID, tag, ownerHierarchy);\n },\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/DebugComponentHierarchy/RCTDebugComponentOwnership.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/NativeModules.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('BatchedBridge').RemoteModules;\n\nvar nativeModulePrefixNormalizer=require('nativeModulePrefixNormalizer');\n\nnativeModulePrefixNormalizer(NativeModules);\n\nmodule.exports = NativeModules;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule NativeModules\n * @flow\n */\n'use strict';\n\nvar NativeModules = require('BatchedBridge').RemoteModules;\n\nvar nativeModulePrefixNormalizer = require('nativeModulePrefixNormalizer');\n\nnativeModulePrefixNormalizer(NativeModules);\n\nmodule.exports = NativeModules;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/NativeModules.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar MessageQueue=require('MessageQueue');\n\nvar BatchedBridge=new MessageQueue(\n__fbBatchedBridgeConfig.remoteModuleConfig,\n__fbBatchedBridgeConfig.localModulesConfig);\n\n\nmodule.exports = BatchedBridge;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BatchedBridge\n */\n'use strict';\n\nlet MessageQueue = require('MessageQueue');\n\nlet BatchedBridge = new MessageQueue(\n __fbBatchedBridgeConfig.remoteModuleConfig,\n __fbBatchedBridgeConfig.localModulesConfig,\n);\n\nmodule.exports = BatchedBridge;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/MessageQueue.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _objectWithoutProperties(obj,keys){var target={};for(var i in obj) {if(keys.indexOf(i) >= 0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i] = obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar BridgeProfiling=require('BridgeProfiling');\nvar ErrorUtils=require('ErrorUtils');\nvar JSTimersExecution=require('JSTimersExecution');\nvar ReactUpdates=require('ReactUpdates');\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar stringifySafe=require('stringifySafe');\n\nvar MODULE_IDS=0;\nvar METHOD_IDS=1;\nvar PARAMS=2;\n\nvar SPY_MODE=false;\n\nvar MethodTypes=keyMirror({\nlocal:null,\nremote:null,\nremoteAsync:null});\n\n\nvar guard=function(fn){\ntry{\nfn();}\ncatch(error) {\nErrorUtils.reportFatalError(error);}};var \n\n\n\nMessageQueue=(function(){\n\nfunction MessageQueue(remoteModules,localModules,customRequire){var _this=this;_classCallCheck(this,MessageQueue);\nthis.RemoteModules = {};\n\nthis._require = customRequire || require;\nthis._queue = [[],[],[]];\nthis._moduleTable = {};\nthis._methodTable = {};\nthis._callbacks = [];\nthis._callbackID = 0;\n\n[\n'processBatch',\n'invokeCallbackAndReturnFlushedQueue',\n'callFunctionReturnFlushedQueue',\n'flushedQueue'].\nforEach(function(fn){return _this[fn] = _this[fn].bind(_this);});\n\nthis._genModules(remoteModules);\nlocalModules && this._genLookupTables(\nlocalModules,this._moduleTable,this._methodTable);\n\nif(__DEV__){\nthis._debugInfo = {};\nthis._remoteModuleTable = {};\nthis._remoteMethodTable = {};\nthis._genLookupTables(\nremoteModules,this._remoteModuleTable,this._remoteMethodTable);}}_createClass(MessageQueue,[{key:'processBatch',value:\n\n\n\n\n\n\nfunction processBatch(batch){var _this2=this;\nguard(function(){\nReactUpdates.batchedUpdates(function(){\nbatch.forEach(function(call){\nvar method=call.method === 'callFunctionReturnFlushedQueue'?\n'__callFunction':'__invokeCallback';\nguard(function(){return _this2[method].apply(_this2,call.args);});});\n\nBridgeProfiling.profile('ReactUpdates.batchedUpdates()');});\n\nBridgeProfiling.profileEnd();});\n\nreturn this.flushedQueue();}},{key:'callFunctionReturnFlushedQueue',value:\n\n\nfunction callFunctionReturnFlushedQueue(module,method,args){var _this3=this;\nguard(function(){return _this3.__callFunction(module,method,args);});\nreturn this.flushedQueue();}},{key:'invokeCallbackAndReturnFlushedQueue',value:\n\n\nfunction invokeCallbackAndReturnFlushedQueue(cbID,args){var _this4=this;\nguard(function(){return _this4.__invokeCallback(cbID,args);});\nreturn this.flushedQueue();}},{key:'flushedQueue',value:\n\n\nfunction flushedQueue(){\nBridgeProfiling.profile('JSTimersExecution.callImmediates()');\nguard(function(){return JSTimersExecution.callImmediates();});\nBridgeProfiling.profileEnd();\nvar queue=this._queue;\nthis._queue = [[],[],[]];\nreturn queue[0].length?queue:null;}},{key:'__nativeCall',value:\n\n\n\n\n\nfunction __nativeCall(module,method,params,onFail,onSucc){\nif(onFail || onSucc){\nif(__DEV__){\n\nthis._callbackID > 1 << 5 && (\nthis._debugInfo[this._callbackID >> 5] = null);\n\nthis._debugInfo[this._callbackID >> 1] = [module,method];\nif(SPY_MODE && isFinite(module)){\nconsole.log('JS->N : ' + this._remoteModuleTable[module] + '.' + \nthis._remoteMethodTable[module][method] + '(' + JSON.stringify(params) + ')');}}\n\n\nonFail && params.push(this._callbackID);\nthis._callbacks[this._callbackID++] = onFail;\nonSucc && params.push(this._callbackID);\nthis._callbacks[this._callbackID++] = onSucc;}\n\nthis._queue[MODULE_IDS].push(module);\nthis._queue[METHOD_IDS].push(method);\nthis._queue[PARAMS].push(params);}},{key:'__callFunction',value:\n\n\nfunction __callFunction(module,method,args){\nBridgeProfiling.profile(function(){return module + '.' + method + '(' + stringifySafe(args) + ')';});\nif(isFinite(module)){\nmethod = this._methodTable[module][method];\nmodule = this._moduleTable[module];}\n\nif(__DEV__ && SPY_MODE){\nconsole.log('N->JS : ' + module + '.' + method + '(' + JSON.stringify(args) + ')');}\n\nmodule = this._require(module);\nmodule[method].apply(module,args);\nBridgeProfiling.profileEnd();}},{key:'__invokeCallback',value:\n\n\nfunction __invokeCallback(cbID,args){\nBridgeProfiling.profile(\nfunction(){return 'MessageQueue.invokeCallback(' + cbID + ', ' + stringifySafe(args) + ')';});\nvar callback=this._callbacks[cbID];\nif(__DEV__){\nvar debug=this._debugInfo[cbID >> 1];\nvar _module=debug && this._remoteModuleTable[debug[0]];\nvar method=debug && this._remoteMethodTable[debug[0]][debug[1]];\nif(!callback){\nconsole.error('Callback with id ' + cbID + ': ' + _module + '.' + method + '() not found');}else \nif(SPY_MODE){\nconsole.log('N->JS : <callback for ' + _module + '.' + method + '>(' + JSON.stringify(args) + ')');}}\n\n\nthis._callbacks[cbID & ~1] = null;\nthis._callbacks[cbID | 1] = null;\ncallback.apply(null,args);\nBridgeProfiling.profileEnd();}},{key:'_genLookupTables',value:\n\n\n\n\n\nfunction _genLookupTables(localModules,moduleTable,methodTable){\nvar moduleNames=Object.keys(localModules);\nfor(var i=0,l=moduleNames.length;i < l;i++) {\nvar moduleName=moduleNames[i];\nvar methods=localModules[moduleName].methods;\nvar moduleID=localModules[moduleName].moduleID;\nmoduleTable[moduleID] = moduleName;\nmethodTable[moduleID] = {};\n\nvar methodNames=Object.keys(methods);\nfor(var j=0,k=methodNames.length;j < k;j++) {\nvar methodName=methodNames[j];\nvar methodConfig=methods[methodName];\nmethodTable[moduleID][methodConfig.methodID] = methodName;}}}},{key:'_genModules',value:\n\n\n\n\nfunction _genModules(remoteModules){\nvar moduleNames=Object.keys(remoteModules);\nfor(var i=0,l=moduleNames.length;i < l;i++) {\nvar moduleName=moduleNames[i];\nvar moduleConfig=remoteModules[moduleName];\nthis.RemoteModules[moduleName] = this._genModule({},moduleConfig);}}},{key:'_genModule',value:\n\n\n\nfunction _genModule(module,moduleConfig){\nvar methodNames=Object.keys(moduleConfig.methods);\nfor(var i=0,l=methodNames.length;i < l;i++) {\nvar methodName=methodNames[i];\nvar methodConfig=moduleConfig.methods[methodName];\nmodule[methodName] = this._genMethod(\nmoduleConfig.moduleID,methodConfig.methodID,methodConfig.type);}\n\nObject.assign(module,moduleConfig.constants);\nreturn module;}},{key:'_genMethod',value:\n\n\nfunction _genMethod(module,method,type){\nif(type === MethodTypes.local){\nreturn null;}\n\n\nvar self=this;\nif(type === MethodTypes.remoteAsync){\nreturn function(){for(var _len=arguments.length,args=Array(_len),_key=0;_key < _len;_key++) {args[_key] = arguments[_key];}\nreturn new Promise(function(resolve,reject){\nself.__nativeCall(module,method,args,resolve,function(errorData){\nvar error=createErrorFromErrorData(errorData);\nreject(error);});});};}else \n\n\n\n{\nreturn function(){for(var _len2=arguments.length,args=Array(_len2),_key2=0;_key2 < _len2;_key2++) {args[_key2] = arguments[_key2];}\nvar lastArg=args.length > 0?args[args.length - 1]:null;\nvar secondLastArg=args.length > 1?args[args.length - 2]:null;\nvar hasSuccCB=typeof lastArg === 'function';\nvar hasErrorCB=typeof secondLastArg === 'function';\nhasErrorCB && invariant(\nhasSuccCB,\n'Cannot have a non-function arg after a function arg.');\n\nvar numCBs=hasSuccCB + hasErrorCB;\nvar onSucc=hasSuccCB?lastArg:null;\nvar onFail=hasErrorCB?secondLastArg:null;\nargs = args.slice(0,args.length - numCBs);\nreturn self.__nativeCall(module,method,args,onFail,onSucc);};}}}]);return MessageQueue;})();\n\n\n\n\n\n\nfunction createErrorFromErrorData(errorData){var \n\nmessage=\n\nerrorData.message;var extraErrorInfo=_objectWithoutProperties(errorData,['message']);\nvar error=new Error(message);\nerror.framesToPop = 1;\nreturn Object.assign(error,extraErrorInfo);}\n\n\nmodule.exports = MessageQueue;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule MessageQueue\n */\n\n/*eslint no-bitwise: 0*/\n\n'use strict';\n\nlet BridgeProfiling = require('BridgeProfiling');\nlet ErrorUtils = require('ErrorUtils');\nlet JSTimersExecution = require('JSTimersExecution');\nlet ReactUpdates = require('ReactUpdates');\n\nlet invariant = require('invariant');\nlet keyMirror = require('keyMirror');\nlet stringifySafe = require('stringifySafe');\n\nlet MODULE_IDS = 0;\nlet METHOD_IDS = 1;\nlet PARAMS = 2;\n\nlet SPY_MODE = false;\n\nlet MethodTypes = keyMirror({\n local: null,\n remote: null,\n remoteAsync: null,\n});\n\nvar guard = (fn) => {\n try {\n fn();\n } catch (error) {\n ErrorUtils.reportFatalError(error);\n }\n};\n\nclass MessageQueue {\n\n constructor(remoteModules, localModules, customRequire) {\n this.RemoteModules = {};\n\n this._require = customRequire || require;\n this._queue = [[],[],[]];\n this._moduleTable = {};\n this._methodTable = {};\n this._callbacks = [];\n this._callbackID = 0;\n\n [\n 'processBatch',\n 'invokeCallbackAndReturnFlushedQueue',\n 'callFunctionReturnFlushedQueue',\n 'flushedQueue',\n ].forEach((fn) => this[fn] = this[fn].bind(this));\n\n this._genModules(remoteModules);\n localModules && this._genLookupTables(\n localModules, this._moduleTable, this._methodTable);\n\n if (__DEV__) {\n this._debugInfo = {};\n this._remoteModuleTable = {};\n this._remoteMethodTable = {};\n this._genLookupTables(\n remoteModules, this._remoteModuleTable, this._remoteMethodTable);\n }\n }\n\n /**\n * Public APIs\n */\n processBatch(batch) {\n guard(() => {\n ReactUpdates.batchedUpdates(() => {\n batch.forEach((call) => {\n let method = call.method === 'callFunctionReturnFlushedQueue' ?\n '__callFunction' : '__invokeCallback';\n guard(() => this[method].apply(this, call.args));\n });\n BridgeProfiling.profile('ReactUpdates.batchedUpdates()');\n });\n BridgeProfiling.profileEnd();\n });\n return this.flushedQueue();\n }\n\n callFunctionReturnFlushedQueue(module, method, args) {\n guard(() => this.__callFunction(module, method, args));\n return this.flushedQueue();\n }\n\n invokeCallbackAndReturnFlushedQueue(cbID, args) {\n guard(() => this.__invokeCallback(cbID, args));\n return this.flushedQueue();\n }\n\n flushedQueue() {\n BridgeProfiling.profile('JSTimersExecution.callImmediates()');\n guard(() => JSTimersExecution.callImmediates());\n BridgeProfiling.profileEnd();\n let queue = this._queue;\n this._queue = [[],[],[]];\n return queue[0].length ? queue : null;\n }\n\n /**\n * \"Private\" methods\n */\n __nativeCall(module, method, params, onFail, onSucc) {\n if (onFail || onSucc) {\n if (__DEV__) {\n // eventually delete old debug info\n (this._callbackID > (1 << 5)) &&\n (this._debugInfo[this._callbackID >> 5] = null);\n\n this._debugInfo[this._callbackID >> 1] = [module, method];\n if (SPY_MODE && isFinite(module)) {\n console.log('JS->N : ' + this._remoteModuleTable[module] + '.' +\n this._remoteMethodTable[module][method] + '(' + JSON.stringify(params) + ')');\n }\n }\n onFail && params.push(this._callbackID);\n this._callbacks[this._callbackID++] = onFail;\n onSucc && params.push(this._callbackID);\n this._callbacks[this._callbackID++] = onSucc;\n }\n this._queue[MODULE_IDS].push(module);\n this._queue[METHOD_IDS].push(method);\n this._queue[PARAMS].push(params);\n }\n\n __callFunction(module, method, args) {\n BridgeProfiling.profile(() => `${module}.${method}(${stringifySafe(args)})`);\n if (isFinite(module)) {\n method = this._methodTable[module][method];\n module = this._moduleTable[module];\n }\n if (__DEV__ && SPY_MODE) {\n console.log('N->JS : ' + module + '.' + method + '(' + JSON.stringify(args) + ')');\n }\n module = this._require(module);\n module[method].apply(module, args);\n BridgeProfiling.profileEnd();\n }\n\n __invokeCallback(cbID, args) {\n BridgeProfiling.profile(\n () => `MessageQueue.invokeCallback(${cbID}, ${stringifySafe(args)})`);\n let callback = this._callbacks[cbID];\n if (__DEV__) {\n let debug = this._debugInfo[cbID >> 1];\n let module = debug && this._remoteModuleTable[debug[0]];\n let method = debug && this._remoteMethodTable[debug[0]][debug[1]];\n if (!callback) {\n console.error(`Callback with id ${cbID}: ${module}.${method}() not found`);\n } else if (SPY_MODE) {\n console.log('N->JS : <callback for ' + module + '.' + method + '>(' + JSON.stringify(args) + ')');\n }\n }\n this._callbacks[cbID & ~1] = null;\n this._callbacks[cbID | 1] = null;\n callback.apply(null, args);\n BridgeProfiling.profileEnd();\n }\n\n /**\n * Private helper methods\n */\n _genLookupTables(localModules, moduleTable, methodTable) {\n let moduleNames = Object.keys(localModules);\n for (var i = 0, l = moduleNames.length; i < l; i++) {\n let moduleName = moduleNames[i];\n let methods = localModules[moduleName].methods;\n let moduleID = localModules[moduleName].moduleID;\n moduleTable[moduleID] = moduleName;\n methodTable[moduleID] = {};\n\n let methodNames = Object.keys(methods);\n for (var j = 0, k = methodNames.length; j < k; j++) {\n let methodName = methodNames[j];\n let methodConfig = methods[methodName];\n methodTable[moduleID][methodConfig.methodID] = methodName;\n }\n }\n }\n\n _genModules(remoteModules) {\n let moduleNames = Object.keys(remoteModules);\n for (var i = 0, l = moduleNames.length; i < l; i++) {\n let moduleName = moduleNames[i];\n let moduleConfig = remoteModules[moduleName];\n this.RemoteModules[moduleName] = this._genModule({}, moduleConfig);\n }\n }\n\n _genModule(module, moduleConfig) {\n let methodNames = Object.keys(moduleConfig.methods);\n for (var i = 0, l = methodNames.length; i < l; i++) {\n let methodName = methodNames[i];\n let methodConfig = moduleConfig.methods[methodName];\n module[methodName] = this._genMethod(\n moduleConfig.moduleID, methodConfig.methodID, methodConfig.type);\n }\n Object.assign(module, moduleConfig.constants);\n return module;\n }\n\n _genMethod(module, method, type) {\n if (type === MethodTypes.local) {\n return null;\n }\n\n let self = this;\n if (type === MethodTypes.remoteAsync) {\n return function(...args) {\n return new Promise((resolve, reject) => {\n self.__nativeCall(module, method, args, resolve, (errorData) => {\n var error = createErrorFromErrorData(errorData);\n reject(error);\n });\n });\n };\n } else {\n return function(...args) {\n let lastArg = args.length > 0 ? args[args.length - 1] : null;\n let secondLastArg = args.length > 1 ? args[args.length - 2] : null;\n let hasSuccCB = typeof lastArg === 'function';\n let hasErrorCB = typeof secondLastArg === 'function';\n hasErrorCB && invariant(\n hasSuccCB,\n 'Cannot have a non-function arg after a function arg.'\n );\n let numCBs = hasSuccCB + hasErrorCB;\n let onSucc = hasSuccCB ? lastArg : null;\n let onFail = hasErrorCB ? secondLastArg : null;\n args = args.slice(0, args.length - numCBs);\n return self.__nativeCall(module, method, args, onFail, onSucc);\n };\n }\n }\n\n}\n\nfunction createErrorFromErrorData(errorData: ErrorData): Error {\n var {\n message,\n ...extraErrorInfo,\n } = errorData;\n var error = new Error(message);\n error.framesToPop = 1;\n return Object.assign(error, extraErrorInfo);\n}\n\nmodule.exports = MessageQueue;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/MessageQueue.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/BridgeProfiling.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar GLOBAL=GLOBAL || this;\n\nvar BridgeProfiling={\nprofile:function(profileName,args){\nif(GLOBAL.__BridgeProfilingIsProfiling){\nif(args){\ntry{\nargs = JSON.stringify(args);}\ncatch(err) {\nargs = err.message;}}\n\n\nprofileName = typeof profileName === 'function'?\nprofileName():profileName;\nconsole.profile(profileName,args);}},\n\n\n\nprofileEnd:function(profileName){\nif(GLOBAL.__BridgeProfilingIsProfiling){\nconsole.profileEnd(profileName);}},\n\n\n\nswizzleReactPerf:function(){\nvar ReactPerf=require('ReactPerf');\nvar originalMeasure=ReactPerf.measure;\nReactPerf.measure = function(objName,fnName,func){\nfunc = originalMeasure.call(ReactPerf,objName,fnName,func);\nreturn function(component){\nBridgeProfiling.profile();\nvar ret=func.apply(this,arguments);\nif(GLOBAL.__BridgeProfilingIsProfiling){\nvar name=this._instance && this._instance.constructor && (\nthis._instance.constructor.displayName || \nthis._instance.constructor.name);\nBridgeProfiling.profileEnd(objName + '.' + fnName + '(' + name + ')');}\n\nreturn ret;};};}};\n\n\n\n\n\nmodule.exports = BridgeProfiling;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BridgeProfiling\n * @flow\n */\n'use strict';\n\nvar GLOBAL = GLOBAL || this;\n\nvar BridgeProfiling = {\n profile(profileName?: any, args?: any) {\n if (GLOBAL.__BridgeProfilingIsProfiling) {\n if (args) {\n try {\n args = JSON.stringify(args);\n } catch(err) {\n args = err.message;\n }\n }\n profileName = typeof profileName === 'function' ?\n profileName() : profileName;\n console.profile(profileName, args);\n }\n },\n\n profileEnd(profileName?: string) {\n if (GLOBAL.__BridgeProfilingIsProfiling) {\n console.profileEnd(profileName);\n }\n },\n\n swizzleReactPerf() {\n var ReactPerf = require('ReactPerf');\n var originalMeasure = ReactPerf.measure;\n ReactPerf.measure = function (objName, fnName, func) {\n func = originalMeasure.call(ReactPerf, objName, fnName, func);\n return function (component) {\n BridgeProfiling.profile();\n var ret = func.apply(this, arguments);\n if (GLOBAL.__BridgeProfilingIsProfiling) {\n var name = this._instance && this._instance.constructor &&\n (this._instance.constructor.displayName ||\n this._instance.constructor.name);\n BridgeProfiling.profileEnd(`${objName}.${fnName}(${name})`);\n }\n return ret;\n };\n };\n },\n};\n\nmodule.exports = BridgeProfiling;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/BridgeProfiling.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/ErrorUtils.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\nGLOBAL=this;\n\n\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports = GLOBAL.ErrorUtils;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ErrorUtils\n */\n/* eslint-disable consistent-this, global-strict */\n\nvar GLOBAL = this;\n\n/**\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n *\n * However, we still want to treat ErrorUtils as a module so that other modules\n * that use it aren't just using a global variable, so simply export the global\n * variable here. ErrorUtils is originally defined in a file named error-guard.js.\n */\nmodule.exports = GLOBAL.ErrorUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/ErrorUtils.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimersExecution.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar performanceNow=require('performanceNow');\nvar warning=require('warning');\n\n\n\n\n\n\nvar JSTimersExecution={\nGUID:1,\nType:keyMirror({\nsetTimeout:null,\nsetInterval:null,\nrequestAnimationFrame:null,\nsetImmediate:null}),\n\n\n\ncallbacks:[],\ntypes:[],\ntimerIDs:[],\nimmediates:[],\n\n\n\n\n\n\ncallTimer:function(timerID){\nwarning(timerID <= JSTimersExecution.GUID,'Tried to call timer with ID ' + timerID + ' but no such timer exists');\nvar timerIndex=JSTimersExecution.timerIDs.indexOf(timerID);\n\n\n\n\n\nif(timerIndex === -1){\nreturn;}\n\nvar type=JSTimersExecution.types[timerIndex];\nvar callback=JSTimersExecution.callbacks[timerIndex];\n\n\nif(type === JSTimersExecution.Type.setTimeout || \ntype === JSTimersExecution.Type.setImmediate || \ntype === JSTimersExecution.Type.requestAnimationFrame){\nJSTimersExecution._clearIndex(timerIndex);}\n\n\ntry{\nif(type === JSTimersExecution.Type.setTimeout || \ntype === JSTimersExecution.Type.setInterval || \ntype === JSTimersExecution.Type.setImmediate){\ncallback();}else \nif(type === JSTimersExecution.Type.requestAnimationFrame){\nvar currentTime=performanceNow();\ncallback(currentTime);}else \n{\nconsole.error('Tried to call a callback with invalid type: ' + type);\nreturn;}}\n\ncatch(e) {\n\nJSTimersExecution.errors = JSTimersExecution.errors || [];\nJSTimersExecution.errors.push(e);}},\n\n\n\n\n\n\n\ncallTimers:function(timerIDs){\ninvariant(timerIDs.length !== 0,'Probably shouldn\\'t call \"callTimers\" with no timerIDs');\n\nJSTimersExecution.errors = null;\ntimerIDs.forEach(JSTimersExecution.callTimer);\n\nvar errors=JSTimersExecution.errors;\nif(errors){\nvar errorCount=errors.length;\nif(errorCount > 1){\n\n\nfor(var ii=1;ii < errorCount;ii++) {\nrequire('JSTimers').setTimeout(\n(function(error){throw error;}).bind(null,errors[ii]),\n0);}}\n\n\n\nthrow errors[0];}},\n\n\n\n\n\n\n\ncallImmediates:function(){\nJSTimersExecution.errors = null;\nwhile(JSTimersExecution.immediates.length !== 0) {\nJSTimersExecution.callTimer(JSTimersExecution.immediates.shift());}\n\nif(JSTimersExecution.errors){\nJSTimersExecution.errors.forEach(function(error){return (\nrequire('JSTimers').setTimeout(function(){throw error;},0));});}},\n\n\n\n\n_clearIndex:function(i){\nJSTimersExecution.timerIDs[i] = null;\nJSTimersExecution.callbacks[i] = null;\nJSTimersExecution.types[i] = null;}};\n\n\n\nmodule.exports = JSTimersExecution;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule JSTimersExecution\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar performanceNow = require('performanceNow');\nvar warning = require('warning');\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\nvar JSTimersExecution = {\n GUID: 1,\n Type: keyMirror({\n setTimeout: null,\n setInterval: null,\n requestAnimationFrame: null,\n setImmediate: null,\n }),\n\n // Parallel arrays:\n callbacks: [],\n types: [],\n timerIDs: [],\n immediates: [],\n\n /**\n * Calls the callback associated with the ID. Also unregister that callback\n * if it was a one time timer (setTimeout), and not unregister it if it was\n * recurring (setInterval).\n */\n callTimer: function(timerID) {\n warning(timerID <= JSTimersExecution.GUID, 'Tried to call timer with ID ' + timerID + ' but no such timer exists');\n var timerIndex = JSTimersExecution.timerIDs.indexOf(timerID);\n // timerIndex of -1 means that no timer with that ID exists. There are\n // two situations when this happens, when a garbage timer ID was given\n // and when a previously existing timer was deleted before this callback\n // fired. In both cases we want to ignore the timer id, but in the former\n // case we warn as well.\n if (timerIndex === -1) {\n return;\n }\n var type = JSTimersExecution.types[timerIndex];\n var callback = JSTimersExecution.callbacks[timerIndex];\n\n // Clear the metadata\n if (type === JSTimersExecution.Type.setTimeout ||\n type === JSTimersExecution.Type.setImmediate ||\n type === JSTimersExecution.Type.requestAnimationFrame) {\n JSTimersExecution._clearIndex(timerIndex);\n }\n\n try {\n if (type === JSTimersExecution.Type.setTimeout ||\n type === JSTimersExecution.Type.setInterval ||\n type === JSTimersExecution.Type.setImmediate) {\n callback();\n } else if (type === JSTimersExecution.Type.requestAnimationFrame) {\n var currentTime = performanceNow();\n callback(currentTime);\n } else {\n console.error('Tried to call a callback with invalid type: ' + type);\n return;\n }\n } catch (e) {\n // Don't rethrow so that we can run every other timer.\n JSTimersExecution.errors = JSTimersExecution.errors || [];\n JSTimersExecution.errors.push(e);\n }\n },\n\n /**\n * This is called from the native side. We are passed an array of timerIDs,\n * and\n */\n callTimers: function(timerIDs) {\n invariant(timerIDs.length !== 0, 'Probably shouldn\\'t call \"callTimers\" with no timerIDs');\n\n JSTimersExecution.errors = null;\n timerIDs.forEach(JSTimersExecution.callTimer);\n\n var errors = JSTimersExecution.errors;\n if (errors) {\n var errorCount = errors.length;\n if (errorCount > 1) {\n // Throw all the other errors in a setTimeout, which will throw each\n // error one at a time\n for (var ii = 1; ii < errorCount; ii++) {\n require('JSTimers').setTimeout(\n ((error) => { throw error; }).bind(null, errors[ii]),\n 0\n );\n }\n }\n throw errors[0];\n }\n },\n\n /**\n * This is called after we execute any command we receive from native but\n * before we hand control back to native.\n */\n callImmediates: function() {\n JSTimersExecution.errors = null;\n while (JSTimersExecution.immediates.length !== 0) {\n JSTimersExecution.callTimer(JSTimersExecution.immediates.shift());\n }\n if (JSTimersExecution.errors) {\n JSTimersExecution.errors.forEach((error) =>\n require('JSTimers').setTimeout(() => { throw error; }, 0)\n );\n }\n },\n\n _clearIndex: function(i) {\n JSTimersExecution.timerIDs[i] = null;\n JSTimersExecution.callbacks[i] = null;\n JSTimersExecution.types[i] = null;\n },\n};\n\nmodule.exports = JSTimersExecution;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimersExecution.js"},"mtime":1435113427000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performanceNow.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\nperformance=require('performance');\n\n\n\n\n\n\nif(!performance || !performance.now){\nperformance = Date;}\n\n\nvar performanceNow=performance.now.bind(performance);\n\nmodule.exports = performanceNow;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule performanceNow\n * @typechecks\n */\n\nvar performance = require('performance');\n\n/**\n * Detect if we can use `window.performance.now()` and gracefully fallback to\n * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now\n * because of Facebook's testing infrastructure.\n */\nif (!performance || !performance.now) {\n performance = Date;\n}\n\nvar performanceNow = performance.now.bind(performance);\n\nmodule.exports = performanceNow;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performanceNow.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performance.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ExecutionEnvironment=require('ExecutionEnvironment');\n\nvar performance;\n\nif(ExecutionEnvironment.canUseDOM){\nperformance = \nwindow.performance || \nwindow.msPerformance || \nwindow.webkitPerformance;}\n\n\nmodule.exports = performance || {};","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule performance\n * @typechecks\n */\n\n\"use strict\";\n\nvar ExecutionEnvironment = require('ExecutionEnvironment');\n\nvar performance;\n\nif (ExecutionEnvironment.canUseDOM) {\n performance =\n window.performance ||\n window.msPerformance ||\n window.webkitPerformance;\n}\n\nmodule.exports = performance || {};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performance.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/vendor/core/ExecutionEnvironment.ios.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar canUseDOM=false;\n\n\n\n\n\n\n\nvar ExecutionEnvironment={\n\ncanUseDOM:canUseDOM,\n\ncanUseWorkers:typeof Worker !== 'undefined',\n\ncanUseEventListeners:\ncanUseDOM && !!(window.addEventListener || window.attachEvent),\n\ncanUseViewport:canUseDOM && !!window.screen,\n\nisInWorker:!canUseDOM};\n\n\n\nmodule.exports = ExecutionEnvironment;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule ExecutionEnvironment\n *\n * Stubs SignedSource<<7afee88a05412d0c4eef54817419648e>>\n */\n\n/*jslint evil: true */\n\n\"use strict\";\n\nvar canUseDOM = false;\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners:\n canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/vendor/core/ExecutionEnvironment.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimers.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTTiming=require('NativeModules').Timing;\nvar JSTimersExecution=require('JSTimersExecution');\n\n\n\n\n\n\nvar JSTimers={\nTypes:JSTimersExecution.Types,\n\n\n\n\n\n_getFreeIndex:function(){\nvar freeIndex=JSTimersExecution.timerIDs.indexOf(null);\nif(freeIndex === -1){\nfreeIndex = JSTimersExecution.timerIDs.length;}\n\nreturn freeIndex;},\n\n\n\n\n\n\nsetTimeout:function(func,duration){for(var _len=arguments.length,args=Array(_len > 2?_len - 2:0),_key=2;_key < _len;_key++) {args[_key - 2] = arguments[_key];}\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = function(){\nreturn func.apply(undefined,args);};\n\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setTimeout;\nRCTTiming.createTimer(newID,duration,Date.now(),false);\nreturn newID;},\n\n\n\n\n\n\nsetInterval:function(func,duration){for(var _len2=arguments.length,args=Array(_len2 > 2?_len2 - 2:0),_key2=2;_key2 < _len2;_key2++) {args[_key2 - 2] = arguments[_key2];}\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = function(){\nreturn func.apply(undefined,args);};\n\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setInterval;\nRCTTiming.createTimer(newID,duration,Date.now(),true);\nreturn newID;},\n\n\n\n\n\n\nsetImmediate:function(func){for(var _len3=arguments.length,args=Array(_len3 > 1?_len3 - 1:0),_key3=1;_key3 < _len3;_key3++) {args[_key3 - 1] = arguments[_key3];}\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = function(){\nreturn func.apply(undefined,args);};\n\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setImmediate;\nJSTimersExecution.immediates.push(newID);\nreturn newID;},\n\n\n\n\n\nrequestAnimationFrame:function(func){\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = func;\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.requestAnimationFrame;\nRCTTiming.createTimer(newID,1,Date.now(),false);\nreturn newID;},\n\n\nclearTimeout:function(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\nclearInterval:function(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\nclearImmediate:function(timerID){\nJSTimers._clearTimerID(timerID);\nJSTimersExecution.immediates.splice(\nJSTimersExecution.immediates.indexOf(timerID),\n1);},\n\n\n\ncancelAnimationFrame:function(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\n_clearTimerID:function(timerID){\n\n\nif(timerID == null){\nreturn;}\n\n\nvar index=JSTimersExecution.timerIDs.indexOf(timerID);\n\nif(index !== -1){\nJSTimersExecution._clearIndex(index);\nif(JSTimersExecution.types[index] !== JSTimersExecution.Type.setImmediate){\nRCTTiming.deleteTimer(timerID);}}}};\n\n\n\n\n\nmodule.exports = JSTimers;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule JSTimers\n */\n'use strict';\n\n// Note that the module JSTimers is split into two in order to solve a cycle\n// in dependencies. NativeModules > BatchedBridge > MessageQueue > JSTimersExecution\nvar RCTTiming = require('NativeModules').Timing;\nvar JSTimersExecution = require('JSTimersExecution');\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\nvar JSTimers = {\n Types: JSTimersExecution.Types,\n\n /**\n * Returns a free index if one is available, and the next consecutive index\n * otherwise.\n */\n _getFreeIndex: function() {\n var freeIndex = JSTimersExecution.timerIDs.indexOf(null);\n if (freeIndex === -1) {\n freeIndex = JSTimersExecution.timerIDs.length;\n }\n return freeIndex;\n },\n\n /**\n * @param {function} func Callback to be invoked after `duration` ms.\n * @param {number} duration Number of milliseconds.\n */\n setTimeout: function(func, duration, ...args) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = function() {\n return func.apply(undefined, args);\n };\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setTimeout;\n RCTTiming.createTimer(newID, duration, Date.now(), /** recurring */ false);\n return newID;\n },\n\n /**\n * @param {function} func Callback to be invoked every `duration` ms.\n * @param {number} duration Number of milliseconds.\n */\n setInterval: function(func, duration, ...args) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = function() {\n return func.apply(undefined, args);\n };\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setInterval;\n RCTTiming.createTimer(newID, duration, Date.now(), /** recurring */ true);\n return newID;\n },\n\n /**\n * @param {function} func Callback to be invoked before the end of the\n * current JavaScript execution loop.\n */\n setImmediate: function(func, ...args) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = function() {\n return func.apply(undefined, args);\n };\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setImmediate;\n JSTimersExecution.immediates.push(newID);\n return newID;\n },\n\n /**\n * @param {function} func Callback to be invoked every frame.\n */\n requestAnimationFrame: function(func) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = func;\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.requestAnimationFrame;\n RCTTiming.createTimer(newID, 1, Date.now(), /** recurring */ false);\n return newID;\n },\n\n clearTimeout: function(timerID) {\n JSTimers._clearTimerID(timerID);\n },\n\n clearInterval: function(timerID) {\n JSTimers._clearTimerID(timerID);\n },\n\n clearImmediate: function(timerID) {\n JSTimers._clearTimerID(timerID);\n JSTimersExecution.immediates.splice(\n JSTimersExecution.immediates.indexOf(timerID),\n 1\n );\n },\n\n cancelAnimationFrame: function(timerID) {\n JSTimers._clearTimerID(timerID);\n },\n\n _clearTimerID: function(timerID) {\n // JSTimersExecution.timerIDs contains nulls after timers have been removed;\n // ignore nulls upfront so indexOf doesn't find them\n if (timerID == null) {\n return;\n }\n\n var index = JSTimersExecution.timerIDs.indexOf(timerID);\n // See corresponding comment in `callTimers` for reasoning behind this\n if (index !== -1) {\n JSTimersExecution._clearIndex(index);\n if (JSTimersExecution.types[index] !== JSTimersExecution.Type.setImmediate) {\n RCTTiming.deleteTimer(timerID);\n }\n }\n },\n};\n\nmodule.exports = JSTimers;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimers.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/stringifySafe.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction stringifySafe(arg){\nvar ret;\nvar type=typeof arg;\nif(arg === undefined){\nret = 'undefined';}else \nif(arg === null){\nret = 'null';}else \nif(type === 'string'){\nret = '\"' + arg + '\"';}else \nif(type === 'function'){\ntry{\nret = arg.toString();}\ncatch(e) {\nret = '[function unknown]';}}else \n\n{\n\n\ntry{\nret = JSON.stringify(arg);}\ncatch(e) {\nif(typeof arg.toString === 'function'){\ntry{\nret = arg.toString();}\ncatch(E) {}}}}\n\n\n\nreturn ret || '[\"' + type + '\" failed to stringify]';}\n\n\nmodule.exports = stringifySafe;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule stringifySafe\n * @flow\n */\n'use strict';\n\n/**\n * Tries to stringify with JSON.stringify and toString, but catches exceptions\n * (e.g. from circular objects) and always returns a string and never throws.\n */\nfunction stringifySafe(arg: any): string {\n var ret;\n var type = typeof arg;\n if (arg === undefined) {\n ret = 'undefined';\n } else if (arg === null) {\n ret = 'null';\n } else if (type === 'string') {\n ret = '\"' + arg + '\"';\n } else if (type === 'function') {\n try {\n ret = arg.toString();\n } catch (e) {\n ret = '[function unknown]';\n }\n } else {\n // Perform a try catch, just in case the object has a circular\n // reference or stringify throws for some other reason.\n try {\n ret = JSON.stringify(arg);\n } catch (e) {\n if (typeof arg.toString === 'function') {\n try {\n ret = arg.toString();\n } catch (E) {}\n }\n }\n }\n return ret || '[\"' + type + '\" failed to stringify]';\n}\n\nmodule.exports = stringifySafe;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/stringifySafe.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/nativeModulePrefixNormalizer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction nativeModulePrefixNormalizer(\nmodules)\n{\nObject.keys(modules).forEach(function(moduleName){\nvar strippedName=moduleName.replace(/^(RCT|RK)/,'');\nif(modules['RCT' + strippedName] && modules['RK' + strippedName]){\nthrow new Error(\n'Module cannot be registered as both RCT and RK: ' + moduleName);}\n\n\nif(strippedName !== moduleName){\nmodules[strippedName] = modules[moduleName];\ndelete modules[moduleName];}});}\n\n\n\n\nmodule.exports = nativeModulePrefixNormalizer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule nativeModulePrefixNormalizer\n * @flow\n */\n'use strict';\n\n// Dirty hack to support old (RK) and new (RCT) native module name conventions\nfunction nativeModulePrefixNormalizer(\n modules: {[key: string]: any}\n): void {\n Object.keys(modules).forEach((moduleName) => {\n var strippedName = moduleName.replace(/^(RCT|RK)/, '');\n if (modules['RCT' + strippedName] && modules['RK' + strippedName]) {\n throw new Error(\n 'Module cannot be registered as both RCT and RK: ' + moduleName\n );\n }\n if (strippedName !== moduleName) {\n modules[strippedName] = modules[moduleName];\n delete modules[moduleName];\n }\n });\n}\n\nmodule.exports = nativeModulePrefixNormalizer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/nativeModulePrefixNormalizer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorUtils.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactNativeMount=require('ReactNativeMount');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\n\nfunction traverseOwnerTreeUp(hierarchy,instance){\nif(instance){\nhierarchy.unshift(instance);\ntraverseOwnerTreeUp(hierarchy,instance._currentElement._owner);}}\n\n\n\nfunction findInstance(component,targetID){\nif(targetID === findRootNodeID(component)){\nreturn component;}\n\nif(component._renderedComponent){\nreturn findInstance(component._renderedComponent,targetID);}else \n{\nfor(var key in component._renderedChildren) {\nvar child=component._renderedChildren[key];\nif(ReactInstanceHandles.isAncestorIDOf(findRootNodeID(child),targetID)){\nvar instance=findInstance(child,targetID);\nif(instance){\nreturn instance;}}}}}\n\n\n\n\n\n\nfunction findRootNodeID(component){\nvar internalInstance=ReactInstanceMap.get(component);\nreturn internalInstance?internalInstance._rootNodeID:component._rootNodeID;}\n\n\nfunction findInstanceByNativeTag(rootTag,nativeTag){\nvar containerID=ReactNativeTagHandles.tagToRootNodeID[rootTag];\nvar rootInstance=ReactNativeMount._instancesByContainerID[containerID];\nvar targetID=ReactNativeTagHandles.tagToRootNodeID[nativeTag];\nif(!targetID){\nreturn undefined;}\n\nreturn findInstance(rootInstance,targetID);}\n\n\nfunction getOwnerHierarchy(instance){\nvar hierarchy=[];\ntraverseOwnerTreeUp(hierarchy,instance);\nreturn hierarchy;}\n\n\nmodule.exports = {findInstanceByNativeTag:findInstanceByNativeTag,getOwnerHierarchy:getOwnerHierarchy};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InspectorUtils\n */\n'use strict';\n\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactNativeMount = require('ReactNativeMount');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nfunction traverseOwnerTreeUp(hierarchy, instance) {\n if (instance) {\n hierarchy.unshift(instance);\n traverseOwnerTreeUp(hierarchy, instance._currentElement._owner);\n }\n}\n\nfunction findInstance(component, targetID) {\n if (targetID === findRootNodeID(component)) {\n return component;\n }\n if (component._renderedComponent) {\n return findInstance(component._renderedComponent, targetID);\n } else {\n for (var key in component._renderedChildren) {\n var child = component._renderedChildren[key];\n if (ReactInstanceHandles.isAncestorIDOf(findRootNodeID(child), targetID)) {\n var instance = findInstance(child, targetID);\n if (instance) {\n return instance;\n }\n }\n }\n }\n}\n\nfunction findRootNodeID(component) {\n var internalInstance = ReactInstanceMap.get(component);\n return internalInstance ? internalInstance._rootNodeID : component._rootNodeID;\n}\n\nfunction findInstanceByNativeTag(rootTag, nativeTag) {\n var containerID = ReactNativeTagHandles.tagToRootNodeID[rootTag];\n var rootInstance = ReactNativeMount._instancesByContainerID[containerID];\n var targetID = ReactNativeTagHandles.tagToRootNodeID[nativeTag];\n if (!targetID) {\n return undefined;\n }\n return findInstance(rootInstance, targetID);\n}\n\nfunction getOwnerHierarchy(instance) {\n var hierarchy = [];\n traverseOwnerTreeUp(hierarchy, instance);\n return hierarchy;\n}\n\nmodule.exports = {findInstanceByNativeTag, getOwnerHierarchy};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorUtils.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeMount.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar ReactPerf=require('ReactPerf');\nvar ReactReconciler=require('ReactReconciler');\nvar ReactUpdateQueue=require('ReactUpdateQueue');\nvar ReactUpdates=require('ReactUpdates');\n\nvar emptyObject=require('emptyObject');\nvar instantiateReactComponent=require('instantiateReactComponent');\nvar shouldUpdateReactComponent=require('shouldUpdateReactComponent');\n\nfunction instanceNumberToChildRootID(rootNodeID,instanceNumber){\nreturn rootNodeID + '[' + instanceNumber + ']';}\n\n\n\n\n\n\n\n\n\n\nfunction mountComponentIntoNode(\ncomponentInstance,\nrootID,\ncontainer,\ntransaction){\nvar markup=ReactReconciler.mountComponent(\ncomponentInstance,rootID,transaction,emptyObject);\n\ncomponentInstance._isTopLevel = true;\nReactNativeMount._mountImageIntoNode(markup,container);}\n\n\n\n\n\n\n\n\n\nfunction batchedMountComponentIntoNode(\ncomponentInstance,\nrootID,\ncontainer){\nvar transaction=ReactUpdates.ReactReconcileTransaction.getPooled();\ntransaction.perform(\nmountComponentIntoNode,\nnull,\ncomponentInstance,\nrootID,\ncontainer,\ntransaction);\n\nReactUpdates.ReactReconcileTransaction.release(transaction);}\n\n\n\n\n\n\nvar ReactNativeMount={\ninstanceCount:0,\n\n_instancesByContainerID:{},\n\n\n\n\n\nrenderComponent:function(\nnextElement,\ncontainerTag,\ncallback)\n{\nvar topRootNodeID=ReactNativeTagHandles.tagToRootNodeID[containerTag];\nif(topRootNodeID){\nvar prevComponent=ReactNativeMount._instancesByContainerID[topRootNodeID];\nif(prevComponent){\nvar prevElement=prevComponent._currentElement;\nif(shouldUpdateReactComponent(prevElement,nextElement)){\nReactUpdateQueue.enqueueElementInternal(prevComponent,nextElement);\nif(callback){\nReactUpdateQueue.enqueueCallbackInternal(prevComponent,callback);}\n\nreturn prevComponent;}else \n{\nReactNativeMount.unmountComponentAtNode(containerTag);}}}\n\n\n\n\nif(!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)){\nconsole.error('You cannot render into anything but a top root');\nreturn;}\n\n\nvar topRootNodeID=ReactNativeTagHandles.allocateRootNodeIDForTag(containerTag);\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\ntopRootNodeID,\ncontainerTag);\n\n\nvar instance=instantiateReactComponent(nextElement);\nReactNativeMount._instancesByContainerID[topRootNodeID] = instance;\n\nvar childRootNodeID=instanceNumberToChildRootID(\ntopRootNodeID,\nReactNativeMount.instanceCount++);\n\n\n\n\n\n\nReactUpdates.batchedUpdates(\nbatchedMountComponentIntoNode,\ninstance,\nchildRootNodeID,\ntopRootNodeID);\n\nvar component=instance.getPublicInstance();\nif(callback){\ncallback.call(component);}\n\nreturn component;},\n\n\n\n\n\n\n_mountImageIntoNode:ReactPerf.measure(\n\n'ReactComponentBrowserEnvironment',\n'mountImageIntoNode',\nfunction(mountImage,containerID){\n\n\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\nmountImage.rootNodeID,\nmountImage.tag);\n\nvar addChildTags=[mountImage.tag];\nvar addAtIndices=[0];\nRCTUIManager.manageChildren(\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID),\nnull,\nnull,\naddChildTags,\naddAtIndices,\nnull);}),\n\n\n\n\n\n\n\n\n\n\n\n\nunmountComponentAtNodeAndRemoveContainer:function(\ncontainerTag)\n{\nReactNativeMount.unmountComponentAtNode(containerTag);\n\nRCTUIManager.removeRootView(containerTag);},\n\n\n\n\n\n\n\nunmountComponentAtNode:function(containerTag){\nif(!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)){\nconsole.error('You cannot render into anything but a top root');\nreturn false;}\n\n\nvar containerID=ReactNativeTagHandles.tagToRootNodeID[containerTag];\nvar instance=ReactNativeMount._instancesByContainerID[containerID];\nif(!instance){\nreturn false;}\n\nReactNativeMount.unmountComponentFromNode(instance,containerID);\ndelete ReactNativeMount._instancesByContainerID[containerID];\nreturn true;},\n\n\n\n\n\n\n\n\n\n\n\nunmountComponentFromNode:function(\ninstance,\ncontainerID)\n{\n\nReactReconciler.unmountComponent(instance);\nvar containerTag=\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID);\nRCTUIManager.removeSubviewsFromContainerWithID(containerTag);},\n\n\ngetNode:function(id){\nreturn id;}};\n\n\n\nReactNativeMount.renderComponent = ReactPerf.measure(\n'ReactMount',\n'_renderNewRootComponent',\nReactNativeMount.renderComponent);\n\n\nmodule.exports = ReactNativeMount;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeMount\n * @flow\n */\n'use strict';\n\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar ReactPerf = require('ReactPerf');\nvar ReactReconciler = require('ReactReconciler');\nvar ReactUpdateQueue = require('ReactUpdateQueue');\nvar ReactUpdates = require('ReactUpdates');\n\nvar emptyObject = require('emptyObject');\nvar instantiateReactComponent = require('instantiateReactComponent');\nvar shouldUpdateReactComponent = require('shouldUpdateReactComponent');\n\nfunction instanceNumberToChildRootID(rootNodeID, instanceNumber) {\n return rootNodeID + '[' + instanceNumber + ']';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {number} rootID ID of the root node.\n * @param {number} container container element to mount into.\n * @param {ReactReconcileTransaction} transaction\n */\nfunction mountComponentIntoNode(\n componentInstance,\n rootID,\n container,\n transaction) {\n var markup = ReactReconciler.mountComponent(\n componentInstance, rootID, transaction, emptyObject\n );\n componentInstance._isTopLevel = true;\n ReactNativeMount._mountImageIntoNode(markup, container);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {number} rootID ID of the root node.\n * @param {number} container container element to mount into.\n */\nfunction batchedMountComponentIntoNode(\n componentInstance,\n rootID,\n container) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();\n transaction.perform(\n mountComponentIntoNode,\n null,\n componentInstance,\n rootID,\n container,\n transaction\n );\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * As soon as `ReactMount` is refactored to not rely on the DOM, we can share\n * code between the two. For now, we'll hard code the ID logic.\n */\nvar ReactNativeMount = {\n instanceCount: 0,\n\n _instancesByContainerID: {},\n\n /**\n * @param {ReactComponent} instance Instance to render.\n * @param {containerTag} containerView Handle to native view tag\n */\n renderComponent: function(\n nextElement: ReactElement,\n containerTag: number,\n callback?: ?(() => void)\n ): ?ReactComponent {\n var topRootNodeID = ReactNativeTagHandles.tagToRootNodeID[containerTag];\n if (topRootNodeID) {\n var prevComponent = ReactNativeMount._instancesByContainerID[topRootNodeID];\n if (prevComponent) {\n var prevElement = prevComponent._currentElement;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n return prevComponent;\n } else {\n ReactNativeMount.unmountComponentAtNode(containerTag);\n }\n }\n }\n\n if (!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)) {\n console.error('You cannot render into anything but a top root');\n return;\n }\n\n var topRootNodeID = ReactNativeTagHandles.allocateRootNodeIDForTag(containerTag);\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\n topRootNodeID,\n containerTag\n );\n\n var instance = instantiateReactComponent(nextElement);\n ReactNativeMount._instancesByContainerID[topRootNodeID] = instance;\n\n var childRootNodeID = instanceNumberToChildRootID(\n topRootNodeID,\n ReactNativeMount.instanceCount++\n );\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(\n batchedMountComponentIntoNode,\n instance,\n childRootNodeID,\n topRootNodeID\n );\n var component = instance.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * @param {View} view View tree image.\n * @param {number} containerViewID View to insert sub-view into.\n */\n _mountImageIntoNode: ReactPerf.measure(\n // FIXME(frantic): #4441289 Hack to avoid modifying react-tools\n 'ReactComponentBrowserEnvironment',\n 'mountImageIntoNode',\n function(mountImage, containerID) {\n // Since we now know that the `mountImage` has been mounted, we can\n // mark it as such.\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\n mountImage.rootNodeID,\n mountImage.tag\n );\n var addChildTags = [mountImage.tag];\n var addAtIndices = [0];\n RCTUIManager.manageChildren(\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID),\n null, // moveFromIndices\n null, // moveToIndices\n addChildTags,\n addAtIndices,\n null // removeAtIndices\n );\n }\n ),\n\n /**\n * Standard unmounting of the component that is rendered into `containerID`,\n * but will also execute a command to remove the actual container view\n * itself. This is useful when a client is cleaning up a React tree, and also\n * knows that the container will no longer be needed. When executing\n * asynchronously, it's easier to just have this method be the one that calls\n * for removal of the view.\n */\n unmountComponentAtNodeAndRemoveContainer: function(\n containerTag: number\n ) {\n ReactNativeMount.unmountComponentAtNode(containerTag);\n // call back into native to remove all of the subviews from this container\n RCTUIManager.removeRootView(containerTag);\n },\n\n /**\n * Unmount component at container ID by iterating through each child component\n * that has been rendered and unmounting it. There should just be one child\n * component at this time.\n */\n unmountComponentAtNode: function(containerTag: number): boolean {\n if (!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)) {\n console.error('You cannot render into anything but a top root');\n return false;\n }\n\n var containerID = ReactNativeTagHandles.tagToRootNodeID[containerTag];\n var instance = ReactNativeMount._instancesByContainerID[containerID];\n if (!instance) {\n return false;\n }\n ReactNativeMount.unmountComponentFromNode(instance, containerID);\n delete ReactNativeMount._instancesByContainerID[containerID];\n return true;\n },\n\n /**\n * Unmounts a component and sends messages back to iOS to remove its subviews.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {string} containerID ID of container we're removing from.\n * @final\n * @internal\n * @see {ReactNativeMount.unmountComponentAtNode}\n */\n unmountComponentFromNode: function(\n instance: ReactComponent,\n containerID: string\n ) {\n // Call back into native to remove all of the subviews from this container\n ReactReconciler.unmountComponent(instance);\n var containerTag =\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID);\n RCTUIManager.removeSubviewsFromContainerWithID(containerTag);\n },\n\n getNode: function<T>(id: T): T {\n return id;\n }\n};\n\nReactNativeMount.renderComponent = ReactPerf.measure(\n 'ReactMount',\n '_renderNewRootComponent',\n ReactNativeMount.renderComponent\n);\n\nmodule.exports = ReactNativeMount;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeMount.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeTagHandles.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar INITIAL_TAG_COUNT=1;\nvar NATIVE_TOP_ROOT_ID_SEPARATOR='{TOP_LEVEL}';\nvar ReactNativeTagHandles={\ntagsStartAt:INITIAL_TAG_COUNT,\ntagCount:INITIAL_TAG_COUNT,\n\nallocateTag:function(){\n\nwhile(this.reactTagIsNativeTopRootID(ReactNativeTagHandles.tagCount)) {\nReactNativeTagHandles.tagCount++;}\n\nvar tag=ReactNativeTagHandles.tagCount;\nReactNativeTagHandles.tagCount++;\nreturn tag;},\n\n\n\n\n\n\n\n\n\n\n\nassociateRootNodeIDWithMountedNodeHandle:function(\nrootNodeID,\ntag)\n{\nwarning(rootNodeID && tag,'Root node or tag is null when associating');\nif(rootNodeID && tag){\nReactNativeTagHandles.tagToRootNodeID[tag] = rootNodeID;\nReactNativeTagHandles.rootNodeIDToTag[rootNodeID] = tag;}},\n\n\n\nallocateRootNodeIDForTag:function(tag){\ninvariant(\nthis.reactTagIsNativeTopRootID(tag),\n'Expect a native root tag, instead got ',tag);\n\nreturn '.r[' + tag + ']' + NATIVE_TOP_ROOT_ID_SEPARATOR;},\n\n\nreactTagIsNativeTopRootID:function(reactTag){\n\nreturn reactTag % 10 === 1;},\n\n\ngetNativeTopRootIDFromNodeID:function(nodeID){\nif(!nodeID){\nreturn null;}\n\nvar index=nodeID.indexOf(NATIVE_TOP_ROOT_ID_SEPARATOR);\nif(index === -1){\nreturn null;}\n\nreturn nodeID.substr(0,index + NATIVE_TOP_ROOT_ID_SEPARATOR.length);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmostRecentMountedNodeHandleForRootNodeID:function(\nrootNodeID)\n{\nreturn ReactNativeTagHandles.rootNodeIDToTag[rootNodeID];},\n\n\ntagToRootNodeID:[],\n\nrootNodeIDToTag:{}};\n\n\nmodule.exports = ReactNativeTagHandles;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeTagHandles\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n/**\n * Keeps track of allocating and associating native \"tags\" which are numeric,\n * unique view IDs. All the native tags are negative numbers, to avoid\n * collisions, but in the JS we keep track of them as positive integers to store\n * them effectively in Arrays. So we must refer to them as \"inverses\" of the\n * native tags (that are * normally negative).\n *\n * It *must* be the case that every `rootNodeID` always maps to the exact same\n * `tag` forever. The easiest way to accomplish this is to never delete\n * anything from this table.\n * Why: Because `dangerouslyReplaceNodeWithMarkupByID` relies on being able to\n * unmount a component with a `rootNodeID`, then mount a new one in its place,\n */\nvar INITIAL_TAG_COUNT = 1;\nvar NATIVE_TOP_ROOT_ID_SEPARATOR = '{TOP_LEVEL}';\nvar ReactNativeTagHandles = {\n tagsStartAt: INITIAL_TAG_COUNT,\n tagCount: INITIAL_TAG_COUNT,\n\n allocateTag: function(): number {\n // Skip over root IDs as those are reserved for native\n while (this.reactTagIsNativeTopRootID(ReactNativeTagHandles.tagCount)) {\n ReactNativeTagHandles.tagCount++;\n }\n var tag = ReactNativeTagHandles.tagCount;\n ReactNativeTagHandles.tagCount++;\n return tag;\n },\n\n /**\n * This associates the *last* observed *native* mounting between `rootNodeID`\n * and some `tag`. This association doesn't imply that `rootNodeID` is still\n * natively mounted as `tag`. The only reason why we don't clear the\n * association when the `rootNodeID` is unmounted, is that we don't have a\n * convenient time to disassociate them (otherwise we would).\n * `unmountComponent` isn't the correct time because that doesn't imply that\n * the native node has been natively unmounted.\n */\n associateRootNodeIDWithMountedNodeHandle: function(\n rootNodeID: ?string,\n tag: ?number\n ) {\n warning(rootNodeID && tag, 'Root node or tag is null when associating');\n if (rootNodeID && tag) {\n ReactNativeTagHandles.tagToRootNodeID[tag] = rootNodeID;\n ReactNativeTagHandles.rootNodeIDToTag[rootNodeID] = tag;\n }\n },\n\n allocateRootNodeIDForTag: function(tag: number): string {\n invariant(\n this.reactTagIsNativeTopRootID(tag),\n 'Expect a native root tag, instead got ', tag\n );\n return '.r[' + tag + ']' + NATIVE_TOP_ROOT_ID_SEPARATOR;\n },\n\n reactTagIsNativeTopRootID: function(reactTag: number): bool {\n // We reserve all tags that are 1 mod 10 for native root views\n return reactTag % 10 === 1;\n },\n\n getNativeTopRootIDFromNodeID: function(nodeID: ?string): ?string {\n if (!nodeID) {\n return null;\n }\n var index = nodeID.indexOf(NATIVE_TOP_ROOT_ID_SEPARATOR);\n if (index === -1) {\n return null;\n }\n return nodeID.substr(0, index + NATIVE_TOP_ROOT_ID_SEPARATOR.length);\n },\n\n /**\n * Returns the native `nodeHandle` (`tag`) that was most recently *natively*\n * mounted at the `rootNodeID`. Just because a React component has been\n * mounted, that doesn't mean that its native node has been mounted. The\n * native node is mounted when we actually make the call to insert the\n * `nodeHandle` (`tag`) into the native hierarchy.\n *\n * @param {string} rootNodeID Root node ID to find most recently mounted tag\n * for. Again, this doesn't imply that it is still currently mounted.\n * @return {number} Tag ID of native view for most recent mounting of\n * `rootNodeID`.\n */\n mostRecentMountedNodeHandleForRootNodeID: function(\n rootNodeID: string\n ): number {\n return ReactNativeTagHandles.rootNodeIDToTag[rootNodeID];\n },\n\n tagToRootNodeID: ([] : Array<string>),\n\n rootNodeIDToTag: ({} : {[key: string]: number})\n};\n\nmodule.exports = ReactNativeTagHandles;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeTagHandles.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/instantiateReactComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactCompositeComponent=require('ReactCompositeComponent');\nvar ReactEmptyComponent=require('ReactEmptyComponent');\nvar ReactNativeComponent=require('ReactNativeComponent');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\nvar ReactCompositeComponentWrapper=function(){};\nassign(\nReactCompositeComponentWrapper.prototype,\nReactCompositeComponent.Mixin,\n{\n_instantiateReactComponent:instantiateReactComponent});\n\n\n\n\n\n\n\n\n\n\nfunction isInternalComponentType(type){\nreturn (\ntypeof type === 'function' && \ntypeof type.prototype !== 'undefined' && \ntypeof type.prototype.mountComponent === 'function' && \ntypeof type.prototype.receiveComponent === 'function');}\n\n\n\n\n\n\n\n\n\n\n\nfunction instantiateReactComponent(node,parentCompositeType){\nvar instance;\n\nif(node === null || node === false){\nnode = ReactEmptyComponent.emptyElement;}\n\n\nif(typeof node === 'object'){\nvar element=node;\nif(__DEV__){\nwarning(\nelement && (typeof element.type === 'function' || \ntypeof element.type === 'string'),\n'Only functions or strings can be mounted as React components.');}\n\n\n\n\nif(parentCompositeType === element.type && \ntypeof element.type === 'string'){\n\ninstance = ReactNativeComponent.createInternalComponent(element);}else \n\n\nif(isInternalComponentType(element.type)){\n\n\n\ninstance = new element.type(element);}else \n{\ninstance = new ReactCompositeComponentWrapper();}}else \n\nif(typeof node === 'string' || typeof node === 'number'){\ninstance = ReactNativeComponent.createInstanceForText(node);}else \n{\ninvariant(\nfalse,\n'Encountered invalid React node of type %s',\ntypeof node);}\n\n\n\nif(__DEV__){\nwarning(\ntypeof instance.construct === 'function' && \ntypeof instance.mountComponent === 'function' && \ntypeof instance.receiveComponent === 'function' && \ntypeof instance.unmountComponent === 'function',\n'Only React Components can be mounted.');}\n\n\n\n\ninstance.construct(node);\n\n\n\n\ninstance._mountIndex = 0;\ninstance._mountImage = null;\n\nif(__DEV__){\ninstance._isOwnerNecessary = false;\ninstance._warnedAboutRefsInRender = false;}\n\n\n\n\nif(__DEV__){\nif(Object.preventExtensions){\nObject.preventExtensions(instance);}}\n\n\n\nreturn instance;}\n\n\nmodule.exports = instantiateReactComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule instantiateReactComponent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactCompositeComponent = require('ReactCompositeComponent');\nvar ReactEmptyComponent = require('ReactEmptyComponent');\nvar ReactNativeComponent = require('ReactNativeComponent');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function() { };\nassign(\n ReactCompositeComponentWrapper.prototype,\n ReactCompositeComponent.Mixin,\n {\n _instantiateReactComponent: instantiateReactComponent\n }\n);\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return (\n typeof type === 'function' &&\n typeof type.prototype !== 'undefined' &&\n typeof type.prototype.mountComponent === 'function' &&\n typeof type.prototype.receiveComponent === 'function'\n );\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {*} parentCompositeType The composite type that resolved this.\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, parentCompositeType) {\n var instance;\n\n if (node === null || node === false) {\n node = ReactEmptyComponent.emptyElement;\n }\n\n if (typeof node === 'object') {\n var element = node;\n if (__DEV__) {\n warning(\n element && (typeof element.type === 'function' ||\n typeof element.type === 'string'),\n 'Only functions or strings can be mounted as React components.'\n );\n }\n\n // Special case string values\n if (parentCompositeType === element.type &&\n typeof element.type === 'string') {\n // Avoid recursion if the wrapper renders itself.\n instance = ReactNativeComponent.createInternalComponent(element);\n // All native components are currently wrapped in a composite so we're\n // safe to assume that this is what we should instantiate.\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // represenations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n } else {\n instance = new ReactCompositeComponentWrapper();\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactNativeComponent.createInstanceForText(node);\n } else {\n invariant(\n false,\n 'Encountered invalid React node of type %s',\n typeof node\n );\n }\n\n if (__DEV__) {\n warning(\n typeof instance.construct === 'function' &&\n typeof instance.mountComponent === 'function' &&\n typeof instance.receiveComponent === 'function' &&\n typeof instance.unmountComponent === 'function',\n 'Only React Components can be mounted.'\n );\n }\n\n // Sets up the instance. This can probably just move into the constructor now.\n instance.construct(node);\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (__DEV__) {\n instance._isOwnerNecessary = false;\n instance._warnedAboutRefsInRender = false;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (__DEV__) {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\nmodule.exports = instantiateReactComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/instantiateReactComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCompositeComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactComponentEnvironment=require('ReactComponentEnvironment');\nvar ReactContext=require('ReactContext');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactElementValidator=require('ReactElementValidator');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactLifeCycle=require('ReactLifeCycle');\nvar ReactNativeComponent=require('ReactNativeComponent');\nvar ReactPerf=require('ReactPerf');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\nvar ReactReconciler=require('ReactReconciler');\nvar ReactUpdates=require('ReactUpdates');\n\nvar assign=require('Object.assign');\nvar emptyObject=require('emptyObject');\nvar invariant=require('invariant');\nvar shouldUpdateReactComponent=require('shouldUpdateReactComponent');\nvar warning=require('warning');\n\nfunction getDeclarationErrorAddendum(component){\nvar owner=component._currentElement._owner || null;\nif(owner){\nvar name=owner.getName();\nif(name){\nreturn ' Check the render method of `' + name + '`.';}}\n\n\nreturn '';}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar nextMountID=1;\n\n\n\n\nvar ReactCompositeComponentMixin={\n\n\n\n\n\n\n\n\nconstruct:function(element){\nthis._currentElement = element;\nthis._rootNodeID = null;\nthis._instance = null;\n\n\nthis._pendingElement = null;\nthis._pendingStateQueue = null;\nthis._pendingReplaceState = false;\nthis._pendingForceUpdate = false;\n\nthis._renderedComponent = null;\n\nthis._context = null;\nthis._mountOrder = 0;\nthis._isTopLevel = false;\n\n\nthis._pendingCallbacks = null;},\n\n\n\n\n\n\n\n\n\n\n\nmountComponent:function(rootID,transaction,context){\nthis._context = context;\nthis._mountOrder = nextMountID++;\nthis._rootNodeID = rootID;\n\nvar publicProps=this._processProps(this._currentElement.props);\nvar publicContext=this._processContext(this._currentElement._context);\n\nvar Component=ReactNativeComponent.getComponentClassForElement(\nthis._currentElement);\n\n\n\nvar inst=new Component(publicProps,publicContext);\n\nif(__DEV__){\n\n\nwarning(\ninst.render != null,\n'%s(...): No `render` method found on the returned component ' + \n'instance: you may have forgotten to define `render` in your ' + \n'component or you may have accidentally tried to render an element ' + \n'whose type is a function that isn\\'t a React component.',\nComponent.displayName || Component.name || 'Component');}\n\n\n\n\n\ninst.props = publicProps;\ninst.context = publicContext;\ninst.refs = emptyObject;\n\nthis._instance = inst;\n\n\nReactInstanceMap.set(inst,this);\n\nif(__DEV__){\nthis._warnIfContextsDiffer(this._currentElement._context,context);}\n\n\nif(__DEV__){\n\n\n\nwarning(\n!inst.getInitialState || \ninst.getInitialState.isReactClassApproved,\n'getInitialState was defined on %s, a plain JavaScript class. ' + \n'This is only supported for classes created using React.createClass. ' + \n'Did you mean to define a state property instead?',\nthis.getName() || 'a component');\n\nwarning(\n!inst.getDefaultProps || \ninst.getDefaultProps.isReactClassApproved,\n'getDefaultProps was defined on %s, a plain JavaScript class. ' + \n'This is only supported for classes created using React.createClass. ' + \n'Use a static property to define defaultProps instead.',\nthis.getName() || 'a component');\n\nwarning(\n!inst.propTypes,\n'propTypes was defined as an instance property on %s. Use a static ' + \n'property to define propTypes instead.',\nthis.getName() || 'a component');\n\nwarning(\n!inst.contextTypes,\n'contextTypes was defined as an instance property on %s. Use a ' + \n'static property to define contextTypes instead.',\nthis.getName() || 'a component');\n\nwarning(\ntypeof inst.componentShouldUpdate !== 'function',\n'%s has a method called ' + \n'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + \n'The name is phrased as a question because the function is ' + \n'expected to return a value.',\nthis.getName() || 'A component');}\n\n\n\nvar initialState=inst.state;\nif(initialState === undefined){\ninst.state = initialState = null;}\n\ninvariant(\ntypeof initialState === 'object' && !Array.isArray(initialState),\n'%s.state: must be set to an object or null',\nthis.getName() || 'ReactCompositeComponent');\n\n\nthis._pendingStateQueue = null;\nthis._pendingReplaceState = false;\nthis._pendingForceUpdate = false;\n\nvar renderedElement;\n\nvar previouslyMounting=ReactLifeCycle.currentlyMountingInstance;\nReactLifeCycle.currentlyMountingInstance = this;\ntry{\nif(inst.componentWillMount){\ninst.componentWillMount();\n\n\nif(this._pendingStateQueue){\ninst.state = this._processPendingState(inst.props,inst.context);}}\n\n\n\nrenderedElement = this._renderValidatedComponent();}finally \n{\nReactLifeCycle.currentlyMountingInstance = previouslyMounting;}\n\n\nthis._renderedComponent = this._instantiateReactComponent(\nrenderedElement,\nthis._currentElement.type);\n\n\nvar markup=ReactReconciler.mountComponent(\nthis._renderedComponent,\nrootID,\ntransaction,\nthis._processChildContext(context));\n\nif(inst.componentDidMount){\ntransaction.getReactMountReady().enqueue(inst.componentDidMount,inst);}\n\n\nreturn markup;},\n\n\n\n\n\n\n\n\nunmountComponent:function(){\nvar inst=this._instance;\n\nif(inst.componentWillUnmount){\nvar previouslyUnmounting=ReactLifeCycle.currentlyUnmountingInstance;\nReactLifeCycle.currentlyUnmountingInstance = this;\ntry{\ninst.componentWillUnmount();}finally \n{\nReactLifeCycle.currentlyUnmountingInstance = previouslyUnmounting;}}\n\n\n\nReactReconciler.unmountComponent(this._renderedComponent);\nthis._renderedComponent = null;\n\n\nthis._pendingStateQueue = null;\nthis._pendingReplaceState = false;\nthis._pendingForceUpdate = false;\nthis._pendingCallbacks = null;\nthis._pendingElement = null;\n\n\n\nthis._context = null;\nthis._rootNodeID = null;\n\n\n\n\nReactInstanceMap.remove(inst);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_setPropsInternal:function(partialProps,callback){\n\n\nvar element=this._pendingElement || this._currentElement;\nthis._pendingElement = ReactElement.cloneAndReplaceProps(\nelement,\nassign({},element.props,partialProps));\n\nReactUpdates.enqueueUpdate(this,callback);},\n\n\n\n\n\n\n\n\n\n\n_maskContext:function(context){\nvar maskedContext=null;\n\n\nif(typeof this._currentElement.type === 'string'){\nreturn emptyObject;}\n\nvar contextTypes=this._currentElement.type.contextTypes;\nif(!contextTypes){\nreturn emptyObject;}\n\nmaskedContext = {};\nfor(var contextName in contextTypes) {\nmaskedContext[contextName] = context[contextName];}\n\nreturn maskedContext;},\n\n\n\n\n\n\n\n\n\n\n_processContext:function(context){\nvar maskedContext=this._maskContext(context);\nif(__DEV__){\nvar Component=ReactNativeComponent.getComponentClassForElement(\nthis._currentElement);\n\nif(Component.contextTypes){\nthis._checkPropTypes(\nComponent.contextTypes,\nmaskedContext,\nReactPropTypeLocations.context);}}\n\n\n\nreturn maskedContext;},\n\n\n\n\n\n\n\n_processChildContext:function(currentContext){\nvar inst=this._instance;\nvar childContext=inst.getChildContext && inst.getChildContext();\nif(childContext){\ninvariant(\ntypeof inst.constructor.childContextTypes === 'object',\n'%s.getChildContext(): childContextTypes must be defined in order to ' + \n'use getChildContext().',\nthis.getName() || 'ReactCompositeComponent');\n\nif(__DEV__){\nthis._checkPropTypes(\ninst.constructor.childContextTypes,\nchildContext,\nReactPropTypeLocations.childContext);}\n\n\nfor(var name in childContext) {\ninvariant(\nname in inst.constructor.childContextTypes,\n'%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\nthis.getName() || 'ReactCompositeComponent',\nname);}\n\n\nreturn assign({},currentContext,childContext);}\n\nreturn currentContext;},\n\n\n\n\n\n\n\n\n\n\n\n_processProps:function(newProps){\nif(__DEV__){\nvar Component=ReactNativeComponent.getComponentClassForElement(\nthis._currentElement);\n\nif(Component.propTypes){\nthis._checkPropTypes(\nComponent.propTypes,\nnewProps,\nReactPropTypeLocations.prop);}}\n\n\n\nreturn newProps;},\n\n\n\n\n\n\n\n\n\n\n_checkPropTypes:function(propTypes,props,location){\n\n\nvar componentName=this.getName();\nfor(var propName in propTypes) {\nif(propTypes.hasOwnProperty(propName)){\nvar error;\ntry{\n\n\ninvariant(\ntypeof propTypes[propName] === 'function',\n'%s: %s type `%s` is invalid; it must be a function, usually ' + \n'from React.PropTypes.',\ncomponentName || 'React class',\nReactPropTypeLocationNames[location],\npropName);\n\nerror = propTypes[propName](props,propName,componentName,location);}\ncatch(ex) {\nerror = ex;}\n\nif(error instanceof Error){\n\n\n\nvar addendum=getDeclarationErrorAddendum(this);\n\nif(location === ReactPropTypeLocations.prop){\n\nwarning(\nfalse,\n'Failed Composite propType: %s%s',\nerror.message,\naddendum);}else \n\n{\nwarning(\nfalse,\n'Failed Context Types: %s%s',\nerror.message,\naddendum);}}}}},\n\n\n\n\n\n\n\nreceiveComponent:function(nextElement,transaction,nextContext){\nvar prevElement=this._currentElement;\nvar prevContext=this._context;\n\nthis._pendingElement = null;\n\nthis.updateComponent(\ntransaction,\nprevElement,\nnextElement,\nprevContext,\nnextContext);},\n\n\n\n\n\n\n\n\n\n\nperformUpdateIfNecessary:function(transaction){\nif(this._pendingElement != null){\nReactReconciler.receiveComponent(\nthis,\nthis._pendingElement || this._currentElement,\ntransaction,\nthis._context);}\n\n\n\nif(this._pendingStateQueue !== null || this._pendingForceUpdate){\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(\nthis._currentElement);}\n\n\n\nthis.updateComponent(\ntransaction,\nthis._currentElement,\nthis._currentElement,\nthis._context,\nthis._context);}},\n\n\n\n\n\n\n\n\n_warnIfContextsDiffer:function(ownerBasedContext,parentBasedContext){\nownerBasedContext = this._maskContext(ownerBasedContext);\nparentBasedContext = this._maskContext(parentBasedContext);\nvar parentKeys=Object.keys(parentBasedContext).sort();\nvar displayName=this.getName() || 'ReactCompositeComponent';\nfor(var i=0;i < parentKeys.length;i++) {\nvar key=parentKeys[i];\nwarning(\nownerBasedContext[key] === parentBasedContext[key],\n'owner-based and parent-based contexts differ ' + \n'(values: `%s` vs `%s`) for key (%s) while mounting %s ' + \n'(see: http://fb.me/react-context-by-parent)',\nownerBasedContext[key],\nparentBasedContext[key],\nkey,\ndisplayName);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nupdateComponent:function(\ntransaction,\nprevParentElement,\nnextParentElement,\nprevUnmaskedContext,\nnextUnmaskedContext)\n{\nvar inst=this._instance;\n\nvar nextContext=inst.context;\nvar nextProps=inst.props;\n\n\nif(prevParentElement !== nextParentElement){\nnextContext = this._processContext(nextParentElement._context);\nnextProps = this._processProps(nextParentElement.props);\n\nif(__DEV__){\nif(nextUnmaskedContext != null){\nthis._warnIfContextsDiffer(\nnextParentElement._context,\nnextUnmaskedContext);}}\n\n\n\n\n\n\n\n\nif(inst.componentWillReceiveProps){\ninst.componentWillReceiveProps(nextProps,nextContext);}}\n\n\n\nvar nextState=this._processPendingState(nextProps,nextContext);\n\nvar shouldUpdate=\nthis._pendingForceUpdate || \n!inst.shouldComponentUpdate || \ninst.shouldComponentUpdate(nextProps,nextState,nextContext);\n\nif(__DEV__){\nwarning(\ntypeof shouldUpdate !== 'undefined',\n'%s.shouldComponentUpdate(): Returned undefined instead of a ' + \n'boolean value. Make sure to return true or false.',\nthis.getName() || 'ReactCompositeComponent');}\n\n\n\nif(shouldUpdate){\nthis._pendingForceUpdate = false;\n\nthis._performComponentUpdate(\nnextParentElement,\nnextProps,\nnextState,\nnextContext,\ntransaction,\nnextUnmaskedContext);}else \n\n{\n\n\nthis._currentElement = nextParentElement;\nthis._context = nextUnmaskedContext;\ninst.props = nextProps;\ninst.state = nextState;\ninst.context = nextContext;}},\n\n\n\n_processPendingState:function(props,context){\nvar inst=this._instance;\nvar queue=this._pendingStateQueue;\nvar replace=this._pendingReplaceState;\nthis._pendingReplaceState = false;\nthis._pendingStateQueue = null;\n\nif(!queue){\nreturn inst.state;}\n\n\nvar nextState=assign({},replace?queue[0]:inst.state);\nfor(var i=replace?1:0;i < queue.length;i++) {\nvar partial=queue[i];\nassign(\nnextState,\ntypeof partial === 'function'?\npartial.call(inst,nextState,props,context):\npartial);}\n\n\n\nreturn nextState;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_performComponentUpdate:function(\nnextElement,\nnextProps,\nnextState,\nnextContext,\ntransaction,\nunmaskedContext)\n{\nvar inst=this._instance;\n\nvar prevProps=inst.props;\nvar prevState=inst.state;\nvar prevContext=inst.context;\n\nif(inst.componentWillUpdate){\ninst.componentWillUpdate(nextProps,nextState,nextContext);}\n\n\nthis._currentElement = nextElement;\nthis._context = unmaskedContext;\ninst.props = nextProps;\ninst.state = nextState;\ninst.context = nextContext;\n\nthis._updateRenderedComponent(transaction,unmaskedContext);\n\nif(inst.componentDidUpdate){\ntransaction.getReactMountReady().enqueue(\ninst.componentDidUpdate.bind(inst,prevProps,prevState,prevContext),\ninst);}},\n\n\n\n\n\n\n\n\n\n\n_updateRenderedComponent:function(transaction,context){\nvar prevComponentInstance=this._renderedComponent;\nvar prevRenderedElement=prevComponentInstance._currentElement;\nvar nextRenderedElement=this._renderValidatedComponent();\nif(shouldUpdateReactComponent(prevRenderedElement,nextRenderedElement)){\nReactReconciler.receiveComponent(\nprevComponentInstance,\nnextRenderedElement,\ntransaction,\nthis._processChildContext(context));}else \n\n{\n\nvar thisID=this._rootNodeID;\nvar prevComponentID=prevComponentInstance._rootNodeID;\nReactReconciler.unmountComponent(prevComponentInstance);\n\nthis._renderedComponent = this._instantiateReactComponent(\nnextRenderedElement,\nthis._currentElement.type);\n\nvar nextMarkup=ReactReconciler.mountComponent(\nthis._renderedComponent,\nthisID,\ntransaction,\nthis._processChildContext(context));\n\nthis._replaceNodeWithMarkupByID(prevComponentID,nextMarkup);}},\n\n\n\n\n\n\n_replaceNodeWithMarkupByID:function(prevComponentID,nextMarkup){\nReactComponentEnvironment.replaceNodeWithMarkupByID(\nprevComponentID,\nnextMarkup);},\n\n\n\n\n\n\n_renderValidatedComponentWithoutOwnerOrContext:function(){\nvar inst=this._instance;\nvar renderedComponent=inst.render();\nif(__DEV__){\n\nif(typeof renderedComponent === 'undefined' && \ninst.render._isMockFunction){\n\n\nrenderedComponent = null;}}\n\n\n\nreturn renderedComponent;},\n\n\n\n\n\n_renderValidatedComponent:function(){\nvar renderedComponent;\nvar previousContext=ReactContext.current;\nReactContext.current = this._processChildContext(\nthis._currentElement._context);\n\nReactCurrentOwner.current = this;\ntry{\nrenderedComponent = \nthis._renderValidatedComponentWithoutOwnerOrContext();}finally \n{\nReactContext.current = previousContext;\nReactCurrentOwner.current = null;}\n\ninvariant(\n\nrenderedComponent === null || renderedComponent === false || \nReactElement.isValidElement(renderedComponent),\n'%s.render(): A valid ReactComponent must be returned. You may have ' + \n'returned undefined, an array or some other invalid object.',\nthis.getName() || 'ReactCompositeComponent');\n\nreturn renderedComponent;},\n\n\n\n\n\n\n\n\n\n\nattachRef:function(ref,component){\nvar inst=this.getPublicInstance();\nvar refs=inst.refs === emptyObject?inst.refs = {}:inst.refs;\nrefs[ref] = component.getPublicInstance();},\n\n\n\n\n\n\n\n\n\ndetachRef:function(ref){\nvar refs=this.getPublicInstance().refs;\ndelete refs[ref];},\n\n\n\n\n\n\n\n\ngetName:function(){\nvar type=this._currentElement.type;\nvar constructor=this._instance && this._instance.constructor;\nreturn (\ntype.displayName || constructor && constructor.displayName || \ntype.name || constructor && constructor.name || \nnull);},\n\n\n\n\n\n\n\n\n\n\n\ngetPublicInstance:function(){\nreturn this._instance;},\n\n\n\n_instantiateReactComponent:null};\n\n\n\nReactPerf.measureMethods(\nReactCompositeComponentMixin,\n'ReactCompositeComponent',\n{\nmountComponent:'mountComponent',\nupdateComponent:'updateComponent',\n_renderValidatedComponent:'_renderValidatedComponent'});\n\n\n\nvar ReactCompositeComponent={\n\nMixin:ReactCompositeComponentMixin};\n\n\n\nmodule.exports = ReactCompositeComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCompositeComponent\n */\n\n'use strict';\n\nvar ReactComponentEnvironment = require('ReactComponentEnvironment');\nvar ReactContext = require('ReactContext');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactElementValidator = require('ReactElementValidator');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactLifeCycle = require('ReactLifeCycle');\nvar ReactNativeComponent = require('ReactNativeComponent');\nvar ReactPerf = require('ReactPerf');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\nvar ReactReconciler = require('ReactReconciler');\nvar ReactUpdates = require('ReactUpdates');\n\nvar assign = require('Object.assign');\nvar emptyObject = require('emptyObject');\nvar invariant = require('invariant');\nvar shouldUpdateReactComponent = require('shouldUpdateReactComponent');\nvar warning = require('warning');\n\nfunction getDeclarationErrorAddendum(component) {\n var owner = component._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponentMixin = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function(element) {\n this._currentElement = element;\n this._rootNodeID = null;\n this._instance = null;\n\n // See ReactUpdateQueue\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedComponent = null;\n\n this._context = null;\n this._mountOrder = 0;\n this._isTopLevel = false;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function(rootID, transaction, context) {\n this._context = context;\n this._mountOrder = nextMountID++;\n this._rootNodeID = rootID;\n\n var publicProps = this._processProps(this._currentElement.props);\n var publicContext = this._processContext(this._currentElement._context);\n\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n\n // Initialize the public class\n var inst = new Component(publicProps, publicContext);\n\n if (__DEV__) {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n warning(\n inst.render != null,\n '%s(...): No `render` method found on the returned component ' +\n 'instance: you may have forgotten to define `render` in your ' +\n 'component or you may have accidentally tried to render an element ' +\n 'whose type is a function that isn\\'t a React component.',\n Component.displayName || Component.name || 'Component'\n );\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (__DEV__) {\n this._warnIfContextsDiffer(this._currentElement._context, context);\n }\n\n if (__DEV__) {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n warning(\n !inst.getInitialState ||\n inst.getInitialState.isReactClassApproved,\n 'getInitialState was defined on %s, a plain JavaScript class. ' +\n 'This is only supported for classes created using React.createClass. ' +\n 'Did you mean to define a state property instead?',\n this.getName() || 'a component'\n );\n warning(\n !inst.getDefaultProps ||\n inst.getDefaultProps.isReactClassApproved,\n 'getDefaultProps was defined on %s, a plain JavaScript class. ' +\n 'This is only supported for classes created using React.createClass. ' +\n 'Use a static property to define defaultProps instead.',\n this.getName() || 'a component'\n );\n warning(\n !inst.propTypes,\n 'propTypes was defined as an instance property on %s. Use a static ' +\n 'property to define propTypes instead.',\n this.getName() || 'a component'\n );\n warning(\n !inst.contextTypes,\n 'contextTypes was defined as an instance property on %s. Use a ' +\n 'static property to define contextTypes instead.',\n this.getName() || 'a component'\n );\n warning(\n typeof inst.componentShouldUpdate !== 'function',\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n (this.getName() || 'A component')\n );\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.state: must be set to an object or null',\n this.getName() || 'ReactCompositeComponent'\n );\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var renderedElement;\n\n var previouslyMounting = ReactLifeCycle.currentlyMountingInstance;\n ReactLifeCycle.currentlyMountingInstance = this;\n try {\n if (inst.componentWillMount) {\n inst.componentWillMount();\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n renderedElement = this._renderValidatedComponent();\n } finally {\n ReactLifeCycle.currentlyMountingInstance = previouslyMounting;\n }\n\n this._renderedComponent = this._instantiateReactComponent(\n renderedElement,\n this._currentElement.type // The wrapping type\n );\n\n var markup = ReactReconciler.mountComponent(\n this._renderedComponent,\n rootID,\n transaction,\n this._processChildContext(context)\n );\n if (inst.componentDidMount) {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n\n return markup;\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function() {\n var inst = this._instance;\n\n if (inst.componentWillUnmount) {\n var previouslyUnmounting = ReactLifeCycle.currentlyUnmountingInstance;\n ReactLifeCycle.currentlyUnmountingInstance = this;\n try {\n inst.componentWillUnmount();\n } finally {\n ReactLifeCycle.currentlyUnmountingInstance = previouslyUnmounting;\n }\n }\n\n ReactReconciler.unmountComponent(this._renderedComponent);\n this._renderedComponent = null;\n\n // Reset pending fields\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Schedule a partial update to the props. Only used for internal testing.\n *\n * @param {object} partialProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @internal\n */\n _setPropsInternal: function(partialProps, callback) {\n // This is a deoptimized path. We optimize for always having an element.\n // This creates an extra internal element.\n var element = this._pendingElement || this._currentElement;\n this._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n assign({}, element.props, partialProps)\n );\n ReactUpdates.enqueueUpdate(this, callback);\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function(context) {\n var maskedContext = null;\n // This really should be getting the component class for the element,\n // but we know that we're not going to need it for built-ins.\n if (typeof this._currentElement.type === 'string') {\n return emptyObject;\n }\n var contextTypes = this._currentElement.type.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function(context) {\n var maskedContext = this._maskContext(context);\n if (__DEV__) {\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n if (Component.contextTypes) {\n this._checkPropTypes(\n Component.contextTypes,\n maskedContext,\n ReactPropTypeLocations.context\n );\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function(currentContext) {\n var inst = this._instance;\n var childContext = inst.getChildContext && inst.getChildContext();\n if (childContext) {\n invariant(\n typeof inst.constructor.childContextTypes === 'object',\n '%s.getChildContext(): childContextTypes must be defined in order to ' +\n 'use getChildContext().',\n this.getName() || 'ReactCompositeComponent'\n );\n if (__DEV__) {\n this._checkPropTypes(\n inst.constructor.childContextTypes,\n childContext,\n ReactPropTypeLocations.childContext\n );\n }\n for (var name in childContext) {\n invariant(\n name in inst.constructor.childContextTypes,\n '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\n this.getName() || 'ReactCompositeComponent',\n name\n );\n }\n return assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Processes props by setting default values for unspecified props and\n * asserting that the props are valid. Does not mutate its argument; returns\n * a new props object with defaults merged in.\n *\n * @param {object} newProps\n * @return {object}\n * @private\n */\n _processProps: function(newProps) {\n if (__DEV__) {\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n if (Component.propTypes) {\n this._checkPropTypes(\n Component.propTypes,\n newProps,\n ReactPropTypeLocations.prop\n );\n }\n }\n return newProps;\n },\n\n /**\n * Assert that the props are valid\n *\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkPropTypes: function(propTypes, props, location) {\n // TODO: Stop validating prop types here and only use the element\n // validation.\n var componentName = this.getName();\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error;\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(\n typeof propTypes[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually ' +\n 'from React.PropTypes.',\n componentName || 'React class',\n ReactPropTypeLocationNames[location],\n propName\n );\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n if (error instanceof Error) {\n // We may want to extend this logic for similar errors in\n // React.render calls, so I'm abstracting it away into\n // a function to minimize refactoring in the future\n var addendum = getDeclarationErrorAddendum(this);\n\n if (location === ReactPropTypeLocations.prop) {\n // Preface gives us something to blacklist in warning module\n warning(\n false,\n 'Failed Composite propType: %s%s',\n error.message,\n addendum\n );\n } else {\n warning(\n false,\n 'Failed Context Types: %s%s',\n error.message,\n addendum\n );\n }\n }\n }\n }\n },\n\n receiveComponent: function(nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(\n transaction,\n prevElement,\n nextElement,\n prevContext,\n nextContext\n );\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function(transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(\n this,\n this._pendingElement || this._currentElement,\n transaction,\n this._context\n );\n }\n\n if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(\n this._currentElement\n );\n }\n\n this.updateComponent(\n transaction,\n this._currentElement,\n this._currentElement,\n this._context,\n this._context\n );\n }\n },\n\n /**\n * Compare two contexts, warning if they are different\n * TODO: Remove this check when owner-context is removed\n */\n _warnIfContextsDiffer: function(ownerBasedContext, parentBasedContext) {\n ownerBasedContext = this._maskContext(ownerBasedContext);\n parentBasedContext = this._maskContext(parentBasedContext);\n var parentKeys = Object.keys(parentBasedContext).sort();\n var displayName = this.getName() || 'ReactCompositeComponent';\n for (var i = 0; i < parentKeys.length; i++) {\n var key = parentKeys[i];\n warning(\n ownerBasedContext[key] === parentBasedContext[key],\n 'owner-based and parent-based contexts differ ' +\n '(values: `%s` vs `%s`) for key (%s) while mounting %s ' +\n '(see: http://fb.me/react-context-by-parent)',\n ownerBasedContext[key],\n parentBasedContext[key],\n key,\n displayName\n );\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function(\n transaction,\n prevParentElement,\n nextParentElement,\n prevUnmaskedContext,\n nextUnmaskedContext\n ) {\n var inst = this._instance;\n\n var nextContext = inst.context;\n var nextProps = inst.props;\n\n // Distinguish between a props update versus a simple state update\n if (prevParentElement !== nextParentElement) {\n nextContext = this._processContext(nextParentElement._context);\n nextProps = this._processProps(nextParentElement.props);\n\n if (__DEV__) {\n if (nextUnmaskedContext != null) {\n this._warnIfContextsDiffer(\n nextParentElement._context,\n nextUnmaskedContext\n );\n }\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n\n if (inst.componentWillReceiveProps) {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n\n var shouldUpdate =\n this._pendingForceUpdate ||\n !inst.shouldComponentUpdate ||\n inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n\n if (__DEV__) {\n warning(\n typeof shouldUpdate !== 'undefined',\n '%s.shouldComponentUpdate(): Returned undefined instead of a ' +\n 'boolean value. Make sure to return true or false.',\n this.getName() || 'ReactCompositeComponent'\n );\n }\n\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(\n nextParentElement,\n nextProps,\n nextState,\n nextContext,\n transaction,\n nextUnmaskedContext\n );\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function(props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n var nextState = assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n assign(\n nextState,\n typeof partial === 'function' ?\n partial.call(inst, nextState, props, context) :\n partial\n );\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function(\n nextElement,\n nextProps,\n nextState,\n nextContext,\n transaction,\n unmaskedContext\n ) {\n var inst = this._instance;\n\n var prevProps = inst.props;\n var prevState = inst.state;\n var prevContext = inst.context;\n\n if (inst.componentWillUpdate) {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (inst.componentDidUpdate) {\n transaction.getReactMountReady().enqueue(\n inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext),\n inst\n );\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function(transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(\n prevComponentInstance,\n nextRenderedElement,\n transaction,\n this._processChildContext(context)\n );\n } else {\n // These two IDs are actually the same! But nothing should rely on that.\n var thisID = this._rootNodeID;\n var prevComponentID = prevComponentInstance._rootNodeID;\n ReactReconciler.unmountComponent(prevComponentInstance);\n\n this._renderedComponent = this._instantiateReactComponent(\n nextRenderedElement,\n this._currentElement.type\n );\n var nextMarkup = ReactReconciler.mountComponent(\n this._renderedComponent,\n thisID,\n transaction,\n this._processChildContext(context)\n );\n this._replaceNodeWithMarkupByID(prevComponentID, nextMarkup);\n }\n },\n\n /**\n * @protected\n */\n _replaceNodeWithMarkupByID: function(prevComponentID, nextMarkup) {\n ReactComponentEnvironment.replaceNodeWithMarkupByID(\n prevComponentID,\n nextMarkup\n );\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function() {\n var inst = this._instance;\n var renderedComponent = inst.render();\n if (__DEV__) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (typeof renderedComponent === 'undefined' &&\n inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedComponent = null;\n }\n }\n\n return renderedComponent;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function() {\n var renderedComponent;\n var previousContext = ReactContext.current;\n ReactContext.current = this._processChildContext(\n this._currentElement._context\n );\n ReactCurrentOwner.current = this;\n try {\n renderedComponent =\n this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactContext.current = previousContext;\n ReactCurrentOwner.current = null;\n }\n invariant(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedComponent === null || renderedComponent === false ||\n ReactElement.isValidElement(renderedComponent),\n '%s.render(): A valid ReactComponent must be returned. You may have ' +\n 'returned undefined, an array or some other invalid object.',\n this.getName() || 'ReactCompositeComponent'\n );\n return renderedComponent;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function(ref, component) {\n var inst = this.getPublicInstance();\n var refs = inst.refs === emptyObject ? (inst.refs = {}) : inst.refs;\n refs[ref] = component.getPublicInstance();\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function(ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function() {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return (\n type.displayName || (constructor && constructor.displayName) ||\n type.name || (constructor && constructor.name) ||\n null\n );\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by React.render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function() {\n return this._instance;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nReactPerf.measureMethods(\n ReactCompositeComponentMixin,\n 'ReactCompositeComponent',\n {\n mountComponent: 'mountComponent',\n updateComponent: 'updateComponent',\n _renderValidatedComponent: '_renderValidatedComponent'\n }\n);\n\nvar ReactCompositeComponent = {\n\n Mixin: ReactCompositeComponentMixin\n\n};\n\nmodule.exports = ReactCompositeComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCompositeComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactComponentEnvironment.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar injected=false;\n\nvar ReactComponentEnvironment={\n\n\n\n\n\n\nunmountIDFromEnvironment:null,\n\n\n\n\n\nreplaceNodeWithMarkupByID:null,\n\n\n\n\n\nprocessChildrenUpdates:null,\n\ninjection:{\ninjectEnvironment:function(environment){\ninvariant(\n!injected,\n'ReactCompositeComponent: injectEnvironment() can only be called once.');\n\nReactComponentEnvironment.unmountIDFromEnvironment = \nenvironment.unmountIDFromEnvironment;\nReactComponentEnvironment.replaceNodeWithMarkupByID = \nenvironment.replaceNodeWithMarkupByID;\nReactComponentEnvironment.processChildrenUpdates = \nenvironment.processChildrenUpdates;\ninjected = true;}}};\n\n\n\n\n\nmodule.exports = ReactComponentEnvironment;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponentEnvironment\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable environment dependent cleanup hook. (server vs.\n * browser etc). Example: A browser system caches DOM nodes based on component\n * ID and must remove that cache entry when this instance is unmounted.\n */\n unmountIDFromEnvironment: null,\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkupByID: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function(environment) {\n invariant(\n !injected,\n 'ReactCompositeComponent: injectEnvironment() can only be called once.'\n );\n ReactComponentEnvironment.unmountIDFromEnvironment =\n environment.unmountIDFromEnvironment;\n ReactComponentEnvironment.replaceNodeWithMarkupByID =\n environment.replaceNodeWithMarkupByID;\n ReactComponentEnvironment.processChildrenUpdates =\n environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactComponentEnvironment.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/shouldUpdateReactComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\nfunction shouldUpdateReactComponent(prevElement,nextElement){\nif(prevElement != null && nextElement != null){\nvar prevType=typeof prevElement;\nvar nextType=typeof nextElement;\nif(prevType === 'string' || prevType === 'number'){\nreturn nextType === 'string' || nextType === 'number';}else \n{\nif(nextType === 'object' && \nprevElement.type === nextElement.type && \nprevElement.key === nextElement.key){\nvar ownersMatch=prevElement._owner === nextElement._owner;\nvar prevName=null;\nvar nextName=null;\nvar nextDisplayName=null;\nif(__DEV__){\nif(!ownersMatch){\nif(prevElement._owner != null && \nprevElement._owner.getPublicInstance() != null && \nprevElement._owner.getPublicInstance().constructor != null){\nprevName = \nprevElement._owner.getPublicInstance().constructor.displayName;}\n\nif(nextElement._owner != null && \nnextElement._owner.getPublicInstance() != null && \nnextElement._owner.getPublicInstance().constructor != null){\nnextName = \nnextElement._owner.getPublicInstance().constructor.displayName;}\n\nif(nextElement.type != null && \nnextElement.type.displayName != null){\nnextDisplayName = nextElement.type.displayName;}\n\nif(nextElement.type != null && typeof nextElement.type === 'string'){\nnextDisplayName = nextElement.type;}\n\nif(typeof nextElement.type !== 'string' || \nnextElement.type === 'input' || \nnextElement.type === 'textarea'){\nif(prevElement._owner != null && \nprevElement._owner._isOwnerNecessary === false || \nnextElement._owner != null && \nnextElement._owner._isOwnerNecessary === false){\nif(prevElement._owner != null){\nprevElement._owner._isOwnerNecessary = true;}\n\nif(nextElement._owner != null){\nnextElement._owner._isOwnerNecessary = true;}\n\nwarning(\nfalse,\n'<%s /> is being rendered by both %s and %s using the same ' + \n'key (%s) in the same place. Currently, this means that ' + \n'they don\\'t preserve state. This behavior should be very ' + \n'rare so we\\'re considering deprecating it. Please contact ' + \n'the React team and explain your use case so that we can ' + \n'take that into consideration.',\nnextDisplayName || 'Unknown Component',\nprevName || '[Unknown]',\nnextName || '[Unknown]',\nprevElement.key);}}}}\n\n\n\n\n\nreturn ownersMatch;}}}\n\n\n\nreturn false;}\n\n\nmodule.exports = shouldUpdateReactComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shouldUpdateReactComponent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar warning = require('warning');\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n if (prevElement != null && nextElement != null) {\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return (nextType === 'string' || nextType === 'number');\n } else {\n if (nextType === 'object' &&\n prevElement.type === nextElement.type &&\n prevElement.key === nextElement.key) {\n var ownersMatch = prevElement._owner === nextElement._owner;\n var prevName = null;\n var nextName = null;\n var nextDisplayName = null;\n if (__DEV__) {\n if (!ownersMatch) {\n if (prevElement._owner != null &&\n prevElement._owner.getPublicInstance() != null &&\n prevElement._owner.getPublicInstance().constructor != null) {\n prevName =\n prevElement._owner.getPublicInstance().constructor.displayName;\n }\n if (nextElement._owner != null &&\n nextElement._owner.getPublicInstance() != null &&\n nextElement._owner.getPublicInstance().constructor != null) {\n nextName =\n nextElement._owner.getPublicInstance().constructor.displayName;\n }\n if (nextElement.type != null &&\n nextElement.type.displayName != null) {\n nextDisplayName = nextElement.type.displayName;\n }\n if (nextElement.type != null && typeof nextElement.type === 'string') {\n nextDisplayName = nextElement.type;\n }\n if (typeof nextElement.type !== 'string' ||\n nextElement.type === 'input' ||\n nextElement.type === 'textarea') {\n if ((prevElement._owner != null &&\n prevElement._owner._isOwnerNecessary === false) ||\n (nextElement._owner != null &&\n nextElement._owner._isOwnerNecessary === false)) {\n if (prevElement._owner != null) {\n prevElement._owner._isOwnerNecessary = true;\n }\n if (nextElement._owner != null) {\n nextElement._owner._isOwnerNecessary = true;\n }\n warning(\n false,\n '<%s /> is being rendered by both %s and %s using the same ' +\n 'key (%s) in the same place. Currently, this means that ' +\n 'they don\\'t preserve state. This behavior should be very ' +\n 'rare so we\\'re considering deprecating it. Please contact ' +\n 'the React team and explain your use case so that we can ' +\n 'take that into consideration.',\n nextDisplayName || 'Unknown Component',\n prevName || '[Unknown]',\n nextName || '[Unknown]',\n prevElement.key\n );\n }\n }\n }\n }\n return ownersMatch;\n }\n }\n }\n return false;\n}\n\nmodule.exports = shouldUpdateReactComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/shouldUpdateReactComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactEmptyComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactInstanceMap=require('ReactInstanceMap');\n\nvar invariant=require('invariant');\n\nvar component;\n\n\nvar nullComponentIDsRegistry={};\n\nvar ReactEmptyComponentInjection={\ninjectEmptyComponent:function(emptyComponent){\ncomponent = ReactElement.createFactory(emptyComponent);}};\n\n\n\nvar ReactEmptyComponentType=function(){};\nReactEmptyComponentType.prototype.componentDidMount = function(){\nvar internalInstance=ReactInstanceMap.get(this);\n\n\n\n\nif(!internalInstance){\nreturn;}\n\nregisterNullComponentID(internalInstance._rootNodeID);};\n\nReactEmptyComponentType.prototype.componentWillUnmount = function(){\nvar internalInstance=ReactInstanceMap.get(this);\n\nif(!internalInstance){\nreturn;}\n\nderegisterNullComponentID(internalInstance._rootNodeID);};\n\nReactEmptyComponentType.prototype.render = function(){\ninvariant(\ncomponent,\n'Trying to return null from a render, but no null placeholder component ' + \n'was injected.');\n\nreturn component();};\n\n\nvar emptyElement=ReactElement.createElement(ReactEmptyComponentType);\n\n\n\n\n\nfunction registerNullComponentID(id){\nnullComponentIDsRegistry[id] = true;}\n\n\n\n\n\n\nfunction deregisterNullComponentID(id){\ndelete nullComponentIDsRegistry[id];}\n\n\n\n\n\n\nfunction isNullComponentID(id){\nreturn !!nullComponentIDsRegistry[id];}\n\n\nvar ReactEmptyComponent={\nemptyElement:emptyElement,\ninjection:ReactEmptyComponentInjection,\nisNullComponentID:isNullComponentID};\n\n\nmodule.exports = ReactEmptyComponent;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEmptyComponent\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactInstanceMap = require('ReactInstanceMap');\n\nvar invariant = require('invariant');\n\nvar component;\n// This registry keeps track of the React IDs of the components that rendered to\n// `null` (in reality a placeholder such as `noscript`)\nvar nullComponentIDsRegistry = {};\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponent: function(emptyComponent) {\n component = ReactElement.createFactory(emptyComponent);\n }\n};\n\nvar ReactEmptyComponentType = function() {};\nReactEmptyComponentType.prototype.componentDidMount = function() {\n var internalInstance = ReactInstanceMap.get(this);\n // TODO: Make sure we run these methods in the correct order, we shouldn't\n // need this check. We're going to assume if we're here it means we ran\n // componentWillUnmount already so there is no internal instance (it gets\n // removed as part of the unmounting process).\n if (!internalInstance) {\n return;\n }\n registerNullComponentID(internalInstance._rootNodeID);\n};\nReactEmptyComponentType.prototype.componentWillUnmount = function() {\n var internalInstance = ReactInstanceMap.get(this);\n // TODO: Get rid of this check. See TODO in componentDidMount.\n if (!internalInstance) {\n return;\n }\n deregisterNullComponentID(internalInstance._rootNodeID);\n};\nReactEmptyComponentType.prototype.render = function() {\n invariant(\n component,\n 'Trying to return null from a render, but no null placeholder component ' +\n 'was injected.'\n );\n return component();\n};\n\nvar emptyElement = ReactElement.createElement(ReactEmptyComponentType);\n\n/**\n * Mark the component as having rendered to null.\n * @param {string} id Component's `_rootNodeID`.\n */\nfunction registerNullComponentID(id) {\n nullComponentIDsRegistry[id] = true;\n}\n\n/**\n * Unmark the component as having rendered to null: it renders to something now.\n * @param {string} id Component's `_rootNodeID`.\n */\nfunction deregisterNullComponentID(id) {\n delete nullComponentIDsRegistry[id];\n}\n\n/**\n * @param {string} id Component's `_rootNodeID`.\n * @return {boolean} True if the component is rendered to null.\n */\nfunction isNullComponentID(id) {\n return !!nullComponentIDsRegistry[id];\n}\n\nvar ReactEmptyComponent = {\n emptyElement: emptyElement,\n injection: ReactEmptyComponentInjection,\n isNullComponentID: isNullComponentID\n};\n\nmodule.exports = ReactEmptyComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactEmptyComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Device/RCTDeviceEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\n\nvar RCTDeviceEventEmitter=new EventEmitter();\n\nmodule.exports = RCTDeviceEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTDeviceEventEmitter\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\n\nvar RCTDeviceEventEmitter = new EventEmitter();\n\nmodule.exports = RCTDeviceEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Device/RCTDeviceEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EmitterSubscription=require('EmitterSubscription');\nvar ErrorUtils=require('ErrorUtils');\nvar EventSubscriptionVendor=require('EventSubscriptionVendor');\nvar emptyFunction=require('emptyFunction');\nvar invariant=require('invariant');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventEmitter=(function(){\n\n\n\nfunction EventEmitter(){_classCallCheck(this,EventEmitter);\nthis._subscriber = new EventSubscriptionVendor();}_createClass(EventEmitter,[{key:'addListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction addListener(\neventType,listener,context){\nreturn this._subscriber.addSubscription(\neventType,\nnew EmitterSubscription(this._subscriber,listener,context));}},{key:'once',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction once(eventType,listener,context){\nvar emitter=this;\nreturn this.addListener(eventType,function(){\nemitter.removeCurrentListener();\nlistener.apply(context,arguments);});}},{key:'removeAllListeners',value:\n\n\n\n\n\n\n\n\n\n\nfunction removeAllListeners(eventType){\nthis._subscriber.removeAllSubscriptions(eventType);}},{key:'removeCurrentListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction removeCurrentListener(){\ninvariant(\n!!this._currentSubscription,\n'Not in an emitting cycle; there is no current subscription');\n\nthis._subscriber.removeSubscription(this._currentSubscription);}},{key:'listeners',value:\n\n\n\n\n\n\n\n\n\nfunction listeners(eventType){\nvar subscriptions=this._subscriber.getSubscriptionsForType(eventType);\nreturn subscriptions?\nsubscriptions.filter(emptyFunction.thatReturnsTrue).map(\nfunction(subscription){\nreturn subscription.listener;}):\n\n[];}},{key:'emit',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction emit(eventType){\nvar subscriptions=this._subscriber.getSubscriptionsForType(eventType);\nif(subscriptions){\nvar keys=Object.keys(subscriptions);\nfor(var ii=0;ii < keys.length;ii++) {\nvar key=keys[ii];\nvar subscription=subscriptions[key];\n\n\nif(subscription){\nthis._currentSubscription = subscription;\n\nErrorUtils.applyWithGuard(\nsubscription.listener,\nsubscription.context,\nArray.prototype.slice.call(arguments,1),\nnull,\n'EventEmitter:' + eventType);}}\n\n\n\nthis._currentSubscription = null;}}}]);return EventEmitter;})();\n\n\n\n\nmodule.exports = EventEmitter;","sourceCode":"/**\n * @generated SignedSource<<494e66dea72a3e90b763a5ec50b1e0ca>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventEmitter\n * @typechecks\n */\n\nvar EmitterSubscription = require('EmitterSubscription');\nvar ErrorUtils = require('ErrorUtils');\nvar EventSubscriptionVendor = require('EventSubscriptionVendor');\nvar emptyFunction = require('emptyFunction');\nvar invariant = require('invariant');\n\n/**\n * @class EventEmitter\n * @description\n * An EventEmitter is responsible for managing a set of listeners and publishing\n * events to them when it is told that such events happened. In addition to the\n * data for the given event it also sends a event control object which allows\n * the listeners/handlers to prevent the default behavior of the given event.\n *\n * The emitter is designed to be generic enough to support all the different\n * contexts in which one might want to emit events. It is a simple multicast\n * mechanism on top of which extra functionality can be composed. For example, a\n * more advanced emitter may use an EventHolder and EventFactory.\n */\nclass EventEmitter {\n /**\n * @constructor\n */\n constructor() {\n this._subscriber = new EventSubscriptionVendor();\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function.\n *\n * TODO: Annotate the listener arg's type. This is tricky because listeners\n * can be invoked with varargs.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n addListener(\n eventType: String, listener, context: ?Object): EmitterSubscription {\n return this._subscriber.addSubscription(\n eventType,\n new EmitterSubscription(this._subscriber, listener, context));\n }\n\n /**\n * Similar to addListener, except that the listener is removed after it is\n * invoked once.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke only once when the\n * specified event is emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n once(eventType: String, listener, context: ?Object): EmitterSubscription {\n var emitter = this;\n return this.addListener(eventType, function() {\n emitter.removeCurrentListener();\n listener.apply(context, arguments);\n });\n }\n\n /**\n * Removes all of the registered listeners, including those registered as\n * listener maps.\n *\n * @param {?string} eventType - Optional name of the event whose registered\n * listeners to remove\n */\n removeAllListeners(eventType: ?String) {\n this._subscriber.removeAllSubscriptions(eventType);\n }\n\n /**\n * Provides an API that can be called during an eventing cycle to remove the\n * last listener that was invoked. This allows a developer to provide an event\n * object that can remove the listener (or listener map) during the\n * invocation.\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n *\n * @example\n * var subscription = emitter.addListenerMap({\n * someEvent: function(data, event) {\n * console.log(data);\n * emitter.removeCurrentListener();\n * }\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n * emitter.emit('someEvent', 'def'); // does not log anything\n */\n removeCurrentListener() {\n invariant(\n !!this._currentSubscription,\n 'Not in an emitting cycle; there is no current subscription'\n );\n this._subscriber.removeSubscription(this._currentSubscription);\n }\n\n /**\n * Returns an array of listeners that are currently registered for the given\n * event.\n *\n * @param {string} eventType - Name of the event to query\n * @returns {array}\n */\n listeners(eventType: String): Array /* TODO: Array<EventSubscription> */ {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n return subscriptions\n ? subscriptions.filter(emptyFunction.thatReturnsTrue).map(\n function(subscription) {\n return subscription.listener;\n })\n : [];\n }\n\n /**\n * Emits an event of the given type with the given data. All handlers of that\n * particular type will be notified.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.addListener('someEvent', function(message) {\n * console.log(message);\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n */\n emit(eventType: String) {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n if (subscriptions) {\n var keys = Object.keys(subscriptions);\n for (var ii = 0; ii < keys.length; ii++) {\n var key = keys[ii];\n var subscription = subscriptions[key];\n\n // The subscription may have been removed during this event loop.\n if (subscription) {\n this._currentSubscription = subscription;\n\n ErrorUtils.applyWithGuard(\n subscription.listener,\n subscription.context,\n Array.prototype.slice.call(arguments, 1),\n null,\n 'EventEmitter:' + eventType\n );\n }\n }\n this._currentSubscription = null;\n }\n }\n}\n\nmodule.exports = EventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EmitterSubscription.js":{"data":{"code":"'use strict';var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventSubscription=require('EventSubscription');var \n\n\n\n\nEmitterSubscription=(function(_EventSubscription){_inherits(EmitterSubscription,_EventSubscription);\n\n\n\n\n\n\n\n\n\nfunction EmitterSubscription(subscriber,listener,context){_classCallCheck(this,EmitterSubscription);\n_get(Object.getPrototypeOf(EmitterSubscription.prototype),'constructor',this).call(this,subscriber);\nthis.listener = listener;\nthis.context = context;}return EmitterSubscription;})(EventSubscription);\n\n\n\nmodule.exports = EmitterSubscription;","sourceCode":"/**\n * @generated SignedSource<<d17b6e5d9b7118fb0ed9169f579e5b8a>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EmitterSubscription\n * @typechecks\n */\n'use strict';\n\nvar EventSubscription = require('EventSubscription');\n\n/**\n * EmitterSubscription represents a subscription with listener and context data.\n */\nclass EmitterSubscription extends EventSubscription {\n\n /**\n * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\n * this subscription\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n constructor(subscriber: EventSubscriptionVendor, listener, context: ?Object) {\n super(subscriber);\n this.listener = listener;\n this.context = context;\n }\n}\n\nmodule.exports = EmitterSubscription;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EmitterSubscription.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscription.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventSubscription=(function(){\n\n\n\n\n\nfunction EventSubscription(subscriber){_classCallCheck(this,EventSubscription);\nthis.subscriber = subscriber;}_createClass(EventSubscription,[{key:'remove',value:\n\n\n\n\n\nfunction remove(){\nthis.subscriber.removeSubscription(this);}}]);return EventSubscription;})();\n\n\n\nmodule.exports = EventSubscription;","sourceCode":"/**\n * @generated SignedSource<<92108a17b1f3eee4b7e3dd7d484aa17a>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventSubscription\n * @typechecks\n */\n'use strict';\n\n/**\n * EventSubscription represents a subscription to a particular event. It can\n * remove its own subscription.\n */\nclass EventSubscription {\n\n /**\n * @param {EventSubscriptionVendor} subscriber the subscriber that controls\n * this subscription.\n */\n constructor(subscriber: EventSubscriptionVendor) {\n this.subscriber = subscriber;\n }\n\n /**\n * Removes this subscription from the subscriber that controls it.\n */\n remove() {\n this.subscriber.removeSubscription(this);\n }\n}\n\nmodule.exports = EventSubscription;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscription.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscriptionVendor.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');var \n\n\n\n\n\nEventSubscriptionVendor=(function(){\n\nfunction EventSubscriptionVendor(){_classCallCheck(this,EventSubscriptionVendor);\nthis._subscriptionsForType = {};\nthis._currentSubscription = null;}_createClass(EventSubscriptionVendor,[{key:'addSubscription',value:\n\n\n\n\n\n\n\n\nfunction addSubscription(\neventType,subscription){\ninvariant(\nsubscription.subscriber === this,\n'The subscriber of the subscription is incorrectly set.');\nif(!this._subscriptionsForType[eventType]){\nthis._subscriptionsForType[eventType] = [];}\n\nvar key=this._subscriptionsForType[eventType].length;\nthis._subscriptionsForType[eventType].push(subscription);\nsubscription.eventType = eventType;\nsubscription.key = key;\nreturn subscription;}},{key:'removeAllSubscriptions',value:\n\n\n\n\n\n\n\n\nfunction removeAllSubscriptions(eventType){\nif(eventType === undefined){\nthis._subscriptionsForType = {};}else \n{\ndelete this._subscriptionsForType[eventType];}}},{key:'removeSubscription',value:\n\n\n\n\n\n\n\n\n\nfunction removeSubscription(subscription){\nvar eventType=subscription.eventType;\nvar key=subscription.key;\n\nvar subscriptionsForType=this._subscriptionsForType[eventType];\nif(subscriptionsForType){\ndelete subscriptionsForType[key];}}},{key:'getSubscriptionsForType',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getSubscriptionsForType(eventType){\nreturn this._subscriptionsForType[eventType];}}]);return EventSubscriptionVendor;})();\n\n\n\nmodule.exports = EventSubscriptionVendor;","sourceCode":"/**\n * @generated SignedSource<<24d5cc1cdd24704296686faf89dd36cf>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventSubscriptionVendor\n * @typechecks\n */\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * EventSubscriptionVendor stores a set of EventSubscriptions that are\n * subscribed to a particular event type.\n */\nclass EventSubscriptionVendor {\n\n constructor() {\n this._subscriptionsForType = {};\n this._currentSubscription = null;\n }\n\n /**\n * Adds a subscription keyed by an event type.\n *\n * @param {string} eventType\n * @param {EventSubscription} subscription\n */\n addSubscription(\n eventType: String, subscription: EventSubscription): EventSubscription {\n invariant(\n subscription.subscriber === this,\n 'The subscriber of the subscription is incorrectly set.');\n if (!this._subscriptionsForType[eventType]) {\n this._subscriptionsForType[eventType] = [];\n }\n var key = this._subscriptionsForType[eventType].length;\n this._subscriptionsForType[eventType].push(subscription);\n subscription.eventType = eventType;\n subscription.key = key;\n return subscription;\n }\n\n /**\n * Removes a bulk set of the subscriptions.\n *\n * @param {?string} eventType - Optional name of the event type whose\n * registered supscriptions to remove, if null remove all subscriptions.\n */\n removeAllSubscriptions(eventType: ?String) {\n if (eventType === undefined) {\n this._subscriptionsForType = {};\n } else {\n delete this._subscriptionsForType[eventType];\n }\n }\n\n /**\n * Removes a specific subscription. Instead of calling this function, call\n * `subscription.remove()` directly.\n *\n * @param {object} subscription\n */\n removeSubscription(subscription: Object) {\n var eventType = subscription.eventType;\n var key = subscription.key;\n\n var subscriptionsForType = this._subscriptionsForType[eventType];\n if (subscriptionsForType) {\n delete subscriptionsForType[key];\n }\n }\n\n /**\n * Returns the array of subscriptions that are currently registered for the\n * given event type.\n *\n * Note: This array can be potentially sparse as subscriptions are deleted\n * from it when they are removed.\n *\n * TODO: This returns a nullable array. wat?\n *\n * @param {string} eventType\n * @returns {?array}\n */\n getSubscriptionsForType(eventType: String): ?Array {\n return this._subscriptionsForType[eventType];\n }\n}\n\nmodule.exports = EventSubscriptionVendor;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscriptionVendor.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/PerformanceLogger.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar performanceNow=require('performanceNow');\n\nvar timespans={};\n\n\n\n\n\nvar PerformanceLogger={\naddTimespan:function(key,lengthInMs,description){\nif(timespans[key]){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to add a timespan that already exists');}\n\n\nreturn;}\n\n\ntimespans[key] = {\ndescription:description,\ntotalTime:lengthInMs};},\n\n\n\nstartTimespan:function(key,description){\nif(timespans[key]){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to start a timespan that already exists');}\n\n\nreturn;}\n\n\ntimespans[key] = {\ndescription:description,\nstartTime:performanceNow()};},\n\n\n\nstopTimespan:function(key){\nif(!timespans[key] || !timespans[key].startTime){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to end a timespan that has not started');}\n\n\nreturn;}\n\n\ntimespans[key].endTime = performanceNow();\ntimespans[key].totalTime = \ntimespans[key].endTime - timespans[key].startTime;},\n\n\nclearTimespans:function(){\ntimespans = {};},\n\n\ngetTimespans:function(){\nreturn timespans;},\n\n\nlogTimespans:function(){\nfor(var key in timespans) {\nconsole.log(key + ': ' + timespans[key].totalTime + 'ms');}},\n\n\n\naddTimespans:function(newTimespans,labels){\nfor(var i=0,l=newTimespans.length;i < l;i += 2) {\nvar label=labels[i / 2];\nPerformanceLogger.addTimespan(\nlabel,\nnewTimespans[i + 1] - newTimespans[i],\nlabel);}}};\n\n\n\n\n\nmodule.exports = PerformanceLogger;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PerformanceLogger\n */\n'use strict';\n\n\nvar performanceNow = require('performanceNow');\n\nvar timespans = {};\n\n/**\n * This is meant to collect and log performance data in production, which means\n * it needs to have minimal overhead.\n */\nvar PerformanceLogger = {\n addTimespan(key, lengthInMs, description) {\n if (timespans[key]) {\n if (__DEV__) {\n console.log(\n 'PerformanceLogger: Attempting to add a timespan that already exists'\n );\n }\n return;\n }\n\n timespans[key] = {\n description: description,\n totalTime: lengthInMs,\n };\n },\n\n startTimespan(key, description) {\n if (timespans[key]) {\n if (__DEV__) {\n console.log(\n 'PerformanceLogger: Attempting to start a timespan that already exists'\n );\n }\n return;\n }\n\n timespans[key] = {\n description: description,\n startTime: performanceNow(),\n };\n },\n\n stopTimespan(key) {\n if (!timespans[key] || !timespans[key].startTime) {\n if (__DEV__) {\n console.log(\n 'PerformanceLogger: Attempting to end a timespan that has not started'\n );\n }\n return;\n }\n\n timespans[key].endTime = performanceNow();\n timespans[key].totalTime =\n timespans[key].endTime - timespans[key].startTime;\n },\n\n clearTimespans() {\n timespans = {};\n },\n\n getTimespans() {\n return timespans;\n },\n\n logTimespans() {\n for (var key in timespans) {\n console.log(key + ': ' + timespans[key].totalTime + 'ms');\n }\n },\n\n addTimespans(newTimespans, labels) {\n for (var i = 0, l = newTimespans.length; i < l; i += 2) {\n var label = labels[i / 2];\n PerformanceLogger.addTimespan(\n label,\n (newTimespans[i + 1] - newTimespans[i]),\n label\n );\n }\n }\n};\n\nmodule.exports = PerformanceLogger;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/PerformanceLogger.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTExceptionsManager=require('NativeModules').ExceptionsManager;\n\nvar loadSourceMap=require('loadSourceMap');\nvar parseErrorStack=require('parseErrorStack');\nvar stringifySafe=require('stringifySafe');\n\nvar sourceMapPromise;\n\n\n\n\n\n\n\nfunction reportException(e,isFatal,stack){\nif(RCTExceptionsManager){\nif(!stack){\nstack = parseErrorStack(e);}\n\nif(isFatal){\nRCTExceptionsManager.reportFatalException(e.message,stack);}else \n{\nRCTExceptionsManager.reportSoftException(e.message,stack);}\n\nif(__DEV__){\n(sourceMapPromise = sourceMapPromise || loadSourceMap()).\nthen(function(map){\nvar prettyStack=parseErrorStack(e,map);\nRCTExceptionsManager.updateExceptionMessage(e.message,prettyStack);}).\n\ncatch(function(error){\n\n\nconsole.warn('Unable to load source map: ' + error.message);});}}}\n\n\n\n\n\nfunction handleException(e,isFatal){\nvar stack=parseErrorStack(e);\nvar msg=\n'Error: ' + e.message + \n'\\n stack: \\n' + stackToString(stack) + \n'\\n URL: ' + e.sourceURL + \n'\\n line: ' + e.line + \n'\\n message: ' + e.message;\nif(console.errorOriginal){\nconsole.errorOriginal(msg);}else \n{\nconsole.error(msg);}\n\nreportException(e,isFatal,stack);}\n\n\n\n\n\n\nfunction installConsoleErrorReporter(){\nif(console.reportException){\nreturn;}\n\nconsole.reportException = reportException;\nconsole.errorOriginal = console.error.bind(console);\nconsole.error = function reactConsoleError(){\nconsole.errorOriginal.apply(null,arguments);\nif(!console.reportErrorsAsExceptions){\nreturn;}\n\nvar str=Array.prototype.map.call(arguments,stringifySafe).join(', ');\nvar error=new Error('console.error: ' + str);\nerror.framesToPop = 1;\nreportException(error,false);};\n\nif(console.reportErrorsAsExceptions === undefined){\nconsole.reportErrorsAsExceptions = true;}}\n\n\n\nfunction stackToString(stack){\nvar maxLength=Math.max.apply(null,stack.map(function(frame){return frame.methodName.length;}));\nreturn stack.map(function(frame){return stackFrameToString(frame,maxLength);}).join('\\n');}\n\n\nfunction stackFrameToString(stackFrame,maxLength){\nvar fileNameParts=stackFrame.file.split('/');\nvar fileName=fileNameParts[fileNameParts.length - 1];\n\nif(fileName.length > 18){\nfileName = fileName.substr(0,17) + '\\u2026';}\n\n\nvar spaces=fillSpaces(maxLength - stackFrame.methodName.length);\nreturn ' ' + stackFrame.methodName + spaces + ' ' + fileName + ':' + stackFrame.lineNumber;}\n\n\nfunction fillSpaces(n){\nreturn new Array(n + 1).join(' ');}\n\n\nmodule.exports = {handleException:handleException,installConsoleErrorReporter:installConsoleErrorReporter};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExceptionsManager\n * @flow\n */\n'use strict';\n\nvar RCTExceptionsManager = require('NativeModules').ExceptionsManager;\n\nvar loadSourceMap = require('loadSourceMap');\nvar parseErrorStack = require('parseErrorStack');\nvar stringifySafe = require('stringifySafe');\n\nvar sourceMapPromise;\n\ntype Exception = {\n sourceURL: string;\n line: number;\n message: string;\n}\n\nfunction reportException(e: Exception, isFatal: bool, stack?: any) {\n if (RCTExceptionsManager) {\n if (!stack) {\n stack = parseErrorStack(e);\n }\n if (isFatal) {\n RCTExceptionsManager.reportFatalException(e.message, stack);\n } else {\n RCTExceptionsManager.reportSoftException(e.message, stack);\n }\n if (__DEV__) {\n (sourceMapPromise = sourceMapPromise || loadSourceMap())\n .then(map => {\n var prettyStack = parseErrorStack(e, map);\n RCTExceptionsManager.updateExceptionMessage(e.message, prettyStack);\n })\n .catch(error => {\n // This can happen in a variety of normal situations, such as\n // Network module not being available, or when running locally\n console.warn('Unable to load source map: ' + error.message);\n });\n }\n }\n}\n\nfunction handleException(e: Exception, isFatal: boolean) {\n var stack = parseErrorStack(e);\n var msg =\n 'Error: ' + e.message +\n '\\n stack: \\n' + stackToString(stack) +\n '\\n URL: ' + e.sourceURL +\n '\\n line: ' + e.line +\n '\\n message: ' + e.message;\n if (console.errorOriginal) {\n console.errorOriginal(msg);\n } else {\n console.error(msg);\n }\n reportException(e, isFatal, stack);\n}\n\n/**\n * Shows a redbox with stacktrace for all console.error messages. Disable by\n * setting `console.reportErrorsAsExceptions = false;` in your app.\n */\nfunction installConsoleErrorReporter() {\n if (console.reportException) {\n return; // already installed\n }\n console.reportException = reportException;\n console.errorOriginal = console.error.bind(console);\n console.error = function reactConsoleError() {\n console.errorOriginal.apply(null, arguments);\n if (!console.reportErrorsAsExceptions) {\n return;\n }\n var str = Array.prototype.map.call(arguments, stringifySafe).join(', ');\n var error: any = new Error('console.error: ' + str);\n error.framesToPop = 1;\n reportException(error, /* isFatal */ false);\n };\n if (console.reportErrorsAsExceptions === undefined) {\n console.reportErrorsAsExceptions = true; // Individual apps can disable this\n }\n}\n\nfunction stackToString(stack) {\n var maxLength = Math.max.apply(null, stack.map(frame => frame.methodName.length));\n return stack.map(frame => stackFrameToString(frame, maxLength)).join('\\n');\n}\n\nfunction stackFrameToString(stackFrame, maxLength) {\n var fileNameParts = stackFrame.file.split('/');\n var fileName = fileNameParts[fileNameParts.length - 1];\n\n if (fileName.length > 18) {\n fileName = fileName.substr(0, 17) + '\\u2026' /* ... */;\n }\n\n var spaces = fillSpaces(maxLength - stackFrame.methodName.length);\n return ' ' + stackFrame.methodName + spaces + ' ' + fileName + ':' + stackFrame.lineNumber;\n}\n\nfunction fillSpaces(n) {\n return new Array(n + 1).join(' ');\n}\n\nmodule.exports = { handleException, installConsoleErrorReporter };\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/loadSourceMap.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Promise=require('Promise');\nvar NativeModules=require('NativeModules');\nvar SourceMapConsumer=require('SourceMap').SourceMapConsumer;\nvar SourceMapURL=require('./source-map-url');\n\nvar RCTSourceCode=NativeModules.SourceCode;\nvar RCTNetworking=NativeModules.Networking;\n\nfunction loadSourceMap(){\nreturn fetchSourceMap().\nthen(function(map){return new SourceMapConsumer(map);});}\n\n\nfunction fetchSourceMap(){\nif(global.RAW_SOURCE_MAP){\nreturn Promise.resolve(global.RAW_SOURCE_MAP);}\n\n\nif(!RCTSourceCode){\nreturn Promise.reject(new Error('RCTSourceCode module is not available'));}\n\n\nif(!RCTNetworking){\n\nreturn Promise.reject(new Error('RCTNetworking module is not available'));}\n\n\nreturn new Promise(RCTSourceCode.getScriptText).\nthen(extractSourceMapURL).\nthen(function(url){\nif(url === null){\nreturn Promise.reject(new Error('No source map URL found. May be running from bundled file.'));}\n\nreturn Promise.resolve(url);}).\n\nthen(fetch).\nthen(function(response){return response.text();});}\n\n\nfunction extractSourceMapURL(_ref){var url=_ref.url;var text=_ref.text;var fullSourceMappingURL=_ref.fullSourceMappingURL;\nif(fullSourceMappingURL){\nreturn fullSourceMappingURL;}\n\nvar mapURL=SourceMapURL.getFrom(text);\nif(!mapURL){\nreturn null;}\n\nvar baseURL=url.match(/(.+:\\/\\/.*?)\\//)[1];\nreturn baseURL + mapURL;}\n\n\nmodule.exports = loadSourceMap;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule loadSourceMap\n * @flow\n */\n\n'use strict';\n\nvar Promise = require('Promise');\nvar NativeModules = require('NativeModules');\nvar SourceMapConsumer = require('SourceMap').SourceMapConsumer;\nvar SourceMapURL = require('./source-map-url');\n\nvar RCTSourceCode = NativeModules.SourceCode;\nvar RCTNetworking = NativeModules.Networking;\n\nfunction loadSourceMap(): Promise {\n return fetchSourceMap()\n .then(map => new SourceMapConsumer(map));\n}\n\nfunction fetchSourceMap(): Promise {\n if (global.RAW_SOURCE_MAP) {\n return Promise.resolve(global.RAW_SOURCE_MAP);\n }\n\n if (!RCTSourceCode) {\n return Promise.reject(new Error('RCTSourceCode module is not available'));\n }\n\n if (!RCTNetworking) {\n // Used internally by fetch\n return Promise.reject(new Error('RCTNetworking module is not available'));\n }\n\n return new Promise(RCTSourceCode.getScriptText)\n .then(extractSourceMapURL)\n .then((url) => {\n if (url === null) {\n return Promise.reject(new Error('No source map URL found. May be running from bundled file.'));\n }\n return Promise.resolve(url);\n })\n .then(fetch)\n .then(response => response.text())\n}\n\nfunction extractSourceMapURL({url, text, fullSourceMappingURL}): ?string {\n if (fullSourceMappingURL) {\n return fullSourceMappingURL;\n }\n var mapURL = SourceMapURL.getFrom(text);\n if (!mapURL) {\n return null;\n }\n var baseURL = url.match(/(.+:\\/\\/.*?)\\//)[1];\n return baseURL + mapURL;\n}\n\nmodule.exports = loadSourceMap;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/loadSourceMap.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Promise.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nglobal.setImmediate = require('setImmediate');\nvar Promise=require('promise/setimmediate/es6-extensions');\nrequire('promise/setimmediate/done');\n\n\n\n\nPromise.prototype.finally = function(onSettled){\nreturn this.then(onSettled,onSettled);};\n\n\n\nmodule.exports = Promise;","sourceCode":"/**\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule Promise\n *\n * This module wraps and augments the minimally ES6-compliant Promise\n * implementation provided by the promise npm package.\n */\n\n'use strict';\n\nglobal.setImmediate = require('setImmediate');\nvar Promise = require('promise/setimmediate/es6-extensions');\nrequire('promise/setimmediate/done');\n\n/**\n * Handle either fulfillment or rejection with the same callback.\n */\nPromise.prototype.finally = function(onSettled) {\n return this.then(onSettled, onSettled);\n};\n\n\nmodule.exports = Promise;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Promise.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/setImmediate.js":{"data":{"code":"module.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports = global.setImmediate || \nrequire('ImmediateImplementation').setImmediate;","sourceCode":"/**\n * @generated SignedSource<<9715e66cd259f4d1a1c3d39c97cd0b92>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule setImmediate\n */\n\nmodule.exports = global.setImmediate ||\n require('ImmediateImplementation').setImmediate;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/setImmediate.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/immediate/setImmediate.js":{"data":{"code":"/**\n * @generated SignedSource<<57d0446bbd1186485d372efe6b323dca>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright (c) 2012 Barnesandnoble.com, llc, Donavon West, and Domenic\n * Denicola\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @preserve-header\n * @providesModule ImmediateImplementation\n */\n\n(function(global,undefined){\n\"use strict\";\n\nvar nextHandle=1;\nvar tasksByHandle={};\nvar queueHead={};\nvar queueTail=queueHead;\nvar currentlyRunningATask=false;\nvar doc=global.document;\nvar setImmediate;\n\nfunction addFromSetImmediateArguments(args){\nvar handler=args[0];\nargs = Array.prototype.slice.call(args,1);\ntasksByHandle[nextHandle] = function(){\nhandler.apply(undefined,args);};\n\nqueueTail = queueTail.next = {handle:nextHandle++};\nreturn queueTail.handle;}\n\n\nfunction flushQueue(){\nvar next,task;\nwhile(!currentlyRunningATask && (next = queueHead.next)) {\nqueueHead = next;\nif(task = tasksByHandle[next.handle]){\ncurrentlyRunningATask = true;\ntry{\ntask();\ncurrentlyRunningATask = false;}finally \n{\nclearImmediate(next.handle);\nif(currentlyRunningATask){\ncurrentlyRunningATask = false;\n\n\n\n\n\n\nif(queueHead.next){\nsetImmediate(flushQueue);}}}}}}\n\n\n\n\n\n\n\nfunction clearImmediate(handle){\ndelete tasksByHandle[handle];}\n\n\nfunction canUsePostMessage(){\n\n\nif(global.postMessage && !global.importScripts){\nvar postMessageIsAsynchronous=true;\n\nvar onMessage=function(){\npostMessageIsAsynchronous = false;\nif(global.removeEventListener){\nglobal.removeEventListener(\"message\",onMessage,false);}else \n{\nglobal.detachEvent(\"onmessage\",onMessage);}};\n\n\n\nif(global.addEventListener){\nglobal.addEventListener(\"message\",onMessage,false);}else \nif(global.attachEvent){\nglobal.attachEvent(\"onmessage\",onMessage);}else \n{\nreturn false;}\n\n\nglobal.postMessage(\"\",\"*\");\nreturn postMessageIsAsynchronous;}}\n\n\n\nfunction installPostMessageImplementation(){\n\n\nvar messagePrefix=\"setImmediate$\" + Math.random() + \"$\";\nvar onGlobalMessage=function(event){\nif(event.source === global && \ntypeof event.data === \"string\" && \nevent.data.indexOf(messagePrefix) === 0){\nflushQueue();}};\n\n\n\nif(global.addEventListener){\nglobal.addEventListener(\"message\",onGlobalMessage,false);}else \n{\nglobal.attachEvent(\"onmessage\",onGlobalMessage);}\n\n\nsetImmediate = function(){\nvar handle=addFromSetImmediateArguments(arguments);\nglobal.postMessage(messagePrefix + handle,\"*\");\nreturn handle;};}\n\n\n\nfunction installMessageChannelImplementation(){\nvar channel=new MessageChannel();\nchannel.port1.onmessage = flushQueue;\nsetImmediate = function(){\nvar handle=addFromSetImmediateArguments(arguments);\nchannel.port2.postMessage(handle);\nreturn handle;};}\n\n\n\nfunction installReadyStateChangeImplementation(){\nvar html=doc.documentElement;\nsetImmediate = function(){\nvar handle=addFromSetImmediateArguments(arguments);\n\n\nvar script=doc.createElement(\"script\");\nscript.onreadystatechange = function(){\nscript.onreadystatechange = null;\nhtml.removeChild(script);\nscript = null;\nflushQueue();};\n\nhtml.appendChild(script);\nreturn handle;};}\n\n\n\nfunction installSetTimeoutImplementation(){\nsetImmediate = function(){\nsetTimeout(flushQueue,0);\nreturn addFromSetImmediateArguments(arguments);};}\n\n\n\nif(canUsePostMessage()){\n\ninstallPostMessageImplementation();}else \n\nif(global.MessageChannel){\n\ninstallMessageChannelImplementation();}else \n\nif(doc && \"onreadystatechange\" in doc.createElement(\"script\")){\n\ninstallReadyStateChangeImplementation();}else \n\n{\n\ninstallSetTimeoutImplementation();}\n\n\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;})(\nFunction(\"return this\")());","sourceCode":"/**\n * @generated SignedSource<<57d0446bbd1186485d372efe6b323dca>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright (c) 2012 Barnesandnoble.com, llc, Donavon West, and Domenic\n * Denicola\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @preserve-header\n * @providesModule ImmediateImplementation\n */\n\n(function(global, undefined) {\n \"use strict\";\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var queueHead = {};\n var queueTail = queueHead;\n var currentlyRunningATask = false;\n var doc = global.document;\n var setImmediate;\n\n function addFromSetImmediateArguments(args) {\n var handler = args[0];\n args = Array.prototype.slice.call(args, 1);\n tasksByHandle[nextHandle] = function() {\n handler.apply(undefined, args);\n };\n queueTail = (queueTail.next = { handle: nextHandle++ });\n return queueTail.handle;\n }\n\n function flushQueue() {\n var next, task;\n while (!currentlyRunningATask && (next = queueHead.next)) {\n queueHead = next; // If this task fails, don't retry it.\n if ((task = tasksByHandle[next.handle])) {\n currentlyRunningATask = true;\n try {\n task();\n currentlyRunningATask = false;\n } finally {\n clearImmediate(next.handle);\n if (currentlyRunningATask) {\n currentlyRunningATask = false;\n // The call to task() must have thrown an\n // exception if we reach this point, so, just in\n // case there are tasks remaining to be executed,\n // we schedule another flushQueue in a later tick\n // of the event loop, and let the exception\n // propagate uncaught.\n if (queueHead.next) {\n setImmediate(flushQueue);\n }\n }\n }\n }\n }\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n\n var onMessage = function() {\n postMessageIsAsynchronous = false;\n if (global.removeEventListener) {\n global.removeEventListener(\"message\", onMessage, false);\n } else {\n global.detachEvent(\"onmessage\", onMessage);\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onMessage, false);\n } else if (global.attachEvent) {\n global.attachEvent(\"onmessage\", onMessage);\n } else {\n return false;\n }\n\n global.postMessage(\"\", \"*\");\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n flushQueue();\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n global.postMessage(messagePrefix + handle, \"*\");\n return handle;\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flushQueue;\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n channel.port2.postMessage(handle);\n return handle;\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n flushQueue();\n };\n html.appendChild(script);\n return handle;\n };\n }\n\n function installSetTimeoutImplementation() {\n setImmediate = function() {\n setTimeout(flushQueue, 0);\n return addFromSetImmediateArguments(arguments);\n };\n }\n\n if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6-8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n exports.setImmediate = setImmediate;\n exports.clearImmediate = clearImmediate;\n}(/* jslint evil: true */ Function(\"return this\")()));\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/immediate/setImmediate.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/es6-extensions.js":{"data":{"code":"'use strict';\n\n\n\nvar Promise=require('./core.js');\n\nmodule.exports = Promise;\n\n\n\nvar TRUE=valuePromise(true);\nvar FALSE=valuePromise(false);\nvar NULL=valuePromise(null);\nvar UNDEFINED=valuePromise(undefined);\nvar ZERO=valuePromise(0);\nvar EMPTYSTRING=valuePromise('');\n\nfunction valuePromise(value){\nvar p=new Promise(Promise._99);\np._37 = 1;\np._12 = value;\nreturn p;}\n\nPromise.resolve = function(value){\nif(value instanceof Promise)return value;\n\nif(value === null)return NULL;\nif(value === undefined)return UNDEFINED;\nif(value === true)return TRUE;\nif(value === false)return FALSE;\nif(value === 0)return ZERO;\nif(value === '')return EMPTYSTRING;\n\nif(typeof value === 'object' || typeof value === 'function'){\ntry{\nvar then=value.then;\nif(typeof then === 'function'){\nreturn new Promise(then.bind(value));}}\n\ncatch(ex) {\nreturn new Promise(function(resolve,reject){\nreject(ex);});}}\n\n\n\nreturn valuePromise(value);};\n\n\nPromise.all = function(arr){\nvar args=Array.prototype.slice.call(arr);\n\nreturn new Promise(function(resolve,reject){\nif(args.length === 0)return resolve([]);\nvar remaining=args.length;\nfunction res(i,val){\nif(val && (typeof val === 'object' || typeof val === 'function')){\nif(val instanceof Promise && val.then === Promise.prototype.then){\nwhile(val._37 === 3) {\nval = val._12;}\n\nif(val._37 === 1)return res(i,val._12);\nif(val._37 === 2)reject(val._12);\nval.then(function(val){\nres(i,val);},\nreject);\nreturn;}else \n{\nvar then=val.then;\nif(typeof then === 'function'){\nvar p=new Promise(then.bind(val));\np.then(function(val){\nres(i,val);},\nreject);\nreturn;}}}\n\n\n\nargs[i] = val;\nif(--remaining === 0){\nresolve(args);}}\n\n\nfor(var i=0;i < args.length;i++) {\nres(i,args[i]);}});};\n\n\n\n\nPromise.reject = function(value){\nreturn new Promise(function(resolve,reject){\nreject(value);});};\n\n\n\nPromise.race = function(values){\nreturn new Promise(function(resolve,reject){\nvalues.forEach(function(value){\nPromise.resolve(value).then(resolve,reject);});});};\n\n\n\n\n\n\nPromise.prototype['catch'] = function(onRejected){\nreturn this.then(null,onRejected);};","sourceCode":"'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._99);\n p._37 = 1;\n p._12 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._37 === 3) {\n val = val._12;\n }\n if (val._37 === 1) return res(i, val._12);\n if (val._37 === 2) reject(val._12);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/es6-extensions.js"},"mtime":1438678256000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/core.js":{"data":{"code":"'use strict';\n\n\n\nfunction noop(){}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar LAST_ERROR=null;\nvar IS_ERROR={};\nfunction getThen(obj){\ntry{\nreturn obj.then;}\ncatch(ex) {\nLAST_ERROR = ex;\nreturn IS_ERROR;}}\n\n\n\nfunction tryCallOne(fn,a){\ntry{\nreturn fn(a);}\ncatch(ex) {\nLAST_ERROR = ex;\nreturn IS_ERROR;}}\n\n\nfunction tryCallTwo(fn,a,b){\ntry{\nfn(a,b);}\ncatch(ex) {\nLAST_ERROR = ex;\nreturn IS_ERROR;}}\n\n\n\nmodule.exports = Promise;\n\nfunction Promise(fn){\nif(typeof this !== 'object'){\nthrow new TypeError('Promises must be constructed via new');}\n\nif(typeof fn !== 'function'){\nthrow new TypeError('not a function');}\n\nthis._37 = 0;\nthis._12 = null;\nthis._59 = [];\nif(fn === noop)return;\ndoResolve(fn,this);}\n\nPromise._99 = noop;\n\nPromise.prototype.then = function(onFulfilled,onRejected){\nif(this.constructor !== Promise){\nreturn safeThen(this,onFulfilled,onRejected);}\n\nvar res=new Promise(noop);\nhandle(this,new Handler(onFulfilled,onRejected,res));\nreturn res;};\n\n\nfunction safeThen(self,onFulfilled,onRejected){\nreturn new self.constructor(function(resolve,reject){\nvar res=new Promise(noop);\nres.then(resolve,reject);\nhandle(self,new Handler(onFulfilled,onRejected,res));});}\n\n;\nfunction handle(self,deferred){\nwhile(self._37 === 3) {\nself = self._12;}\n\nif(self._37 === 0){\nself._59.push(deferred);\nreturn;}\n\nsetImmediate(function(){\nvar cb=self._37 === 1?deferred.onFulfilled:deferred.onRejected;\nif(cb === null){\nif(self._37 === 1){\nresolve(deferred.promise,self._12);}else \n{\nreject(deferred.promise,self._12);}\n\nreturn;}\n\nvar ret=tryCallOne(cb,self._12);\nif(ret === IS_ERROR){\nreject(deferred.promise,LAST_ERROR);}else \n{\nresolve(deferred.promise,ret);}});}\n\n\n\nfunction resolve(self,newValue){\n\nif(newValue === self){\nreturn reject(\nself,\nnew TypeError('A promise cannot be resolved with itself.'));}\n\n\nif(\nnewValue && (\ntypeof newValue === 'object' || typeof newValue === 'function'))\n{\nvar then=getThen(newValue);\nif(then === IS_ERROR){\nreturn reject(self,LAST_ERROR);}\n\nif(\nthen === self.then && \nnewValue instanceof Promise)\n{\nself._37 = 3;\nself._12 = newValue;\nfinale(self);\nreturn;}else \nif(typeof then === 'function'){\ndoResolve(then.bind(newValue),self);\nreturn;}}\n\n\nself._37 = 1;\nself._12 = newValue;\nfinale(self);}\n\n\nfunction reject(self,newValue){\nself._37 = 2;\nself._12 = newValue;\nfinale(self);}\n\nfunction finale(self){\nfor(var i=0;i < self._59.length;i++) {\nhandle(self,self._59[i]);}\n\nself._59 = null;}\n\n\nfunction Handler(onFulfilled,onRejected,promise){\nthis.onFulfilled = typeof onFulfilled === 'function'?onFulfilled:null;\nthis.onRejected = typeof onRejected === 'function'?onRejected:null;\nthis.promise = promise;}\n\n\n\n\n\n\n\n\nfunction doResolve(fn,promise){\nvar done=false;\nvar res=tryCallTwo(fn,function(value){\nif(done)return;\ndone = true;\nresolve(promise,value);},\nfunction(reason){\nif(done)return;\ndone = true;\nreject(promise,reason);});\n\nif(!done && res === IS_ERROR){\ndone = true;\nreject(promise,LAST_ERROR);}}","sourceCode":"'use strict';\n\n\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('not a function');\n }\n this._37 = 0;\n this._12 = null;\n this._59 = [];\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._99 = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n};\nfunction handle(self, deferred) {\n while (self._37 === 3) {\n self = self._12;\n }\n if (self._37 === 0) {\n self._59.push(deferred);\n return;\n }\n setImmediate(function() {\n var cb = self._37 === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._37 === 1) {\n resolve(deferred.promise, self._12);\n } else {\n reject(deferred.promise, self._12);\n }\n return;\n }\n var ret = tryCallOne(cb, self._12);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._37 = 3;\n self._12 = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._37 = 1;\n self._12 = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._37 = 2;\n self._12 = newValue;\n finale(self);\n}\nfunction finale(self) {\n for (var i = 0; i < self._59.length; i++) {\n handle(self, self._59[i]);\n }\n self._59 = null;\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n })\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/core.js"},"mtime":1438678256000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/done.js":{"data":{"code":"'use strict';\n\nvar Promise=require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function(onFulfilled,onRejected){\nvar self=arguments.length?this.then.apply(this,arguments):this;\nself.then(null,function(err){\nsetTimeout(function(){\nthrow err;},\n0);});};","sourceCode":"'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function (onFulfilled, onRejected) {\n var self = arguments.length ? this.then.apply(this, arguments) : this;\n self.then(null, function (err) {\n setTimeout(function () {\n throw err;\n }, 0);\n });\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/done.js"},"mtime":1438678256000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/SourceMap.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nscope={};\nwrapper.call(scope);\n\nmodule.exports = scope.sourceMap;\n\nfunction wrapper(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction define(moduleName,deps,payload){\nif(typeof moduleName != \"string\"){\nthrow new TypeError('Expected string, got: ' + moduleName);}\n\n\nif(arguments.length == 2){\npayload = deps;}\n\n\nif(moduleName in define.modules){\nthrow new Error(\"Module already defined: \" + moduleName);}\n\ndefine.modules[moduleName] = payload;}\n;\n\n\n\n\ndefine.modules = {};\n\n\n\n\n\n\n\n\n\n\nfunction Domain(){\nthis.modules = {};\nthis._currentModule = null;}\n\n\n(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nDomain.prototype.require = function(deps,callback){\nif(Array.isArray(deps)){\nvar params=deps.map(function(dep){\nreturn this.lookup(dep);},\nthis);\nif(callback){\ncallback.apply(null,params);}\n\nreturn undefined;}else \n\n{\nreturn this.lookup(deps);}};\n\n\n\nfunction normalize(path){\nvar bits=path.split('/');\nvar i=1;\nwhile(i < bits.length) {\nif(bits[i] === '..'){\nbits.splice(i - 1,1);}else \nif(bits[i] === '.'){\nbits.splice(i,1);}else \n{\ni++;}}\n\n\nreturn bits.join('/');}\n\n\nfunction join(a,b){\na = a.trim();\nb = b.trim();\nif(/^\\//.test(b)){\nreturn b;}else \n{\nreturn a.replace(/\\/*$/,'/') + b;}}\n\n\n\nfunction dirname(path){\nvar bits=path.split('/');\nbits.pop();\nreturn bits.join('/');}\n\n\n\n\n\n\n\n\nDomain.prototype.lookup = function(moduleName){\nif(/^\\./.test(moduleName)){\nmoduleName = normalize(join(dirname(this._currentModule),moduleName));}\n\n\nif(moduleName in this.modules){\nvar module=this.modules[moduleName];\nreturn module;}\n\n\nif(!(moduleName in define.modules)){\nthrow new Error(\"Module not defined: \" + moduleName);}\n\n\nvar module=define.modules[moduleName];\n\nif(typeof module == \"function\"){\nvar exports={};\nvar previousModule=this._currentModule;\nthis._currentModule = moduleName;\nmodule(this.require.bind(this),exports,{id:moduleName,uri:\"\"});\nthis._currentModule = previousModule;\nmodule = exports;}\n\n\n\nthis.modules[moduleName] = module;\n\nreturn module;};})();\n\n\n\n\ndefine.Domain = Domain;\ndefine.globalDomain = new Domain();\nvar require=define.globalDomain.require.bind(define.globalDomain);\n\n\n\n\n\n\ndefine('source-map/source-map-generator',['require','exports','module','source-map/base64-vlq','source-map/util','source-map/array-set'],function(require,exports,module){\n\nvar base64VLQ=require('./base64-vlq');\nvar util=require('./util');\nvar ArraySet=require('./array-set').ArraySet;\n\n\n\n\n\n\n\n\n\nfunction SourceMapGenerator(aArgs){\nthis._file = util.getArg(aArgs,'file');\nthis._sourceRoot = util.getArg(aArgs,'sourceRoot',null);\nthis._sources = new ArraySet();\nthis._names = new ArraySet();\nthis._mappings = [];\nthis._sourcesContents = null;}\n\n\nSourceMapGenerator.prototype._version = 3;\n\n\n\n\n\n\nSourceMapGenerator.fromSourceMap = \nfunction SourceMapGenerator_fromSourceMap(aSourceMapConsumer){\nvar sourceRoot=aSourceMapConsumer.sourceRoot;\nvar generator=new SourceMapGenerator({\nfile:aSourceMapConsumer.file,\nsourceRoot:sourceRoot});\n\naSourceMapConsumer.eachMapping(function(mapping){\nvar newMapping={\ngenerated:{\nline:mapping.generatedLine,\ncolumn:mapping.generatedColumn}};\n\n\n\nif(mapping.source){\nnewMapping.source = mapping.source;\nif(sourceRoot){\nnewMapping.source = util.relative(sourceRoot,newMapping.source);}\n\n\nnewMapping.original = {\nline:mapping.originalLine,\ncolumn:mapping.originalColumn};\n\n\nif(mapping.name){\nnewMapping.name = mapping.name;}}\n\n\n\ngenerator.addMapping(newMapping);});\n\naSourceMapConsumer.sources.forEach(function(sourceFile){\nvar content=aSourceMapConsumer.sourceContentFor(sourceFile);\nif(content){\ngenerator.setSourceContent(sourceFile,content);}});\n\n\nreturn generator;};\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapGenerator.prototype.addMapping = \nfunction SourceMapGenerator_addMapping(aArgs){\nvar generated=util.getArg(aArgs,'generated');\nvar original=util.getArg(aArgs,'original',null);\nvar source=util.getArg(aArgs,'source',null);\nvar name=util.getArg(aArgs,'name',null);\n\nthis._validateMapping(generated,original,source,name);\n\nif(source && !this._sources.has(source)){\nthis._sources.add(source);}\n\n\nif(name && !this._names.has(name)){\nthis._names.add(name);}\n\n\nthis._mappings.push({\ngeneratedLine:generated.line,\ngeneratedColumn:generated.column,\noriginalLine:original != null && original.line,\noriginalColumn:original != null && original.column,\nsource:source,\nname:name});};\n\n\n\n\n\n\nSourceMapGenerator.prototype.setSourceContent = \nfunction SourceMapGenerator_setSourceContent(aSourceFile,aSourceContent){\nvar source=aSourceFile;\nif(this._sourceRoot){\nsource = util.relative(this._sourceRoot,source);}\n\n\nif(aSourceContent !== null){\n\n\nif(!this._sourcesContents){\nthis._sourcesContents = {};}\n\nthis._sourcesContents[util.toSetString(source)] = aSourceContent;}else \n{\n\n\ndelete this._sourcesContents[util.toSetString(source)];\nif(Object.keys(this._sourcesContents).length === 0){\nthis._sourcesContents = null;}}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapGenerator.prototype.applySourceMap = \nfunction SourceMapGenerator_applySourceMap(aSourceMapConsumer,aSourceFile){\n\nif(!aSourceFile){\naSourceFile = aSourceMapConsumer.file;}\n\nvar sourceRoot=this._sourceRoot;\n\nif(sourceRoot){\naSourceFile = util.relative(sourceRoot,aSourceFile);}\n\n\n\nvar newSources=new ArraySet();\nvar newNames=new ArraySet();\n\n\nthis._mappings.forEach(function(mapping){\nif(mapping.source === aSourceFile && mapping.originalLine){\n\nvar original=aSourceMapConsumer.originalPositionFor({\nline:mapping.originalLine,\ncolumn:mapping.originalColumn});\n\nif(original.source !== null){\n\nif(sourceRoot){\nmapping.source = util.relative(sourceRoot,original.source);}else \n{\nmapping.source = original.source;}\n\nmapping.originalLine = original.line;\nmapping.originalColumn = original.column;\nif(original.name !== null && mapping.name !== null){\n\n\nmapping.name = original.name;}}}\n\n\n\n\nvar source=mapping.source;\nif(source && !newSources.has(source)){\nnewSources.add(source);}\n\n\nvar name=mapping.name;\nif(name && !newNames.has(name)){\nnewNames.add(name);}},\n\n\nthis);\nthis._sources = newSources;\nthis._names = newNames;\n\n\naSourceMapConsumer.sources.forEach(function(sourceFile){\nvar content=aSourceMapConsumer.sourceContentFor(sourceFile);\nif(content){\nif(sourceRoot){\nsourceFile = util.relative(sourceRoot,sourceFile);}\n\nthis.setSourceContent(sourceFile,content);}},\n\nthis);};\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapGenerator.prototype._validateMapping = \nfunction SourceMapGenerator_validateMapping(aGenerated,aOriginal,aSource,\naName){\nif(aGenerated && 'line' in aGenerated && 'column' in aGenerated && \naGenerated.line > 0 && aGenerated.column >= 0 && \n!aOriginal && !aSource && !aName){\n\nreturn;}else \n\nif(aGenerated && 'line' in aGenerated && 'column' in aGenerated && \naOriginal && 'line' in aOriginal && 'column' in aOriginal && \naGenerated.line > 0 && aGenerated.column >= 0 && \naOriginal.line > 0 && aOriginal.column >= 0 && \naSource){\n\nreturn;}else \n\n{\nthrow new Error('Invalid mapping: ' + JSON.stringify({\ngenerated:aGenerated,\nsource:aSource,\norginal:aOriginal,\nname:aName}));}};\n\n\n\n\n\n\n\n\nSourceMapGenerator.prototype._serializeMappings = \nfunction SourceMapGenerator_serializeMappings(){\nvar previousGeneratedColumn=0;\nvar previousGeneratedLine=1;\nvar previousOriginalColumn=0;\nvar previousOriginalLine=0;\nvar previousName=0;\nvar previousSource=0;\nvar result='';\nvar mapping;\n\n\n\n\n\n\nthis._mappings.sort(util.compareByGeneratedPositions);\n\nfor(var i=0,len=this._mappings.length;i < len;i++) {\nmapping = this._mappings[i];\n\nif(mapping.generatedLine !== previousGeneratedLine){\npreviousGeneratedColumn = 0;\nwhile(mapping.generatedLine !== previousGeneratedLine) {\nresult += ';';\npreviousGeneratedLine++;}}else \n\n\n{\nif(i > 0){\nif(!util.compareByGeneratedPositions(mapping,this._mappings[i - 1])){\ncontinue;}\n\nresult += ',';}}\n\n\n\nresult += base64VLQ.encode(mapping.generatedColumn - \npreviousGeneratedColumn);\npreviousGeneratedColumn = mapping.generatedColumn;\n\nif(mapping.source){\nresult += base64VLQ.encode(this._sources.indexOf(mapping.source) - \npreviousSource);\npreviousSource = this._sources.indexOf(mapping.source);\n\n\nresult += base64VLQ.encode(mapping.originalLine - 1 - \npreviousOriginalLine);\npreviousOriginalLine = mapping.originalLine - 1;\n\nresult += base64VLQ.encode(mapping.originalColumn - \npreviousOriginalColumn);\npreviousOriginalColumn = mapping.originalColumn;\n\nif(mapping.name){\nresult += base64VLQ.encode(this._names.indexOf(mapping.name) - \npreviousName);\npreviousName = this._names.indexOf(mapping.name);}}}\n\n\n\n\nreturn result;};\n\n\nSourceMapGenerator.prototype._generateSourcesContent = \nfunction SourceMapGenerator_generateSourcesContent(aSources,aSourceRoot){\nreturn aSources.map(function(source){\nif(!this._sourcesContents){\nreturn null;}\n\nif(aSourceRoot){\nsource = util.relative(aSourceRoot,source);}\n\nvar key=util.toSetString(source);\nreturn Object.prototype.hasOwnProperty.call(this._sourcesContents,\nkey)?\nthis._sourcesContents[key]:\nnull;},\nthis);};\n\n\n\n\n\nSourceMapGenerator.prototype.toJSON = \nfunction SourceMapGenerator_toJSON(){\nvar map={\nversion:this._version,\nfile:this._file,\nsources:this._sources.toArray(),\nnames:this._names.toArray(),\nmappings:this._serializeMappings()};\n\nif(this._sourceRoot){\nmap.sourceRoot = this._sourceRoot;}\n\nif(this._sourcesContents){\nmap.sourcesContent = this._generateSourcesContent(map.sources,map.sourceRoot);}\n\n\nreturn map;};\n\n\n\n\n\nSourceMapGenerator.prototype.toString = \nfunction SourceMapGenerator_toString(){\nreturn JSON.stringify(this);};\n\n\nexports.SourceMapGenerator = SourceMapGenerator;});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ndefine('source-map/base64-vlq',['require','exports','module','source-map/base64'],function(require,exports,module){\n\nvar base64=require('./base64');\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar VLQ_BASE_SHIFT=5;\n\n\nvar VLQ_BASE=1 << VLQ_BASE_SHIFT;\n\n\nvar VLQ_BASE_MASK=VLQ_BASE - 1;\n\n\nvar VLQ_CONTINUATION_BIT=VLQ_BASE;\n\n\n\n\n\n\n\nfunction toVLQSigned(aValue){\nreturn aValue < 0?\n(-aValue << 1) + 1:\n(aValue << 1) + 0;}\n\n\n\n\n\n\n\n\nfunction fromVLQSigned(aValue){\nvar isNegative=(aValue & 1) === 1;\nvar shifted=aValue >> 1;\nreturn isNegative?\n-shifted:\nshifted;}\n\n\n\n\n\nexports.encode = function base64VLQ_encode(aValue){\nvar encoded=\"\";\nvar digit;\n\nvar vlq=toVLQSigned(aValue);\n\ndo {\ndigit = vlq & VLQ_BASE_MASK;\nvlq >>>= VLQ_BASE_SHIFT;\nif(vlq > 0){\n\n\ndigit |= VLQ_CONTINUATION_BIT;}\n\nencoded += base64.encode(digit);}while(\nvlq > 0);\n\nreturn encoded;};\n\n\n\n\n\n\nexports.decode = function base64VLQ_decode(aStr){\nvar i=0;\nvar strLen=aStr.length;\nvar result=0;\nvar shift=0;\nvar continuation,digit;\n\ndo {\nif(i >= strLen){\nthrow new Error(\"Expected more digits in base 64 VLQ value.\");}\n\ndigit = base64.decode(aStr.charAt(i++));\ncontinuation = !!(digit & VLQ_CONTINUATION_BIT);\ndigit &= VLQ_BASE_MASK;\nresult = result + (digit << shift);\nshift += VLQ_BASE_SHIFT;}while(\ncontinuation);\n\nreturn {\nvalue:fromVLQSigned(result),\nrest:aStr.slice(i)};};});\n\n\n\n\n\n\n\n\n\n\ndefine('source-map/base64',['require','exports','module'],function(require,exports,module){\n\nvar charToIntMap={};\nvar intToCharMap={};\n\n'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.\nsplit('').\nforEach(function(ch,index){\ncharToIntMap[ch] = index;\nintToCharMap[index] = ch;});\n\n\n\n\n\nexports.encode = function base64_encode(aNumber){\nif(aNumber in intToCharMap){\nreturn intToCharMap[aNumber];}\n\nthrow new TypeError(\"Must be between 0 and 63: \" + aNumber);};\n\n\n\n\n\nexports.decode = function base64_decode(aChar){\nif(aChar in charToIntMap){\nreturn charToIntMap[aChar];}\n\nthrow new TypeError(\"Not a valid base 64 digit: \" + aChar);};});\n\n\n\n\n\n\n\n\n\ndefine('source-map/util',['require','exports','module'],function(require,exports,module){\n\n\n\n\n\n\n\n\n\n\n\nfunction getArg(aArgs,aName,aDefaultValue){\nif(aName in aArgs){\nreturn aArgs[aName];}else \nif(arguments.length === 3){\nreturn aDefaultValue;}else \n{\nthrow new Error('\"' + aName + '\" is a required argument.');}}\n\n\nexports.getArg = getArg;\n\nvar urlRegexp=/([\\w+\\-.]+):\\/\\/((\\w+:\\w+)@)?([\\w.]+)?(:(\\d+))?(\\S+)?/;\nvar dataUrlRegexp=/^data:.+\\,.+/;\n\nfunction urlParse(aUrl){\nvar match=aUrl.match(urlRegexp);\nif(!match){\nreturn null;}\n\nreturn {\nscheme:match[1],\nauth:match[3],\nhost:match[4],\nport:match[6],\npath:match[7]};}\n\n\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl){\nvar url=aParsedUrl.scheme + \"://\";\nif(aParsedUrl.auth){\nurl += aParsedUrl.auth + \"@\";}\n\nif(aParsedUrl.host){\nurl += aParsedUrl.host;}\n\nif(aParsedUrl.port){\nurl += \":\" + aParsedUrl.port;}\n\nif(aParsedUrl.path){\nurl += aParsedUrl.path;}\n\nreturn url;}\n\nexports.urlGenerate = urlGenerate;\n\nfunction join(aRoot,aPath){\nvar url;\n\nif(aPath.match(urlRegexp) || aPath.match(dataUrlRegexp)){\nreturn aPath;}\n\n\nif(aPath.charAt(0) === '/' && (url = urlParse(aRoot))){\nurl.path = aPath;\nreturn urlGenerate(url);}\n\n\nreturn aRoot.replace(/\\/$/,'') + '/' + aPath;}\n\nexports.join = join;\n\n\n\n\n\n\n\n\n\n\nfunction toSetString(aStr){\nreturn '$' + aStr;}\n\nexports.toSetString = toSetString;\n\nfunction fromSetString(aStr){\nreturn aStr.substr(1);}\n\nexports.fromSetString = fromSetString;\n\nfunction relative(aRoot,aPath){\naRoot = aRoot.replace(/\\/$/,'');\n\nvar url=urlParse(aRoot);\nif(aPath.charAt(0) == \"/\" && url && url.path == \"/\"){\nreturn aPath.slice(1);}\n\n\nreturn aPath.indexOf(aRoot + '/') === 0?\naPath.substr(aRoot.length + 1):\naPath;}\n\nexports.relative = relative;\n\nfunction strcmp(aStr1,aStr2){\nvar s1=aStr1 || \"\";\nvar s2=aStr2 || \"\";\nreturn (s1 > s2) - (s1 < s2);}\n\n\n\n\n\n\n\n\n\n\nfunction compareByOriginalPositions(mappingA,mappingB,onlyCompareOriginal){\nvar cmp;\n\ncmp = strcmp(mappingA.source,mappingB.source);\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.originalLine - mappingB.originalLine;\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.originalColumn - mappingB.originalColumn;\nif(cmp || onlyCompareOriginal){\nreturn cmp;}\n\n\ncmp = strcmp(mappingA.name,mappingB.name);\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.generatedLine - mappingB.generatedLine;\nif(cmp){\nreturn cmp;}\n\n\nreturn mappingA.generatedColumn - mappingB.generatedColumn;}\n;\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n\n\n\n\n\n\n\n\n\nfunction compareByGeneratedPositions(mappingA,mappingB,onlyCompareGenerated){\nvar cmp;\n\ncmp = mappingA.generatedLine - mappingB.generatedLine;\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.generatedColumn - mappingB.generatedColumn;\nif(cmp || onlyCompareGenerated){\nreturn cmp;}\n\n\ncmp = strcmp(mappingA.source,mappingB.source);\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.originalLine - mappingB.originalLine;\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.originalColumn - mappingB.originalColumn;\nif(cmp){\nreturn cmp;}\n\n\nreturn strcmp(mappingA.name,mappingB.name);}\n;\nexports.compareByGeneratedPositions = compareByGeneratedPositions;});\n\n\n\n\n\n\n\n\ndefine('source-map/array-set',['require','exports','module','source-map/util'],function(require,exports,module){\n\nvar util=require('./util');\n\n\n\n\n\n\n\nfunction ArraySet(){\nthis._array = [];\nthis._set = {};}\n\n\n\n\n\nArraySet.fromArray = function ArraySet_fromArray(aArray,aAllowDuplicates){\nvar set=new ArraySet();\nfor(var i=0,len=aArray.length;i < len;i++) {\nset.add(aArray[i],aAllowDuplicates);}\n\nreturn set;};\n\n\n\n\n\n\n\nArraySet.prototype.add = function ArraySet_add(aStr,aAllowDuplicates){\nvar isDuplicate=this.has(aStr);\nvar idx=this._array.length;\nif(!isDuplicate || aAllowDuplicates){\nthis._array.push(aStr);}\n\nif(!isDuplicate){\nthis._set[util.toSetString(aStr)] = idx;}};\n\n\n\n\n\n\n\n\nArraySet.prototype.has = function ArraySet_has(aStr){\nreturn Object.prototype.hasOwnProperty.call(this._set,\nutil.toSetString(aStr));};\n\n\n\n\n\n\n\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr){\nif(this.has(aStr)){\nreturn this._set[util.toSetString(aStr)];}\n\nthrow new Error('\"' + aStr + '\" is not in the set.');};\n\n\n\n\n\n\n\nArraySet.prototype.at = function ArraySet_at(aIdx){\nif(aIdx >= 0 && aIdx < this._array.length){\nreturn this._array[aIdx];}\n\nthrow new Error('No element indexed by ' + aIdx);};\n\n\n\n\n\n\n\nArraySet.prototype.toArray = function ArraySet_toArray(){\nreturn this._array.slice();};\n\n\nexports.ArraySet = ArraySet;});\n\n\n\n\n\n\n\n\ndefine('source-map/source-map-consumer',['require','exports','module','source-map/util','source-map/binary-search','source-map/array-set','source-map/base64-vlq'],function(require,exports,module){\n\nvar util=require('./util');\nvar binarySearch=require('./binary-search');\nvar ArraySet=require('./array-set').ArraySet;\nvar base64VLQ=require('./base64-vlq');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SourceMapConsumer(aSourceMap){\nvar sourceMap=aSourceMap;\nif(typeof aSourceMap === 'string'){\nsourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/,''));}\n\n\nvar version=util.getArg(sourceMap,'version');\nvar sources=util.getArg(sourceMap,'sources');\n\n\nvar names=util.getArg(sourceMap,'names',[]);\nvar sourceRoot=util.getArg(sourceMap,'sourceRoot',null);\nvar sourcesContent=util.getArg(sourceMap,'sourcesContent',null);\nvar mappings=util.getArg(sourceMap,'mappings');\nvar file=util.getArg(sourceMap,'file',null);\n\n\n\nif(version != this._version){\nthrow new Error('Unsupported version: ' + version);}\n\n\n\n\n\n\nthis._names = ArraySet.fromArray(names,true);\nthis._sources = ArraySet.fromArray(sources,true);\n\nthis.sourceRoot = sourceRoot;\nthis.sourcesContent = sourcesContent;\nthis._mappings = mappings;\nthis.file = file;}\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.fromSourceMap = \nfunction SourceMapConsumer_fromSourceMap(aSourceMap){\nvar smc=Object.create(SourceMapConsumer.prototype);\n\nsmc._names = ArraySet.fromArray(aSourceMap._names.toArray(),true);\nsmc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(),true);\nsmc.sourceRoot = aSourceMap._sourceRoot;\nsmc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\nsmc.sourceRoot);\nsmc.file = aSourceMap._file;\n\nsmc.__generatedMappings = aSourceMap._mappings.slice().\nsort(util.compareByGeneratedPositions);\nsmc.__originalMappings = aSourceMap._mappings.slice().\nsort(util.compareByOriginalPositions);\n\nreturn smc;};\n\n\n\n\n\nSourceMapConsumer.prototype._version = 3;\n\n\n\n\nObject.defineProperty(SourceMapConsumer.prototype,'sources',{\nget:function(){\nreturn this._sources.toArray().map(function(s){\nreturn this.sourceRoot?util.join(this.sourceRoot,s):s;},\nthis);}});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype,'_generatedMappings',{\nget:function(){\nif(!this.__generatedMappings){\nthis.__generatedMappings = [];\nthis.__originalMappings = [];\nthis._parseMappings(this._mappings,this.sourceRoot);}\n\n\nreturn this.__generatedMappings;}});\n\n\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype,'_originalMappings',{\nget:function(){\nif(!this.__originalMappings){\nthis.__generatedMappings = [];\nthis.__originalMappings = [];\nthis._parseMappings(this._mappings,this.sourceRoot);}\n\n\nreturn this.__originalMappings;}});\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype._parseMappings = \nfunction SourceMapConsumer_parseMappings(aStr,aSourceRoot){\nvar generatedLine=1;\nvar previousGeneratedColumn=0;\nvar previousOriginalLine=0;\nvar previousOriginalColumn=0;\nvar previousSource=0;\nvar previousName=0;\nvar mappingSeparator=/^[,;]/;\nvar str=aStr;\nvar mapping;\nvar temp;\n\nwhile(str.length > 0) {\nif(str.charAt(0) === ';'){\ngeneratedLine++;\nstr = str.slice(1);\npreviousGeneratedColumn = 0;}else \n\nif(str.charAt(0) === ','){\nstr = str.slice(1);}else \n\n{\nmapping = {};\nmapping.generatedLine = generatedLine;\n\n\ntemp = base64VLQ.decode(str);\nmapping.generatedColumn = previousGeneratedColumn + temp.value;\npreviousGeneratedColumn = mapping.generatedColumn;\nstr = temp.rest;\n\nif(str.length > 0 && !mappingSeparator.test(str.charAt(0))){\n\ntemp = base64VLQ.decode(str);\nmapping.source = this._sources.at(previousSource + temp.value);\npreviousSource += temp.value;\nstr = temp.rest;\nif(str.length === 0 || mappingSeparator.test(str.charAt(0))){\nthrow new Error('Found a source, but no line and column');}\n\n\n\ntemp = base64VLQ.decode(str);\nmapping.originalLine = previousOriginalLine + temp.value;\npreviousOriginalLine = mapping.originalLine;\n\nmapping.originalLine += 1;\nstr = temp.rest;\nif(str.length === 0 || mappingSeparator.test(str.charAt(0))){\nthrow new Error('Found a source and line, but no column');}\n\n\n\ntemp = base64VLQ.decode(str);\nmapping.originalColumn = previousOriginalColumn + temp.value;\npreviousOriginalColumn = mapping.originalColumn;\nstr = temp.rest;\n\nif(str.length > 0 && !mappingSeparator.test(str.charAt(0))){\n\ntemp = base64VLQ.decode(str);\nmapping.name = this._names.at(previousName + temp.value);\npreviousName += temp.value;\nstr = temp.rest;}}\n\n\n\nthis.__generatedMappings.push(mapping);\nif(typeof mapping.originalLine === 'number'){\nthis.__originalMappings.push(mapping);}}}\n\n\n\n\nthis.__originalMappings.sort(util.compareByOriginalPositions);};\n\n\n\n\n\n\nSourceMapConsumer.prototype._findMapping = \nfunction SourceMapConsumer_findMapping(aNeedle,aMappings,aLineName,\naColumnName,aComparator){\n\n\n\n\n\nif(aNeedle[aLineName] <= 0){\nthrow new TypeError('Line must be greater than or equal to 1, got ' + \naNeedle[aLineName]);}\n\nif(aNeedle[aColumnName] < 0){\nthrow new TypeError('Column must be greater than or equal to 0, got ' + \naNeedle[aColumnName]);}\n\n\nreturn binarySearch.search(aNeedle,aMappings,aComparator);};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.originalPositionFor = \nfunction SourceMapConsumer_originalPositionFor(aArgs){\nvar needle={\ngeneratedLine:util.getArg(aArgs,'line'),\ngeneratedColumn:util.getArg(aArgs,'column')};\n\n\nvar mapping=this._findMapping(needle,\nthis._generatedMappings,\n\"generatedLine\",\n\"generatedColumn\",\nutil.compareByGeneratedPositions);\n\nif(mapping){\nvar source=util.getArg(mapping,'source',null);\nif(source && this.sourceRoot){\nsource = util.join(this.sourceRoot,source);}\n\nreturn {\nsource:source,\nline:util.getArg(mapping,'originalLine',null),\ncolumn:util.getArg(mapping,'originalColumn',null),\nname:util.getArg(mapping,'name',null)};}\n\n\n\nreturn {\nsource:null,\nline:null,\ncolumn:null,\nname:null};};\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.sourceContentFor = \nfunction SourceMapConsumer_sourceContentFor(aSource){\nif(!this.sourcesContent){\nreturn null;}\n\n\nif(this.sourceRoot){\naSource = util.relative(this.sourceRoot,aSource);}\n\n\nif(this._sources.has(aSource)){\nreturn this.sourcesContent[this._sources.indexOf(aSource)];}\n\n\nvar url;\nif(this.sourceRoot && (\nurl = util.urlParse(this.sourceRoot))){\n\n\n\n\nvar fileUriAbsPath=aSource.replace(/^file:\\/\\//,\"\");\nif(url.scheme == \"file\" && \nthis._sources.has(fileUriAbsPath)){\nreturn this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];}\n\n\nif((!url.path || url.path == \"/\") && \nthis._sources.has(\"/\" + aSource)){\nreturn this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];}}\n\n\n\nthrow new Error('\"' + aSource + '\" is not in the SourceMap.');};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.generatedPositionFor = \nfunction SourceMapConsumer_generatedPositionFor(aArgs){\nvar needle={\nsource:util.getArg(aArgs,'source'),\noriginalLine:util.getArg(aArgs,'line'),\noriginalColumn:util.getArg(aArgs,'column')};\n\n\nif(this.sourceRoot){\nneedle.source = util.relative(this.sourceRoot,needle.source);}\n\n\nvar mapping=this._findMapping(needle,\nthis._originalMappings,\n\"originalLine\",\n\"originalColumn\",\nutil.compareByOriginalPositions);\n\nif(mapping){\nreturn {\nline:util.getArg(mapping,'generatedLine',null),\ncolumn:util.getArg(mapping,'generatedColumn',null)};}\n\n\n\nreturn {\nline:null,\ncolumn:null};};\n\n\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.eachMapping = \nfunction SourceMapConsumer_eachMapping(aCallback,aContext,aOrder){\nvar context=aContext || null;\nvar order=aOrder || SourceMapConsumer.GENERATED_ORDER;\n\nvar mappings;\nswitch(order){\ncase SourceMapConsumer.GENERATED_ORDER:\nmappings = this._generatedMappings;\nbreak;\ncase SourceMapConsumer.ORIGINAL_ORDER:\nmappings = this._originalMappings;\nbreak;\ndefault:\nthrow new Error(\"Unknown order of iteration.\");}\n\n\nvar sourceRoot=this.sourceRoot;\nmappings.map(function(mapping){\nvar source=mapping.source;\nif(source && sourceRoot){\nsource = util.join(sourceRoot,source);}\n\nreturn {\nsource:source,\ngeneratedLine:mapping.generatedLine,\ngeneratedColumn:mapping.generatedColumn,\noriginalLine:mapping.originalLine,\noriginalColumn:mapping.originalColumn,\nname:mapping.name};}).\n\nforEach(aCallback,context);};\n\n\nexports.SourceMapConsumer = SourceMapConsumer;});\n\n\n\n\n\n\n\n\ndefine('source-map/binary-search',['require','exports','module'],function(require,exports,module){\n\n\n\n\n\n\n\n\n\n\nfunction recursiveSearch(aLow,aHigh,aNeedle,aHaystack,aCompare){\n\n\n\n\n\n\n\n\n\n\nvar mid=Math.floor((aHigh - aLow) / 2) + aLow;\nvar cmp=aCompare(aNeedle,aHaystack[mid],true);\nif(cmp === 0){\n\nreturn aHaystack[mid];}else \n\nif(cmp > 0){\n\nif(aHigh - mid > 1){\n\nreturn recursiveSearch(mid,aHigh,aNeedle,aHaystack,aCompare);}\n\n\n\nreturn aHaystack[mid];}else \n\n{\n\nif(mid - aLow > 1){\n\nreturn recursiveSearch(aLow,mid,aNeedle,aHaystack,aCompare);}\n\n\n\nreturn aLow < 0?\nnull:\naHaystack[aLow];}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.search = function search(aNeedle,aHaystack,aCompare){\nreturn aHaystack.length > 0?\nrecursiveSearch(-1,aHaystack.length,aNeedle,aHaystack,aCompare):\nnull;};});\n\n\n\n\n\n\n\n\n\ndefine('source-map/source-node',['require','exports','module','source-map/source-map-generator','source-map/util'],function(require,exports,module){\n\nvar SourceMapGenerator=require('./source-map-generator').SourceMapGenerator;\nvar util=require('./util');\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SourceNode(aLine,aColumn,aSource,aChunks,aName){\nthis.children = [];\nthis.sourceContents = {};\nthis.line = aLine === undefined?null:aLine;\nthis.column = aColumn === undefined?null:aColumn;\nthis.source = aSource === undefined?null:aSource;\nthis.name = aName === undefined?null:aName;\nif(aChunks != null)this.add(aChunks);}\n\n\n\n\n\n\n\n\nSourceNode.fromStringWithSourceMap = \nfunction SourceNode_fromStringWithSourceMap(aGeneratedCode,aSourceMapConsumer){\n\n\nvar node=new SourceNode();\n\n\n\nvar remainingLines=aGeneratedCode.split('\\n');\n\n\nvar lastGeneratedLine=1,lastGeneratedColumn=0;\n\n\n\n\nvar lastMapping=null;\n\naSourceMapConsumer.eachMapping(function(mapping){\nif(lastMapping === null){\n\n\n\nwhile(lastGeneratedLine < mapping.generatedLine) {\nnode.add(remainingLines.shift() + \"\\n\");\nlastGeneratedLine++;}\n\nif(lastGeneratedColumn < mapping.generatedColumn){\nvar nextLine=remainingLines[0];\nnode.add(nextLine.substr(0,mapping.generatedColumn));\nremainingLines[0] = nextLine.substr(mapping.generatedColumn);\nlastGeneratedColumn = mapping.generatedColumn;}}else \n\n{\n\n\nif(lastGeneratedLine < mapping.generatedLine){\nvar code=\"\";\n\ndo {\ncode += remainingLines.shift() + \"\\n\";\nlastGeneratedLine++;\nlastGeneratedColumn = 0;}while(\nlastGeneratedLine < mapping.generatedLine);\n\n\nif(lastGeneratedColumn < mapping.generatedColumn){\nvar nextLine=remainingLines[0];\ncode += nextLine.substr(0,mapping.generatedColumn);\nremainingLines[0] = nextLine.substr(mapping.generatedColumn);\nlastGeneratedColumn = mapping.generatedColumn;}\n\n\naddMappingWithCode(lastMapping,code);}else \n{\n\n\n\nvar nextLine=remainingLines[0];\nvar code=nextLine.substr(0,mapping.generatedColumn - \nlastGeneratedColumn);\nremainingLines[0] = nextLine.substr(mapping.generatedColumn - \nlastGeneratedColumn);\nlastGeneratedColumn = mapping.generatedColumn;\naddMappingWithCode(lastMapping,code);}}\n\n\nlastMapping = mapping;},\nthis);\n\n\n\naddMappingWithCode(lastMapping,remainingLines.join(\"\\n\"));\n\n\naSourceMapConsumer.sources.forEach(function(sourceFile){\nvar content=aSourceMapConsumer.sourceContentFor(sourceFile);\nif(content){\nnode.setSourceContent(sourceFile,content);}});\n\n\n\nreturn node;\n\nfunction addMappingWithCode(mapping,code){\nif(mapping === null || mapping.source === undefined){\nnode.add(code);}else \n{\nnode.add(new SourceNode(mapping.originalLine,\nmapping.originalColumn,\nmapping.source,\ncode,\nmapping.name));}}};\n\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.add = function SourceNode_add(aChunk){\nif(Array.isArray(aChunk)){\naChunk.forEach(function(chunk){\nthis.add(chunk);},\nthis);}else \n\nif(aChunk instanceof SourceNode || typeof aChunk === \"string\"){\nif(aChunk){\nthis.children.push(aChunk);}}else \n\n\n{\nthrow new TypeError(\n\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);}\n\n\nreturn this;};\n\n\n\n\n\n\n\n\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk){\nif(Array.isArray(aChunk)){\nfor(var i=aChunk.length - 1;i >= 0;i--) {\nthis.prepend(aChunk[i]);}}else \n\n\nif(aChunk instanceof SourceNode || typeof aChunk === \"string\"){\nthis.children.unshift(aChunk);}else \n\n{\nthrow new TypeError(\n\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);}\n\n\nreturn this;};\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.walk = function SourceNode_walk(aFn){\nvar chunk;\nfor(var i=0,len=this.children.length;i < len;i++) {\nchunk = this.children[i];\nif(chunk instanceof SourceNode){\nchunk.walk(aFn);}else \n\n{\nif(chunk !== ''){\naFn(chunk,{source:this.source,\nline:this.line,\ncolumn:this.column,\nname:this.name});}}}};\n\n\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.join = function SourceNode_join(aSep){\nvar newChildren;\nvar i;\nvar len=this.children.length;\nif(len > 0){\nnewChildren = [];\nfor(i = 0;i < len - 1;i++) {\nnewChildren.push(this.children[i]);\nnewChildren.push(aSep);}\n\nnewChildren.push(this.children[i]);\nthis.children = newChildren;}\n\nreturn this;};\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern,aReplacement){\nvar lastChild=this.children[this.children.length - 1];\nif(lastChild instanceof SourceNode){\nlastChild.replaceRight(aPattern,aReplacement);}else \n\nif(typeof lastChild === 'string'){\nthis.children[this.children.length - 1] = lastChild.replace(aPattern,aReplacement);}else \n\n{\nthis.children.push(''.replace(aPattern,aReplacement));}\n\nreturn this;};\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.setSourceContent = \nfunction SourceNode_setSourceContent(aSourceFile,aSourceContent){\nthis.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;};\n\n\n\n\n\n\n\n\nSourceNode.prototype.walkSourceContents = \nfunction SourceNode_walkSourceContents(aFn){\nfor(var i=0,len=this.children.length;i < len;i++) {\nif(this.children[i] instanceof SourceNode){\nthis.children[i].walkSourceContents(aFn);}}\n\n\n\nvar sources=Object.keys(this.sourceContents);\nfor(var i=0,len=sources.length;i < len;i++) {\naFn(util.fromSetString(sources[i]),this.sourceContents[sources[i]]);}};\n\n\n\n\n\n\n\nSourceNode.prototype.toString = function SourceNode_toString(){\nvar str=\"\";\nthis.walk(function(chunk){\nstr += chunk;});\n\nreturn str;};\n\n\n\n\n\n\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs){\nvar generated={\ncode:\"\",\nline:1,\ncolumn:0};\n\nvar map=new SourceMapGenerator(aArgs);\nvar sourceMappingActive=false;\nvar lastOriginalSource=null;\nvar lastOriginalLine=null;\nvar lastOriginalColumn=null;\nvar lastOriginalName=null;\nthis.walk(function(chunk,original){\ngenerated.code += chunk;\nif(original.source !== null && \noriginal.line !== null && \noriginal.column !== null){\nif(lastOriginalSource !== original.source || \nlastOriginalLine !== original.line || \nlastOriginalColumn !== original.column || \nlastOriginalName !== original.name){\nmap.addMapping({\nsource:original.source,\noriginal:{\nline:original.line,\ncolumn:original.column},\n\ngenerated:{\nline:generated.line,\ncolumn:generated.column},\n\nname:original.name});}\n\n\nlastOriginalSource = original.source;\nlastOriginalLine = original.line;\nlastOriginalColumn = original.column;\nlastOriginalName = original.name;\nsourceMappingActive = true;}else \nif(sourceMappingActive){\nmap.addMapping({\ngenerated:{\nline:generated.line,\ncolumn:generated.column}});\n\n\nlastOriginalSource = null;\nsourceMappingActive = false;}\n\nchunk.split('').forEach(function(ch){\nif(ch === '\\n'){\ngenerated.line++;\ngenerated.column = 0;}else \n{\ngenerated.column++;}});});\n\n\n\nthis.walkSourceContents(function(sourceFile,sourceContent){\nmap.setSourceContent(sourceFile,sourceContent);});\n\n\nreturn {code:generated.code,map:map};};\n\n\nexports.SourceNode = SourceNode;});\n\n\n\n\n\nthis.sourceMap = {\nSourceMapConsumer:require('source-map/source-map-consumer').SourceMapConsumer,\nSourceMapGenerator:require('source-map/source-map-generator').SourceMapGenerator,\nSourceNode:require('source-map/source-node').SourceNode};}","sourceCode":"\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SourceMap\n * @generated\n * @extern\n *\n * This module was generated from `node_modules/source-map` by running\n *\n * $ npm install dryice\n * $ node Makefile.dryice.js\n * $ cat dist/source-map.js\n *\n * and wrapping resulting file into `wrapper` function.\n *\n */\n/*eslint-disable */\n\nvar scope = {};\nwrapper.call(scope);\n\nmodule.exports = scope.sourceMap;\n\nfunction wrapper() {\n\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * Define a module along with a payload.\n * @param {string} moduleName Name for the payload\n * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec\n * @param {function} payload Function with (require, exports, module) params\n */\nfunction define(moduleName, deps, payload) {\n if (typeof moduleName != \"string\") {\n throw new TypeError('Expected string, got: ' + moduleName);\n }\n\n if (arguments.length == 2) {\n payload = deps;\n }\n\n if (moduleName in define.modules) {\n throw new Error(\"Module already defined: \" + moduleName);\n }\n define.modules[moduleName] = payload;\n};\n\n/**\n * The global store of un-instantiated modules\n */\ndefine.modules = {};\n\n\n/**\n * We invoke require() in the context of a Domain so we can have multiple\n * sets of modules running separate from each other.\n * This contrasts with JSMs which are singletons, Domains allows us to\n * optionally load a CommonJS module twice with separate data each time.\n * Perhaps you want 2 command lines with a different set of commands in each,\n * for example.\n */\nfunction Domain() {\n this.modules = {};\n this._currentModule = null;\n}\n\n(function () {\n\n /**\n * Lookup module names and resolve them by calling the definition function if\n * needed.\n * There are 2 ways to call this, either with an array of dependencies and a\n * callback to call when the dependencies are found (which can happen\n * asynchronously in an in-page context) or with a single string an no callback\n * where the dependency is resolved synchronously and returned.\n * The API is designed to be compatible with the CommonJS AMD spec and\n * RequireJS.\n * @param {string[]|string} deps A name, or names for the payload\n * @param {function|undefined} callback Function to call when the dependencies\n * are resolved\n * @return {undefined|object} The module required or undefined for\n * array/callback method\n */\n Domain.prototype.require = function(deps, callback) {\n if (Array.isArray(deps)) {\n var params = deps.map(function(dep) {\n return this.lookup(dep);\n }, this);\n if (callback) {\n callback.apply(null, params);\n }\n return undefined;\n }\n else {\n return this.lookup(deps);\n }\n };\n\n function normalize(path) {\n var bits = path.split('/');\n var i = 1;\n while (i < bits.length) {\n if (bits[i] === '..') {\n bits.splice(i-1, 1);\n } else if (bits[i] === '.') {\n bits.splice(i, 1);\n } else {\n i++;\n }\n }\n return bits.join('/');\n }\n\n function join(a, b) {\n a = a.trim();\n b = b.trim();\n if (/^\\//.test(b)) {\n return b;\n } else {\n return a.replace(/\\/*$/, '/') + b;\n }\n }\n\n function dirname(path) {\n var bits = path.split('/');\n bits.pop();\n return bits.join('/');\n }\n\n /**\n * Lookup module names and resolve them by calling the definition function if\n * needed.\n * @param {string} moduleName A name for the payload to lookup\n * @return {object} The module specified by aModuleName or null if not found.\n */\n Domain.prototype.lookup = function(moduleName) {\n if (/^\\./.test(moduleName)) {\n moduleName = normalize(join(dirname(this._currentModule), moduleName));\n }\n\n if (moduleName in this.modules) {\n var module = this.modules[moduleName];\n return module;\n }\n\n if (!(moduleName in define.modules)) {\n throw new Error(\"Module not defined: \" + moduleName);\n }\n\n var module = define.modules[moduleName];\n\n if (typeof module == \"function\") {\n var exports = {};\n var previousModule = this._currentModule;\n this._currentModule = moduleName;\n module(this.require.bind(this), exports, { id: moduleName, uri: \"\" });\n this._currentModule = previousModule;\n module = exports;\n }\n\n // cache the resulting module object for next time\n this.modules[moduleName] = module;\n\n return module;\n };\n\n}());\n\ndefine.Domain = Domain;\ndefine.globalDomain = new Domain();\nvar require = define.globalDomain.require.bind(define.globalDomain);\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/source-map-generator', ['require', 'exports', 'module' , 'source-map/base64-vlq', 'source-map/util', 'source-map/array-set'], function(require, exports, module) {\n\n var base64VLQ = require('./base64-vlq');\n var util = require('./util');\n var ArraySet = require('./array-set').ArraySet;\n\n /**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. To create a new one, you must pass an object\n * with the following properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: An optional root for all URLs in this source map.\n */\n function SourceMapGenerator(aArgs) {\n this._file = util.getArg(aArgs, 'file');\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = [];\n this._sourcesContents = null;\n }\n\n SourceMapGenerator.prototype._version = 3;\n\n /**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\n SourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source) {\n newMapping.source = mapping.source;\n if (sourceRoot) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n /**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\n SourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n this._validateMapping(generated, original, source, name);\n\n if (source && !this._sources.has(source)) {\n this._sources.add(source);\n }\n\n if (name && !this._names.has(name)) {\n this._names.add(name);\n }\n\n this._mappings.push({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n /**\n * Set the source content for a source file.\n */\n SourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent !== null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = {};\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n /**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n */\n SourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile) {\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (!aSourceFile) {\n aSourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"aSourceFile\" relative if an absolute Url is passed.\n if (sourceRoot) {\n aSourceFile = util.relative(sourceRoot, aSourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"aSourceFile\"\n this._mappings.forEach(function (mapping) {\n if (mapping.source === aSourceFile && mapping.originalLine) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source !== null) {\n // Copy mapping\n if (sourceRoot) {\n mapping.source = util.relative(sourceRoot, original.source);\n } else {\n mapping.source = original.source;\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name !== null && mapping.name !== null) {\n // Only use the identifier name if it's an identifier\n // in both SourceMaps\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content) {\n if (sourceRoot) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n /**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\n SourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n orginal: aOriginal,\n name: aName\n }));\n }\n };\n\n /**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\n SourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var mapping;\n\n // The mappings must be guaranteed to be in sorted order before we start\n // serializing them or else the generated line numbers (which are defined\n // via the ';' separators) will be all messed up. Note: it might be more\n // performant to maintain the sorting as we insert them, rather than as we\n // serialize them, but the big O is the same either way.\n this._mappings.sort(util.compareByGeneratedPositions);\n\n for (var i = 0, len = this._mappings.length; i < len; i++) {\n mapping = this._mappings[i];\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n result += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) {\n continue;\n }\n result += ',';\n }\n }\n\n result += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source) {\n result += base64VLQ.encode(this._sources.indexOf(mapping.source)\n - previousSource);\n previousSource = this._sources.indexOf(mapping.source);\n\n // lines are stored 0-based in SourceMap spec version 3\n result += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n result += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name) {\n result += base64VLQ.encode(this._names.indexOf(mapping.name)\n - previousName);\n previousName = this._names.indexOf(mapping.name);\n }\n }\n }\n\n return result;\n };\n\n SourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents,\n key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n /**\n * Externalize the source map.\n */\n SourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n file: this._file,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._sourceRoot) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n /**\n * Render the source map being generated to a string.\n */\n SourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this);\n };\n\n exports.SourceMapGenerator = SourceMapGenerator;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\ndefine('source-map/base64-vlq', ['require', 'exports', 'module' , 'source-map/base64'], function(require, exports, module) {\n\n var base64 = require('./base64');\n\n // A single base 64 digit can contain 6 bits of data. For the base 64 variable\n // length quantities we use in the source map spec, the first bit is the sign,\n // the next four bits are the actual value, and the 6th bit is the\n // continuation bit. The continuation bit tells us whether there are more\n // digits in this value following this digit.\n //\n // Continuation\n // | Sign\n // | |\n // V V\n // 101011\n\n var VLQ_BASE_SHIFT = 5;\n\n // binary: 100000\n var VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n // binary: 011111\n var VLQ_BASE_MASK = VLQ_BASE - 1;\n\n // binary: 100000\n var VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n /**\n * Converts from a two-complement value to a value where the sign bit is\n * is placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\n function toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n }\n\n /**\n * Converts to a two-complement value from a value where the sign bit is\n * is placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\n function fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n }\n\n /**\n * Returns the base 64 VLQ encoded value.\n */\n exports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n };\n\n /**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string.\n */\n exports.decode = function base64VLQ_decode(aStr) {\n var i = 0;\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (i >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n digit = base64.decode(aStr.charAt(i++));\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n return {\n value: fromVLQSigned(result),\n rest: aStr.slice(i)\n };\n };\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/base64', ['require', 'exports', 'module' , ], function(require, exports, module) {\n\n var charToIntMap = {};\n var intToCharMap = {};\n\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n .split('')\n .forEach(function (ch, index) {\n charToIntMap[ch] = index;\n intToCharMap[index] = ch;\n });\n\n /**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\n exports.encode = function base64_encode(aNumber) {\n if (aNumber in intToCharMap) {\n return intToCharMap[aNumber];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + aNumber);\n };\n\n /**\n * Decode a single base 64 digit to an integer.\n */\n exports.decode = function base64_decode(aChar) {\n if (aChar in charToIntMap) {\n return charToIntMap[aChar];\n }\n throw new TypeError(\"Not a valid base 64 digit: \" + aChar);\n };\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/util', ['require', 'exports', 'module' , ], function(require, exports, module) {\n\n /**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\n function getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n }\n exports.getArg = getArg;\n\n var urlRegexp = /([\\w+\\-.]+):\\/\\/((\\w+:\\w+)@)?([\\w.]+)?(:(\\d+))?(\\S+)?/;\n var dataUrlRegexp = /^data:.+\\,.+/;\n\n function urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[3],\n host: match[4],\n port: match[6],\n path: match[7]\n };\n }\n exports.urlParse = urlParse;\n\n function urlGenerate(aParsedUrl) {\n var url = aParsedUrl.scheme + \"://\";\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + \"@\"\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n }\n exports.urlGenerate = urlGenerate;\n\n function join(aRoot, aPath) {\n var url;\n\n if (aPath.match(urlRegexp) || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n if (aPath.charAt(0) === '/' && (url = urlParse(aRoot))) {\n url.path = aPath;\n return urlGenerate(url);\n }\n\n return aRoot.replace(/\\/$/, '') + '/' + aPath;\n }\n exports.join = join;\n\n /**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\n function toSetString(aStr) {\n return '$' + aStr;\n }\n exports.toSetString = toSetString;\n\n function fromSetString(aStr) {\n return aStr.substr(1);\n }\n exports.fromSetString = fromSetString;\n\n function relative(aRoot, aPath) {\n aRoot = aRoot.replace(/\\/$/, '');\n\n var url = urlParse(aRoot);\n if (aPath.charAt(0) == \"/\" && url && url.path == \"/\") {\n return aPath.slice(1);\n }\n\n return aPath.indexOf(aRoot + '/') === 0\n ? aPath.substr(aRoot.length + 1)\n : aPath;\n }\n exports.relative = relative;\n\n function strcmp(aStr1, aStr2) {\n var s1 = aStr1 || \"\";\n var s2 = aStr2 || \"\";\n return (s1 > s2) - (s1 < s2);\n }\n\n /**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\n function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp;\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.name, mappingB.name);\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return mappingA.generatedColumn - mappingB.generatedColumn;\n };\n exports.compareByOriginalPositions = compareByOriginalPositions;\n\n /**\n * Comparator between two mappings where the generated positions are\n * compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\n function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) {\n var cmp;\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n };\n exports.compareByGeneratedPositions = compareByGeneratedPositions;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/array-set', ['require', 'exports', 'module' , 'source-map/util'], function(require, exports, module) {\n\n var util = require('./util');\n\n /**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\n function ArraySet() {\n this._array = [];\n this._set = {};\n }\n\n /**\n * Static method for creating ArraySet instances from an existing array.\n */\n ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n };\n\n /**\n * Add the given string to this set.\n *\n * @param String aStr\n */\n ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var isDuplicate = this.has(aStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[util.toSetString(aStr)] = idx;\n }\n };\n\n /**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\n ArraySet.prototype.has = function ArraySet_has(aStr) {\n return Object.prototype.hasOwnProperty.call(this._set,\n util.toSetString(aStr));\n };\n\n /**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\n ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (this.has(aStr)) {\n return this._set[util.toSetString(aStr)];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n };\n\n /**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\n ArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n };\n\n /**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\n ArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n };\n\n exports.ArraySet = ArraySet;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/source-map-consumer', ['require', 'exports', 'module' , 'source-map/util', 'source-map/binary-search', 'source-map/array-set', 'source-map/base64-vlq'], function(require, exports, module) {\n\n var util = require('./util');\n var binarySearch = require('./binary-search');\n var ArraySet = require('./array-set').ArraySet;\n var base64VLQ = require('./base64-vlq');\n\n /**\n * A SourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\n function SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names, true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n }\n\n /**\n * Create a SourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns SourceMapConsumer\n */\n SourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(SourceMapConsumer.prototype);\n\n smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n smc.__generatedMappings = aSourceMap._mappings.slice()\n .sort(util.compareByGeneratedPositions);\n smc.__originalMappings = aSourceMap._mappings.slice()\n .sort(util.compareByOriginalPositions);\n\n return smc;\n };\n\n /**\n * The version of the source mapping spec that we are consuming.\n */\n SourceMapConsumer.prototype._version = 3;\n\n /**\n * The list of original sources.\n */\n Object.defineProperty(SourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n });\n\n // `__generatedMappings` and `__originalMappings` are arrays that hold the\n // parsed mapping coordinates from the source map's \"mappings\" attribute. They\n // are lazily instantiated, accessed via the `_generatedMappings` and\n // `_originalMappings` getters respectively, and we only parse the mappings\n // and create these arrays once queried for a source location. We jump through\n // these hoops because there can be many thousands of mappings, and parsing\n // them is expensive, so we only want to do it if we must.\n //\n // Each object in the arrays is of the form:\n //\n // {\n // generatedLine: The line number in the generated code,\n // generatedColumn: The column number in the generated code,\n // source: The path to the original source file that generated this\n // chunk of code,\n // originalLine: The line number in the original source that\n // corresponds to this chunk of generated code,\n // originalColumn: The column number in the original source that\n // corresponds to this chunk of generated code,\n // name: The name of the original symbol which generated this chunk of\n // code.\n // }\n //\n // All properties except for `generatedLine` and `generatedColumn` can be\n // `null`.\n //\n // `_generatedMappings` is ordered by the generated positions.\n //\n // `_originalMappings` is ordered by the original positions.\n\n SourceMapConsumer.prototype.__generatedMappings = null;\n Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n });\n\n SourceMapConsumer.prototype.__originalMappings = null;\n Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n });\n\n /**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n SourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var mappingSeparator = /^[,;]/;\n var str = aStr;\n var mapping;\n var temp;\n\n while (str.length > 0) {\n if (str.charAt(0) === ';') {\n generatedLine++;\n str = str.slice(1);\n previousGeneratedColumn = 0;\n }\n else if (str.charAt(0) === ',') {\n str = str.slice(1);\n }\n else {\n mapping = {};\n mapping.generatedLine = generatedLine;\n\n // Generated column.\n temp = base64VLQ.decode(str);\n mapping.generatedColumn = previousGeneratedColumn + temp.value;\n previousGeneratedColumn = mapping.generatedColumn;\n str = temp.rest;\n\n if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) {\n // Original source.\n temp = base64VLQ.decode(str);\n mapping.source = this._sources.at(previousSource + temp.value);\n previousSource += temp.value;\n str = temp.rest;\n if (str.length === 0 || mappingSeparator.test(str.charAt(0))) {\n throw new Error('Found a source, but no line and column');\n }\n\n // Original line.\n temp = base64VLQ.decode(str);\n mapping.originalLine = previousOriginalLine + temp.value;\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n str = temp.rest;\n if (str.length === 0 || mappingSeparator.test(str.charAt(0))) {\n throw new Error('Found a source and line, but no column');\n }\n\n // Original column.\n temp = base64VLQ.decode(str);\n mapping.originalColumn = previousOriginalColumn + temp.value;\n previousOriginalColumn = mapping.originalColumn;\n str = temp.rest;\n\n if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) {\n // Original name.\n temp = base64VLQ.decode(str);\n mapping.name = this._names.at(previousName + temp.value);\n previousName += temp.value;\n str = temp.rest;\n }\n }\n\n this.__generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n this.__originalMappings.push(mapping);\n }\n }\n }\n\n this.__originalMappings.sort(util.compareByOriginalPositions);\n };\n\n /**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\n SourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator);\n };\n\n /**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\n SourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var mapping = this._findMapping(needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositions);\n\n if (mapping) {\n var source = util.getArg(mapping, 'source', null);\n if (source && this.sourceRoot) {\n source = util.join(this.sourceRoot, source);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: util.getArg(mapping, 'name', null)\n };\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n /**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * availible.\n */\n SourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n };\n\n /**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\n SourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n if (this.sourceRoot) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n\n var mapping = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions);\n\n if (mapping) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null)\n };\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n SourceMapConsumer.GENERATED_ORDER = 1;\n SourceMapConsumer.ORIGINAL_ORDER = 2;\n\n /**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\n SourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source;\n if (source && sourceRoot) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name\n };\n }).forEach(aCallback, context);\n };\n\n exports.SourceMapConsumer = SourceMapConsumer;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/binary-search', ['require', 'exports', 'module' , ], function(require, exports, module) {\n\n /**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n */\n function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the next\n // closest element that is less than that element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element which is less than the one we are searching for, so we\n // return null.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return aHaystack[mid];\n }\n else if (cmp > 0) {\n // aHaystack[mid] is greater than our needle.\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare);\n }\n // We did not find an exact match, return the next closest one\n // (termination case 2).\n return aHaystack[mid];\n }\n else {\n // aHaystack[mid] is less than our needle.\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare);\n }\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (2) or (3) and return the appropriate thing.\n return aLow < 0\n ? null\n : aHaystack[aLow];\n }\n }\n\n /**\n * This is an implementation of binary search which will always try and return\n * the next lowest value checked if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n */\n exports.search = function search(aNeedle, aHaystack, aCompare) {\n return aHaystack.length > 0\n ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare)\n : null;\n };\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/source-node', ['require', 'exports', 'module' , 'source-map/source-map-generator', 'source-map/util'], function(require, exports, module) {\n\n var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\n var util = require('./util');\n\n /**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\n function SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine === undefined ? null : aLine;\n this.column = aColumn === undefined ? null : aColumn;\n this.source = aSource === undefined ? null : aSource;\n this.name = aName === undefined ? null : aName;\n if (aChunks != null) this.add(aChunks);\n }\n\n /**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n */\n SourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // The generated code\n // Processed fragments are removed from this array.\n var remainingLines = aGeneratedCode.split('\\n');\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping === null) {\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(remainingLines.shift() + \"\\n\");\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n } else {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n var code = \"\";\n // Associate full lines with \"lastMapping\"\n do {\n code += remainingLines.shift() + \"\\n\";\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n } while (lastGeneratedLine < mapping.generatedLine);\n // When we reached the correct line, we add code until we\n // reach the correct column too.\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n code += nextLine.substr(0, mapping.generatedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n // Create the SourceNode.\n addMappingWithCode(lastMapping, code);\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n }\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n // Associate the remaining code in the current line with \"lastMapping\"\n // and add the remaining lines without any mapping\n addMappingWithCode(lastMapping, remainingLines.join(\"\\n\"));\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content) {\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n mapping.source,\n code,\n mapping.name));\n }\n }\n };\n\n /**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\n SourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk instanceof SourceNode || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n };\n\n /**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\n SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk instanceof SourceNode || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n };\n\n /**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\n SourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk instanceof SourceNode) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n };\n\n /**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\n SourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n };\n\n /**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\n SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild instanceof SourceNode) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n };\n\n /**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\n SourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n /**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\n SourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i] instanceof SourceNode) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n /**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\n SourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n };\n\n /**\n * Returns the string representation of this source node along with a source\n * map.\n */\n SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n chunk.split('').forEach(function (ch) {\n if (ch === '\\n') {\n generated.line++;\n generated.column = 0;\n } else {\n generated.column++;\n }\n });\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n };\n\n exports.SourceNode = SourceNode;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n///////////////////////////////////////////////////////////////////////////////\n\nthis.sourceMap = {\n SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer,\n SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator,\n SourceNode: require('source-map/source-node').SourceNode\n};\n\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/SourceMap.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/source-map-url.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(){\nvar define=null;\n\n\n\n\nvoid (function(root,factory){\nif(typeof define === \"function\" && define.amd){\ndefine(factory);}else \nif(typeof exports === \"object\"){\nmodule.exports = factory();}else \n{\nroot.sourceMappingURL = factory();}})(\n\nthis,function(){\n\nvar innerRegex=/[#@] sourceMappingURL=([^\\s'\"]*)/;\n\nvar regex=RegExp(\n\"(?:\" + \n\"/\\\\*\" + \n\"(?:\\\\s*\\r?\\n(?://)?)?\" + \n\"(?:\" + innerRegex.source + \")\" + \n\"\\\\s*\" + \n\"\\\\*/\" + \n\"|\" + \n\"//(?:\" + innerRegex.source + \")\" + \n\")\" + \n\"\\\\s*$\");\n\n\nreturn {\n\nregex:regex,\n_innerRegex:innerRegex,\n\ngetFrom:function(code){\nvar match=code.match(regex);\nreturn match?match[1] || match[2] || \"\":null;},\n\n\nexistsIn:function(code){\nreturn regex.test(code);},\n\n\nremoveFrom:function(code){\nreturn code.replace(regex,\"\");},\n\n\ninsertBefore:function(code,string){\nvar match=code.match(regex);\nif(match){\nreturn code.slice(0,match.index) + string + code.slice(match.index);}else \n{\nreturn code + string;}}};});})();","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * This is a third-party micro-library grabbed from:\n * https://github.com/lydell/source-map-url\n *\n * @nolint\n */\n/* eslint-disable */\n\n(function() {\n var define = null; // Hack to make it work with our packager\n\n// Copyright 2014 Simon Lydell\n// X11 (“MIT”) Licensed. (See LICENSE.)\n\nvoid (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(factory)\n } else if (typeof exports === \"object\") {\n module.exports = factory()\n } else {\n root.sourceMappingURL = factory()\n }\n}(this, function() {\n\n var innerRegex = /[#@] sourceMappingURL=([^\\s'\"]*)/\n\n var regex = RegExp(\n \"(?:\" +\n \"/\\\\*\" +\n \"(?:\\\\s*\\r?\\n(?://)?)?\" +\n \"(?:\" + innerRegex.source + \")\" +\n \"\\\\s*\" +\n \"\\\\*/\" +\n \"|\" +\n \"//(?:\" + innerRegex.source + \")\" +\n \")\" +\n \"\\\\s*$\"\n )\n\n return {\n\n regex: regex,\n _innerRegex: innerRegex,\n\n getFrom: function(code) {\n var match = code.match(regex)\n return (match ? match[1] || match[2] || \"\" : null)\n },\n\n existsIn: function(code) {\n return regex.test(code)\n },\n\n removeFrom: function(code) {\n return code.replace(regex, \"\")\n },\n\n insertBefore: function(code, string) {\n var match = code.match(regex)\n if (match) {\n return code.slice(0, match.index) + string + code.slice(match.index)\n } else {\n return code + string\n }\n }\n }\n\n}));\n\n/** End of the third-party code */\n\n})();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/source-map-url.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/parseErrorStack.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar stacktraceParser=require('stacktrace-parser');\n\nfunction resolveSourceMaps(sourceMapInstance,stackFrame){\ntry{\nvar orig=sourceMapInstance.originalPositionFor({\nline:stackFrame.lineNumber,\ncolumn:stackFrame.column});\n\nif(orig){\nstackFrame.file = orig.source;\nstackFrame.lineNumber = orig.line;\nstackFrame.column = orig.column;}}\n\ncatch(innerEx) {}}\n\n\n\nfunction parseErrorStack(e,sourceMapInstance){\nif(!e || !e.stack){\nreturn [];}\n\n\nvar stack=stacktraceParser.parse(e.stack);\n\nvar framesToPop=e.framesToPop || 0;\nwhile(framesToPop--) {\nstack.shift();}\n\n\nif(sourceMapInstance){\nstack.forEach(resolveSourceMaps.bind(null,sourceMapInstance));}\n\n\nreturn stack;}\n\n\nmodule.exports = parseErrorStack;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule parseErrorStack\n */\n'use strict';\n\nvar stacktraceParser = require('stacktrace-parser');\n\nfunction resolveSourceMaps(sourceMapInstance, stackFrame) {\n try {\n var orig = sourceMapInstance.originalPositionFor({\n line: stackFrame.lineNumber,\n column: stackFrame.column,\n });\n if (orig) {\n stackFrame.file = orig.source;\n stackFrame.lineNumber = orig.line;\n stackFrame.column = orig.column;\n }\n } catch (innerEx) {\n }\n}\n\nfunction parseErrorStack(e, sourceMapInstance) {\n if (!e || !e.stack) {\n return [];\n }\n\n var stack = stacktraceParser.parse(e.stack);\n\n var framesToPop = e.framesToPop || 0;\n while (framesToPop--) {\n stack.shift();\n }\n\n if (sourceMapInstance) {\n stack.forEach(resolveSourceMaps.bind(null, sourceMapInstance));\n }\n\n return stack;\n}\n\nmodule.exports = parseErrorStack;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/parseErrorStack.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/stacktrace-parser/index.js":{"data":{"code":"module.exports = require('./lib/stacktrace-parser.js');","sourceCode":"module.exports = require('./lib/stacktrace-parser.js');\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/stacktrace-parser/index.js"},"mtime":1439316051000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/stacktrace-parser/lib/stacktrace-parser.js":{"data":{"code":"var \n\nUNKNOWN_FUNCTION='<unknown>';\n\nvar StackTraceParser={\n\n\n\n\nparse:function(stackString){\nvar chrome=/^\\s*at (?:(?:(?:Anonymous function)?|((?:\\[object object\\])?\\S+(?: \\[as \\S+\\])?)) )?\\(?((?:file|http|https):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\ngecko=/^(?:\\s*(\\S*)(?:\\((.*?)\\))?@)?((?:\\w).*?):(\\d+)(?::(\\d+))?\\s*$/i,\nnode=/^\\s*at (?:((?:\\[object object\\])?\\S+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\nlines=stackString.split('\\n'),\nstack=[],\nparts,\nelement;\n\nfor(var i=0,j=lines.length;i < j;++i) {\nif(parts = gecko.exec(lines[i])){\nelement = {\n'file':parts[3],\n'methodName':parts[1] || UNKNOWN_FUNCTION,\n'lineNumber':+parts[4],\n'column':parts[5]?+parts[5]:null};}else \n\nif(parts = chrome.exec(lines[i])){\nelement = {\n'file':parts[2],\n'methodName':parts[1] || UNKNOWN_FUNCTION,\n'lineNumber':+parts[3],\n'column':parts[4]?+parts[4]:null};}else \n\nif(parts = node.exec(lines[i])){\nelement = {\n'file':parts[2],\n'methodName':parts[1] || UNKNOWN_FUNCTION,\n'lineNumber':+parts[3],\n'column':parts[4]?+parts[4]:null};}else \n\n{\ncontinue;}\n\n\nstack.push(element);}\n\n\nreturn stack;}};\n\n\n\n\nmodule.exports = StackTraceParser;","sourceCode":"\n\nvar UNKNOWN_FUNCTION = '<unknown>';\n\nvar StackTraceParser = {\n /**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/occ/TraceKit)\n */\n parse: function(stackString) {\n var chrome = /^\\s*at (?:(?:(?:Anonymous function)?|((?:\\[object object\\])?\\S+(?: \\[as \\S+\\])?)) )?\\(?((?:file|http|https):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\n gecko = /^(?:\\s*(\\S*)(?:\\((.*?)\\))?@)?((?:\\w).*?):(\\d+)(?::(\\d+))?\\s*$/i,\n node = /^\\s*at (?:((?:\\[object object\\])?\\S+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\n lines = stackString.split('\\n'),\n stack = [],\n parts,\n element;\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = gecko.exec(lines[i]))) {\n element = {\n 'file': parts[3],\n 'methodName': parts[1] || UNKNOWN_FUNCTION,\n 'lineNumber': +parts[4],\n 'column': parts[5] ? +parts[5] : null\n };\n } else if ((parts = chrome.exec(lines[i]))) {\n element = {\n 'file': parts[2],\n 'methodName': parts[1] || UNKNOWN_FUNCTION,\n 'lineNumber': +parts[3],\n 'column': parts[4] ? +parts[4] : null\n };\n } else if ((parts = node.exec(lines[i]))) {\n element = {\n 'file': parts[2],\n 'methodName': parts[1] || UNKNOWN_FUNCTION,\n 'lineNumber': +parts[3],\n 'column': parts[4] ? +parts[4] : null\n };\n } else {\n continue;\n }\n\n stack.push(element);\n }\n\n return stack;\n }\n};\n\n\nmodule.exports = StackTraceParser;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/stacktrace-parser/lib/stacktrace-parser.js"},"mtime":1439316051000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/Platform.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Platform={\nOS:'ios'};\n\n\nmodule.exports = Platform;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Platform\n * @flow\n */\n\n'use strict';\n\nvar Platform = {\n OS: 'ios',\n};\n\nmodule.exports = Platform;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/Platform.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/XMLHttpRequest.ios.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar FormData=require('FormData');\nvar RCTNetworking=require('NativeModules').Networking;\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\n\nvar XMLHttpRequestBase=require('XMLHttpRequestBase');var \n\nXMLHttpRequest=(function(_XMLHttpRequestBase){_inherits(XMLHttpRequest,_XMLHttpRequestBase);\n\n\n\n\nfunction XMLHttpRequest(){_classCallCheck(this,XMLHttpRequest);\n_get(Object.getPrototypeOf(XMLHttpRequest.prototype),'constructor',this).call(this);\nthis._requestId = null;\nthis._subscriptions = [];}_createClass(XMLHttpRequest,[{key:'_didCreateRequest',value:\n\n\nfunction _didCreateRequest(requestId){var _this=this;\nthis._requestId = requestId;\nthis._subscriptions.push(RCTDeviceEventEmitter.addListener(\n'didReceiveNetworkResponse',\nfunction(args){return _this._didReceiveResponse.call(_this,args[0],args[1],args[2]);}));\n\nthis._subscriptions.push(RCTDeviceEventEmitter.addListener(\n'didReceiveNetworkData',\nfunction(args){return _this._didReceiveData.call(_this,args[0],args[1]);}));\n\nthis._subscriptions.push(RCTDeviceEventEmitter.addListener(\n'didCompleteNetworkResponse',\nfunction(args){return _this._didCompleteResponse.call(_this,args[0],args[1]);}));}},{key:'_didReceiveResponse',value:\n\n\n\nfunction _didReceiveResponse(requestId,status,responseHeaders){\nif(requestId === this._requestId){\nthis.status = status;\nthis.setResponseHeaders(responseHeaders);\nthis.setReadyState(this.HEADERS_RECEIVED);}}},{key:'_didReceiveData',value:\n\n\n\nfunction _didReceiveData(requestId,responseText){\nif(requestId === this._requestId){\nif(!this.responseText){\nthis.responseText = responseText;}else \n{\nthis.responseText += responseText;}\n\nthis.setReadyState(this.LOADING);}}},{key:'_didCompleteResponse',value:\n\n\n\nfunction _didCompleteResponse(requestId,error){\nif(requestId === this._requestId){\nif(error){\nthis.responseText = error;}\n\nthis._clearSubscriptions();\nthis._requestId = null;\nthis.setReadyState(this.DONE);}}},{key:'_clearSubscriptions',value:\n\n\n\nfunction _clearSubscriptions(){\nfor(var i=0;i < this._subscriptions.length;i++) {\nvar sub=this._subscriptions[i];\nsub.remove();}\n\nthis._subscriptions = [];}},{key:'sendImpl',value:\n\n\nfunction sendImpl(method,url,headers,data){\nif(typeof data === 'string'){\ndata = {string:data};}\n\nif(data instanceof FormData){\ndata = {formData:data.getParts()};}\n\nRCTNetworking.sendRequest(\n{\nmethod:method,\nurl:url,\ndata:data,\nheaders:headers,\nincrementalUpdates:this.onreadystatechange?true:false},\n\nthis._didCreateRequest.bind(this));}},{key:'abortImpl',value:\n\n\n\nfunction abortImpl(){\nif(this._requestId){\nRCTNetworking.cancelRequest(this._requestId);\nthis._clearSubscriptions();\nthis._requestId = null;}}}]);return XMLHttpRequest;})(XMLHttpRequestBase);\n\n\n\n\nmodule.exports = XMLHttpRequest;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule XMLHttpRequest\n * @flow\n */\n'use strict';\n\nvar FormData = require('FormData');\nvar RCTNetworking = require('NativeModules').Networking;\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\n\nvar XMLHttpRequestBase = require('XMLHttpRequestBase');\n\nclass XMLHttpRequest extends XMLHttpRequestBase {\n\n _requestId: ?number;\n _subscriptions: [any];\n\n constructor() {\n super();\n this._requestId = null;\n this._subscriptions = [];\n }\n\n _didCreateRequest(requestId: number): void {\n this._requestId = requestId;\n this._subscriptions.push(RCTDeviceEventEmitter.addListener(\n 'didReceiveNetworkResponse',\n (args) => this._didReceiveResponse.call(this, args[0], args[1], args[2])\n ));\n this._subscriptions.push(RCTDeviceEventEmitter.addListener(\n 'didReceiveNetworkData',\n (args) => this._didReceiveData.call(this, args[0], args[1])\n ));\n this._subscriptions.push(RCTDeviceEventEmitter.addListener(\n 'didCompleteNetworkResponse',\n (args) => this._didCompleteResponse.call(this, args[0], args[1])\n ));\n }\n\n _didReceiveResponse(requestId: number, status: number, responseHeaders: ?Object): void {\n if (requestId === this._requestId) {\n this.status = status;\n this.setResponseHeaders(responseHeaders);\n this.setReadyState(this.HEADERS_RECEIVED);\n }\n }\n\n _didReceiveData(requestId: number, responseText: string): void {\n if (requestId === this._requestId) {\n if (!this.responseText) {\n this.responseText = responseText;\n } else {\n this.responseText += responseText;\n }\n this.setReadyState(this.LOADING);\n }\n }\n\n _didCompleteResponse(requestId: number, error: string): void {\n if (requestId === this._requestId) {\n if (error) {\n this.responseText = error;\n }\n this._clearSubscriptions();\n this._requestId = null;\n this.setReadyState(this.DONE);\n }\n }\n\n _clearSubscriptions(): void {\n for (var i = 0; i < this._subscriptions.length; i++) {\n var sub = this._subscriptions[i];\n sub.remove();\n }\n this._subscriptions = [];\n }\n\n sendImpl(method: ?string, url: ?string, headers: Object, data: any): void {\n if (typeof data === 'string') {\n data = {string: data};\n }\n if (data instanceof FormData) {\n data = {formData: data.getParts()};\n }\n RCTNetworking.sendRequest(\n {\n method,\n url,\n data,\n headers,\n incrementalUpdates: this.onreadystatechange ? true : false,\n },\n this._didCreateRequest.bind(this)\n );\n }\n\n abortImpl(): void {\n if (this._requestId) {\n RCTNetworking.cancelRequest(this._requestId);\n this._clearSubscriptions();\n this._requestId = null;\n }\n }\n}\n\nmodule.exports = XMLHttpRequest;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/XMLHttpRequest.ios.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/FormData.js":{"data":{"code":"'use strict';var _slicedToArray=(function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n = (_s = _i.next()).done);_n = true) {_arr.push(_s.value);if(i && _arr.length === i)break;}}catch(err) {_d = true;_e = err;}finally {try{if(!_n && _i['return'])_i['return']();}finally {if(_d)throw _e;}}return _arr;}return function(arr,i){if(Array.isArray(arr)){return arr;}else if(Symbol.iterator in Object(arr)){return sliceIterator(arr,i);}else {throw new TypeError('Invalid attempt to destructure non-iterable instance');}};})();var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nFormData=(function(){\n\n\n\nfunction FormData(){_classCallCheck(this,FormData);\nthis._parts = [];\nthis._partsByKey = {};}_createClass(FormData,[{key:'append',value:\n\n\nfunction append(key,value){\nvar parts=this._partsByKey[key];\nif(parts){\n\n\n\n\nparts[1] = value;\nreturn;}\n\nparts = [key,value];\nthis._parts.push(parts);\nthis._partsByKey[key] = parts;}},{key:'getParts',value:\n\n\nfunction getParts(){\nreturn this._parts.map(function(_ref){var _ref2=_slicedToArray(_ref,2);var name=_ref2[0];var value=_ref2[1];\nif(typeof value === 'string'){\nreturn {\nstring:value,\nheaders:{\n'content-disposition':'form-data; name=\"' + name + '\"'}};}\n\n\n\nvar contentDisposition='form-data; name=\"' + name + '\"';\nif(typeof value.name === 'string'){\ncontentDisposition += '; filename=\"' + value.name + '\"';}\n\nreturn _extends({},\nvalue,{\nheaders:{'content-disposition':contentDisposition}});});}}]);return FormData;})();\n\n\n\n\n\nmodule.exports = FormData;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FormData\n * @flow\n */\n'use strict';\n\ntype FormDataValue = any;\ntype FormDataPart = [string, FormDataValue];\n\n/**\n * Polyfill for XMLHttpRequest2 FormData API, allowing multipart POST requests\n * with mixed data (string, native files) to be submitted via XMLHttpRequest.\n */\nclass FormData {\n _parts: Array<FormDataPart>;\n _partsByKey: {[key: string]: FormDataPart};\n\n constructor() {\n this._parts = [];\n this._partsByKey = {};\n }\n\n append(key: string, value: FormDataValue) {\n var parts = this._partsByKey[key];\n if (parts) {\n // It's a bit unclear what the behaviour should be in this case.\n // The XMLHttpRequest spec doesn't specify it, while MDN says that\n // the any new values should appended to existing values. We're not\n // doing that for now -- it's tedious and doesn't seem worth the effort.\n parts[1] = value;\n return;\n }\n parts = [key, value];\n this._parts.push(parts);\n this._partsByKey[key] = parts;\n }\n\n getParts(): Array<FormDataValue> {\n return this._parts.map(([name, value]) => {\n if (typeof value === 'string') {\n return {\n string: value,\n headers: {\n 'content-disposition': 'form-data; name=\"' + name + '\"',\n },\n };\n }\n var contentDisposition = 'form-data; name=\"' + name + '\"';\n if (typeof value.name === 'string') {\n contentDisposition += '; filename=\"' + value.name + '\"';\n }\n return {\n ...value,\n headers: {'content-disposition': contentDisposition},\n };\n });\n }\n}\n\nmodule.exports = FormData;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/FormData.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/XMLHttpRequestBase.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nXMLHttpRequestBase=(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction XMLHttpRequestBase(){_classCallCheck(this,XMLHttpRequestBase);\nthis.UNSENT = 0;\nthis.OPENED = 1;\nthis.HEADERS_RECEIVED = 2;\nthis.LOADING = 3;\nthis.DONE = 4;\n\nthis.onreadystatechange = null;\nthis.onload = null;\nthis.upload = undefined;\n\nthis._reset();\nthis._method = null;\nthis._url = null;\nthis._aborted = false;}_createClass(XMLHttpRequestBase,[{key:'_reset',value:\n\n\nfunction _reset(){\nthis.readyState = this.UNSENT;\nthis.responseHeaders = undefined;\nthis.responseText = '';\nthis.status = 0;\n\nthis._headers = {};\nthis._sent = false;\nthis._lowerCaseResponseHeaders = {};}},{key:'getAllResponseHeaders',value:\n\n\nfunction getAllResponseHeaders(){\nif(!this.responseHeaders){\n\nreturn null;}\n\nvar headers=this.responseHeaders || {};\nreturn Object.keys(headers).map(function(headerName){\nreturn headerName + ': ' + headers[headerName];}).\njoin('\\n');}},{key:'getResponseHeader',value:\n\n\nfunction getResponseHeader(header){\nvar value=this._lowerCaseResponseHeaders[header.toLowerCase()];\nreturn value !== undefined?value:null;}},{key:'setRequestHeader',value:\n\n\nfunction setRequestHeader(header,value){\nif(this.readyState !== this.OPENED){\nthrow new Error('Request has not been opened');}\n\nthis._headers[header.toLowerCase()] = value;}},{key:'open',value:\n\n\nfunction open(method,url,async){\n\nif(this.readyState !== this.UNSENT){\nthrow new Error('Cannot open, already sending');}\n\nif(async !== undefined && !async){\n\nthrow new Error('Synchronous http requests are not supported');}\n\nthis._reset();\nthis._method = method;\nthis._url = url;\nthis._aborted = false;\nthis.setReadyState(this.OPENED);}},{key:'sendImpl',value:\n\n\nfunction sendImpl(method,url,headers,data){\nthrow new Error('Subclass must define sendImpl method');}},{key:'abortImpl',value:\n\n\nfunction abortImpl(){\nthrow new Error('Subclass must define abortImpl method');}},{key:'send',value:\n\n\nfunction send(data){\nif(this.readyState !== this.OPENED){\nthrow new Error('Request has not been opened');}\n\nif(this._sent){\nthrow new Error('Request has already been sent');}\n\nthis._sent = true;\nthis.sendImpl(this._method,this._url,this._headers,data);}},{key:'abort',value:\n\n\nfunction abort(){\nthis._aborted = true;\nthis.abortImpl();\n\n\nif(!(this.readyState === this.UNSENT || \nthis.readyState === this.OPENED && !this._sent || \nthis.readyState === this.DONE)){\nthis._reset();\nthis.setReadyState(this.DONE);}\n\n\nthis._reset();}},{key:'callback',value:\n\n\nfunction callback(status,responseHeaders,responseText){\nif(this._aborted){\nreturn;}\n\nthis.status = status;\nthis.setResponseHeaders(responseHeaders || {});\nthis.responseText = responseText;\nthis.setReadyState(this.DONE);}},{key:'setResponseHeaders',value:\n\n\nfunction setResponseHeaders(responseHeaders){\nthis.responseHeaders = responseHeaders || null;\nvar headers=responseHeaders || {};\nthis._lowerCaseResponseHeaders = \nObject.keys(headers).reduce(function(lcaseHeaders,headerName){\nlcaseHeaders[headerName.toLowerCase()] = headers[headerName];\nreturn lcaseHeaders;},\n{});}},{key:'setReadyState',value:\n\n\nfunction setReadyState(newState){\nthis.readyState = newState;\n\nvar onreadystatechange=this.onreadystatechange;\nif(onreadystatechange){\n\n\nonreadystatechange(null);}\n\nif(newState === this.DONE && !this._aborted){\nthis._sendLoad();}}},{key:'_sendLoad',value:\n\n\n\nfunction _sendLoad(){\n\nvar onload=this.onload;\nif(onload){\n\n\nonload(null);}}}]);return XMLHttpRequestBase;})();\n\n\n\n\nmodule.exports = XMLHttpRequestBase;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule XMLHttpRequestBase\n * @flow\n */\n'use strict';\n\n/**\n * Shared base for platform-specific XMLHttpRequest implementations.\n */\nclass XMLHttpRequestBase {\n\n UNSENT: number;\n OPENED: number;\n HEADERS_RECEIVED: number;\n LOADING: number;\n DONE: number;\n\n onreadystatechange: ?Function;\n onload: ?Function;\n upload: any;\n readyState: number;\n responseHeaders: ?Object;\n responseText: ?string;\n status: number;\n\n _method: ?string;\n _url: ?string;\n _headers: Object;\n _sent: boolean;\n _aborted: boolean;\n _lowerCaseResponseHeaders: Object;\n\n constructor() {\n this.UNSENT = 0;\n this.OPENED = 1;\n this.HEADERS_RECEIVED = 2;\n this.LOADING = 3;\n this.DONE = 4;\n\n this.onreadystatechange = null;\n this.onload = null;\n this.upload = undefined; /* Upload not supported yet */\n\n this._reset();\n this._method = null;\n this._url = null;\n this._aborted = false;\n }\n\n _reset() {\n this.readyState = this.UNSENT;\n this.responseHeaders = undefined;\n this.responseText = '';\n this.status = 0;\n\n this._headers = {};\n this._sent = false;\n this._lowerCaseResponseHeaders = {};\n }\n\n getAllResponseHeaders(): ?string {\n if (!this.responseHeaders) {\n // according to the spec, return null if no response has been received\n return null;\n }\n var headers = this.responseHeaders || {};\n return Object.keys(headers).map((headerName) => {\n return headerName + ': ' + headers[headerName];\n }).join('\\n');\n }\n\n getResponseHeader(header: string): ?string {\n var value = this._lowerCaseResponseHeaders[header.toLowerCase()];\n return value !== undefined ? value : null;\n }\n\n setRequestHeader(header: string, value: any): void {\n if (this.readyState !== this.OPENED) {\n throw new Error('Request has not been opened');\n }\n this._headers[header.toLowerCase()] = value;\n }\n\n open(method: string, url: string, async: ?boolean): void {\n /* Other optional arguments are not supported yet */\n if (this.readyState !== this.UNSENT) {\n throw new Error('Cannot open, already sending');\n }\n if (async !== undefined && !async) {\n // async is default\n throw new Error('Synchronous http requests are not supported');\n }\n this._reset();\n this._method = method;\n this._url = url;\n this._aborted = false;\n this.setReadyState(this.OPENED);\n }\n\n sendImpl(method: ?string, url: ?string, headers: Object, data: any): void {\n throw new Error('Subclass must define sendImpl method');\n }\n\n abortImpl(): void {\n throw new Error('Subclass must define abortImpl method');\n }\n\n send(data: any): void {\n if (this.readyState !== this.OPENED) {\n throw new Error('Request has not been opened');\n }\n if (this._sent) {\n throw new Error('Request has already been sent');\n }\n this._sent = true;\n this.sendImpl(this._method, this._url, this._headers, data);\n }\n\n abort(): void {\n this._aborted = true;\n this.abortImpl();\n // only call onreadystatechange if there is something to abort,\n // below logic is per spec\n if (!(this.readyState === this.UNSENT ||\n (this.readyState === this.OPENED && !this._sent) ||\n this.readyState === this.DONE)) {\n this._reset();\n this.setReadyState(this.DONE);\n }\n // Reset again after, in case modified in handler\n this._reset();\n }\n\n callback(status: number, responseHeaders: ?Object, responseText: string): void {\n if (this._aborted) {\n return;\n }\n this.status = status;\n this.setResponseHeaders(responseHeaders || {});\n this.responseText = responseText;\n this.setReadyState(this.DONE);\n }\n\n setResponseHeaders(responseHeaders: ?Object): void {\n this.responseHeaders = responseHeaders || null;\n var headers = responseHeaders || {};\n this._lowerCaseResponseHeaders =\n Object.keys(headers).reduce((lcaseHeaders, headerName) => {\n lcaseHeaders[headerName.toLowerCase()] = headers[headerName];\n return lcaseHeaders;\n }, {});\n }\n\n setReadyState(newState: number): void {\n this.readyState = newState;\n // TODO: workaround flow bug with nullable function checks\n var onreadystatechange = this.onreadystatechange;\n if (onreadystatechange) {\n // We should send an event to handler, but since we don't process that\n // event anywhere, let's leave it empty\n onreadystatechange(null);\n }\n if (newState === this.DONE && !this._aborted) {\n this._sendLoad();\n }\n }\n\n _sendLoad(): void {\n // TODO: workaround flow bug with nullable function checks\n var onload = this.onload;\n if (onload) {\n // We should send an event to handler, but since we don't process that\n // event anywhere, let's leave it empty\n onload(null);\n }\n }\n}\n\nmodule.exports = XMLHttpRequestBase;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/XMLHttpRequestBase.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Fetch/fetch.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar self={};\n\n/**\n * Copyright (c) 2014 GitHub, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @preserve-header\n */\n(function(){\n'use strict';\n\nif(self.fetch){\nreturn;}\n\n\nfunction normalizeName(name){\nif(typeof name !== 'string'){\nname = name.toString();}\n\nif(/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)){\nthrow new TypeError('Invalid character in header field name');}\n\nreturn name.toLowerCase();}\n\n\nfunction normalizeValue(value){\nif(typeof value !== 'string'){\nvalue = value.toString();}\n\nreturn value;}\n\n\nfunction Headers(headers){\nthis.map = {};\n\nvar self=this;\nif(headers instanceof Headers){\nheaders.forEach(function(name,values){\nvalues.forEach(function(value){\nself.append(name,value);});});}else \n\n\n\nif(headers){\nObject.getOwnPropertyNames(headers).forEach(function(name){\nself.append(name,headers[name]);});}}\n\n\n\n\nHeaders.prototype.append = function(name,value){\nname = normalizeName(name);\nvalue = normalizeValue(value);\nvar list=this.map[name];\nif(!list){\nlist = [];\nthis.map[name] = list;}\n\nlist.push(value);};\n\n\nHeaders.prototype['delete'] = function(name){\ndelete this.map[normalizeName(name)];};\n\n\nHeaders.prototype.get = function(name){\nvar values=this.map[normalizeName(name)];\nreturn values?values[0]:null;};\n\n\nHeaders.prototype.getAll = function(name){\nreturn this.map[normalizeName(name)] || [];};\n\n\nHeaders.prototype.has = function(name){\nreturn this.map.hasOwnProperty(normalizeName(name));};\n\n\nHeaders.prototype.set = function(name,value){\nthis.map[normalizeName(name)] = [normalizeValue(value)];};\n\n\n\nHeaders.prototype.forEach = function(callback){\nvar self=this;\nObject.getOwnPropertyNames(this.map).forEach(function(name){\ncallback(name,self.map[name]);});};\n\n\n\nfunction consumed(body){\nif(body.bodyUsed){\nreturn Promise.reject(new TypeError('Already read'));}\n\nbody.bodyUsed = true;}\n\n\nfunction fileReaderReady(reader){\nreturn new Promise(function(resolve,reject){\nreader.onload = function(){\nresolve(reader.result);};\n\nreader.onerror = function(){\nreject(reader.error);};});}\n\n\n\n\nfunction readBlobAsArrayBuffer(blob){\nvar reader=new FileReader();\nreader.readAsArrayBuffer(blob);\nreturn fileReaderReady(reader);}\n\n\nfunction readBlobAsText(blob){\nvar reader=new FileReader();\nreader.readAsText(blob);\nreturn fileReaderReady(reader);}\n\n\nvar support={\nblob:'FileReader' in self && 'Blob' in self && (function(){\ntry{\nnew Blob();\nreturn true;}\ncatch(e) {\nreturn false;}})(),\n\n\nformData:'FormData' in self};\n\n\nfunction Body(){\nthis.bodyUsed = false;\n\n\nthis._initBody = function(body){\nthis._bodyInit = body;\nif(typeof body === 'string'){\nthis._bodyText = body;}else \nif(support.blob && Blob.prototype.isPrototypeOf(body)){\nthis._bodyBlob = body;}else \nif(support.formData && FormData.prototype.isPrototypeOf(body)){\nthis._bodyFormData = body;}else \nif(!body){\nthis._bodyText = '';}else \n{\nthrow new Error('unsupported BodyInit type');}};\n\n\n\nif(support.blob){\nthis.blob = function(){\nvar rejected=consumed(this);\nif(rejected){\nreturn rejected;}\n\n\nif(this._bodyBlob){\nreturn Promise.resolve(this._bodyBlob);}else \nif(this._bodyFormData){\nthrow new Error('could not read FormData body as blob');}else \n{\nreturn Promise.resolve(new Blob([this._bodyText]));}};\n\n\n\nthis.arrayBuffer = function(){\nreturn this.blob().then(readBlobAsArrayBuffer);};\n\n\nthis.text = function(){\nvar rejected=consumed(this);\nif(rejected){\nreturn rejected;}\n\n\nif(this._bodyBlob){\nreturn readBlobAsText(this._bodyBlob);}else \nif(this._bodyFormData){\nthrow new Error('could not read FormData body as text');}else \n{\nreturn Promise.resolve(this._bodyText);}};}else \n\n\n{\nthis.text = function(){\nvar rejected=consumed(this);\nreturn rejected?rejected:Promise.resolve(this._bodyText);};}\n\n\n\nif(support.formData){\nthis.formData = function(){\nreturn this.text().then(decode);};}\n\n\n\nthis.json = function(){\nreturn this.text().then(JSON.parse);};\n\n\nreturn this;}\n\n\n\nvar methods=['DELETE','GET','HEAD','OPTIONS','POST','PUT'];\n\nfunction normalizeMethod(method){\nvar upcased=method.toUpperCase();\nreturn methods.indexOf(upcased) > -1?upcased:method;}\n\n\nfunction Request(url,options){\noptions = options || {};\nthis.url = url;\n\nthis.credentials = options.credentials || 'omit';\nthis.headers = new Headers(options.headers);\nthis.method = normalizeMethod(options.method || 'GET');\nthis.mode = options.mode || null;\nthis.referrer = null;\n\nif((this.method === 'GET' || this.method === 'HEAD') && options.body){\nthrow new TypeError('Body not allowed for GET or HEAD requests');}\n\nthis._initBody(options.body);}\n\n\nfunction decode(body){\nvar form=new FormData();\nbody.trim().split('&').forEach(function(bytes){\nif(bytes){\nvar split=bytes.split('=');\nvar name=split.shift().replace(/\\+/g,' ');\nvar value=split.join('=').replace(/\\+/g,' ');\nform.append(decodeURIComponent(name),decodeURIComponent(value));}});\n\n\nreturn form;}\n\n\nfunction headers(xhr){\nvar head=new Headers();\nvar pairs=xhr.getAllResponseHeaders().trim().split('\\n');\npairs.forEach(function(header){\nvar split=header.trim().split(':');\nvar key=split.shift().trim();\nvar value=split.join(':').trim();\nhead.append(key,value);});\n\nreturn head;}\n\n\nBody.call(Request.prototype);\n\nfunction Response(bodyInit,options){\nif(!options){\noptions = {};}\n\n\nthis._initBody(bodyInit);\nthis.type = 'default';\nthis.url = null;\nthis.status = options.status;\nthis.ok = this.status >= 200 && this.status < 300;\nthis.statusText = options.statusText;\nthis.headers = options.headers instanceof Headers?options.headers:new Headers(options.headers);\nthis.url = options.url || '';}\n\n\nBody.call(Response.prototype);\n\nself.Headers = Headers;\nself.Request = Request;\nself.Response = Response;\n\nself.fetch = function(input,init){\n\nvar request;\nif(Request.prototype.isPrototypeOf(input) && !init){\nrequest = input;}else \n{\nrequest = new Request(input,init);}\n\n\nreturn new Promise(function(resolve,reject){\nvar xhr=new XMLHttpRequest();\nif(request.credentials === 'cors'){\nxhr.withCredentials = true;}\n\n\nfunction responseURL(){\nif('responseURL' in xhr){\nreturn xhr.responseURL;}\n\n\n\nif(/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())){\nreturn xhr.getResponseHeader('X-Request-URL');}\n\n\nreturn;}\n\n\nxhr.onload = function(){\nvar status=xhr.status === 1223?204:xhr.status;\nif(status < 100 || status > 599){\nreject(new TypeError('Network request failed'));\nreturn;}\n\nvar options={\nstatus:status,\nstatusText:xhr.statusText,\nheaders:headers(xhr),\nurl:responseURL()};\n\nvar body='response' in xhr?xhr.response:xhr.responseText;\nresolve(new Response(body,options));};\n\n\nxhr.onerror = function(){\nreject(new TypeError('Network request failed'));};\n\n\nxhr.open(request.method,request.url,true);\n\nif('responseType' in xhr && support.blob){\nxhr.responseType = 'blob';}\n\n\nrequest.headers.forEach(function(name,values){\nvalues.forEach(function(value){\nxhr.setRequestHeader(name,value);});});\n\n\n\nxhr.send(typeof request._bodyInit === 'undefined'?null:request._bodyInit);});};\n\n\nself.fetch.polyfill = true;})();\n\n\n\n\nmodule.exports = self;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * This is a third-party polyfill grabbed from:\n * https://github.com/github/fetch\n *\n * @providesModule fetch\n * @nolint\n */\n/* eslint-disable */\n'use strict';\n\nvar self = {};\n\n/**\n * Copyright (c) 2014 GitHub, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @preserve-header\n */\n(function() {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = name.toString();\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = value.toString();\n }\n return value\n }\n\n function Headers(headers) {\n this.map = {}\n\n var self = this\n if (headers instanceof Headers) {\n headers.forEach(function(name, values) {\n values.forEach(function(value) {\n self.append(name, value)\n })\n })\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n self.append(name, headers[name])\n })\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var list = this.map[name]\n if (!list) {\n list = []\n this.map[name] = list\n }\n list.push(value)\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n var values = this.map[normalizeName(name)]\n return values ? values[0] : null\n }\n\n Headers.prototype.getAll = function(name) {\n return this.map[normalizeName(name)] || []\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = [normalizeValue(value)]\n }\n\n // Instead of iterable for now.\n Headers.prototype.forEach = function(callback) {\n var self = this\n Object.getOwnPropertyNames(this.map).forEach(function(name) {\n callback(name, self.map[name])\n })\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n reader.readAsArrayBuffer(blob)\n return fileReaderReady(reader)\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n reader.readAsText(blob)\n return fileReaderReady(reader)\n }\n\n var support = {\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob();\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self\n }\n\n function Body() {\n this.bodyUsed = false\n\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (!body) {\n this._bodyText = ''\n } else {\n throw new Error('unsupported BodyInit type')\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n } else {\n this.text = function() {\n var rejected = consumed(this)\n return rejected ? rejected : Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(url, options) {\n options = options || {}\n this.url = url\n\n this.credentials = options.credentials || 'omit'\n this.headers = new Headers(options.headers)\n this.method = normalizeMethod(options.method || 'GET')\n this.mode = options.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && options.body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(options.body)\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function headers(xhr) {\n var head = new Headers()\n var pairs = xhr.getAllResponseHeaders().trim().split('\\n')\n pairs.forEach(function(header) {\n var split = header.trim().split(':')\n var key = split.shift().trim()\n var value = split.join(':').trim()\n head.append(key, value)\n })\n return head\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this._initBody(bodyInit)\n this.type = 'default'\n this.url = null\n this.status = options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText\n this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers)\n this.url = options.url || ''\n }\n\n Body.call(Response.prototype)\n\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n\n self.fetch = function(input, init) {\n // TODO: Request constructor should accept input, init\n var request\n if (Request.prototype.isPrototypeOf(input) && !init) {\n request = input\n } else {\n request = new Request(input, init)\n }\n\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest()\n if (request.credentials === 'cors') {\n xhr.withCredentials = true;\n }\n\n function responseURL() {\n if ('responseURL' in xhr) {\n return xhr.responseURL\n }\n\n // Avoid security warnings on getResponseHeader when not allowed by CORS\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL')\n }\n\n return;\n }\n\n xhr.onload = function() {\n var status = (xhr.status === 1223) ? 204 : xhr.status\n if (status < 100 || status > 599) {\n reject(new TypeError('Network request failed'))\n return\n }\n var options = {\n status: status,\n statusText: xhr.statusText,\n headers: headers(xhr),\n url: responseURL()\n }\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(name, values) {\n values.forEach(function(value) {\n xhr.setRequestHeader(name, value)\n })\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})();\n\n/** End of the third-party code */\n\nmodule.exports = self;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Fetch/fetch.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Geolocation/Geolocation.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTLocationObserver=require('NativeModules').LocationObserver;\n\nvar invariant=require('invariant');\nvar logError=require('logError');\nvar warning=require('warning');\n\nvar subscriptions=[];\n\nvar updatesEnabled=false;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Geolocation={\n\n\n\n\n\ngetCurrentPosition:function(\ngeo_success,\ngeo_error,\ngeo_options)\n{\ninvariant(\ntypeof geo_success === 'function',\n'Must provide a valid geo_success callback.');\n\nRCTLocationObserver.getCurrentPosition(\ngeo_options || {},\ngeo_success,\ngeo_error || logError);},\n\n\n\n\n\n\n\nwatchPosition:function(success,error,options){\nif(!updatesEnabled){\nRCTLocationObserver.startObserving(options || {});\nupdatesEnabled = true;}\n\nvar watchID=subscriptions.length;\nsubscriptions.push([\nRCTDeviceEventEmitter.addListener(\n'geolocationDidChange',\nsuccess),\n\nerror?RCTDeviceEventEmitter.addListener(\n'geolocationError',\nerror):\nnull]);\n\nreturn watchID;},\n\n\nclearWatch:function(watchID){\nvar sub=subscriptions[watchID];\nif(!sub){\n\n\nreturn;}\n\n\nsub[0].remove();\n\nvar sub1=sub[1];sub1 && sub1.remove();\nsubscriptions[watchID] = undefined;\nvar noWatchers=true;\nfor(var ii=0;ii < subscriptions.length;ii++) {\nif(subscriptions[ii]){\nnoWatchers = false;}}\n\n\nif(noWatchers){\nGeolocation.stopObserving();}},\n\n\n\nstopObserving:function(){\nif(updatesEnabled){\nRCTLocationObserver.stopObserving();\nupdatesEnabled = false;\nfor(var ii=0;ii < subscriptions.length;ii++) {\nvar sub=subscriptions[ii];\nif(sub){\nwarning('Called stopObserving with existing subscriptions.');\nsub[0].remove();\n\nvar sub1=sub[1];sub1 && sub1.remove();}}\n\n\nsubscriptions = [];}}};\n\n\n\n\nmodule.exports = Geolocation;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Geolocation\n * @flow\n */\n'use strict';\n\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTLocationObserver = require('NativeModules').LocationObserver;\n\nvar invariant = require('invariant');\nvar logError = require('logError');\nvar warning = require('warning');\n\nvar subscriptions = [];\n\nvar updatesEnabled = false;\n\ntype GeoOptions = {\n timeout: number;\n maximumAge: number;\n enableHighAccuracy: bool;\n}\n\n/**\n * You need to include the `NSLocationWhenInUseUsageDescription` key\n * in Info.plist to enable geolocation. Geolocation is enabled by default\n * when you create a project with `react-native init`.\n *\n * Geolocation follows the MDN specification:\n * https://developer.mozilla.org/en-US/docs/Web/API/Geolocation\n */\nvar Geolocation = {\n\n /*\n * Invokes the success callback once with the latest location info. Supported\n * options: timeout (ms), maximumAge (ms), enableHighAccuracy (bool)\n */\n getCurrentPosition: function(\n geo_success: Function,\n geo_error?: Function,\n geo_options?: GeoOptions\n ) {\n invariant(\n typeof geo_success === 'function',\n 'Must provide a valid geo_success callback.'\n );\n RCTLocationObserver.getCurrentPosition(\n geo_options || {},\n geo_success,\n geo_error || logError\n );\n },\n\n /*\n * Invokes the success callback whenever the location changes. Supported\n * options: timeout (ms), maximumAge (ms), enableHighAccuracy (bool)\n */\n watchPosition: function(success: Function, error?: Function, options?: GeoOptions): number {\n if (!updatesEnabled) {\n RCTLocationObserver.startObserving(options || {});\n updatesEnabled = true;\n }\n var watchID = subscriptions.length;\n subscriptions.push([\n RCTDeviceEventEmitter.addListener(\n 'geolocationDidChange',\n success\n ),\n error ? RCTDeviceEventEmitter.addListener(\n 'geolocationError',\n error\n ) : null,\n ]);\n return watchID;\n },\n\n clearWatch: function(watchID: number) {\n var sub = subscriptions[watchID];\n if (!sub) {\n // Silently exit when the watchID is invalid or already cleared\n // This is consistent with timers\n return;\n }\n\n sub[0].remove();\n // array element refinements not yet enabled in Flow\n var sub1 = sub[1]; sub1 && sub1.remove();\n subscriptions[watchID] = undefined;\n var noWatchers = true;\n for (var ii = 0; ii < subscriptions.length; ii++) {\n if (subscriptions[ii]) {\n noWatchers = false; // still valid subscriptions\n }\n }\n if (noWatchers) {\n Geolocation.stopObserving();\n }\n },\n\n stopObserving: function() {\n if (updatesEnabled) {\n RCTLocationObserver.stopObserving();\n updatesEnabled = false;\n for (var ii = 0; ii < subscriptions.length; ii++) {\n var sub = subscriptions[ii];\n if (sub) {\n warning('Called stopObserving with existing subscriptions.');\n sub[0].remove();\n // array element refinements not yet enabled in Flow\n var sub1 = sub[1]; sub1 && sub1.remove();\n }\n }\n subscriptions = [];\n }\n }\n};\n\nmodule.exports = Geolocation;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Geolocation/Geolocation.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/logError.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar logError=function(){\nif(arguments.length === 1 && arguments[0] instanceof Error){\nvar err=arguments[0];\nconsole.error('Error: \"' + err.message + '\". Stack:\\n' + err.stack);}else \n{\nconsole.error.apply(console,arguments);}};\n\n\n\nmodule.exports = logError;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule logError\n * @flow\n */\n'use strict';\n\n/**\n * Small utility that can be used as an error handler. You cannot just pass\n * `console.error` as a failure callback - it's not properly bound. If passes an\n * `Error` object, it will print the message and stack.\n */\nvar logError = function() {\n if (arguments.length === 1 && arguments[0] instanceof Error) {\n var err = arguments[0];\n console.error('Error: \"' + err.message + '\". Stack:\\n' + err.stack);\n } else {\n console.error.apply(console, arguments);\n }\n};\n\nmodule.exports = logError;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/logError.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/WebSocket/WebSocket.ios.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTWebSocketManager=require('NativeModules').WebSocketManager;\n\nvar WebSocketBase=require('WebSocketBase');\n\nvar WebSocketId=0;var \n\nWebSocket=(function(_WebSocketBase){_inherits(WebSocket,_WebSocketBase);function WebSocket(){_classCallCheck(this,WebSocket);_get(Object.getPrototypeOf(WebSocket.prototype),'constructor',this).apply(this,arguments);}_createClass(WebSocket,[{key:'connectToSocketImpl',value:\n\n\n\nfunction connectToSocketImpl(url){\nthis._socketId = WebSocketId++;\nRCTWebSocketManager.connect(url,this._socketId);\nthis._registerEvents(this._socketId);}},{key:'closeConnectionImpl',value:\n\n\nfunction closeConnectionImpl(){\nRCTWebSocketManager.close(this._socketId);}},{key:'cancelConnectionImpl',value:\n\n\nfunction cancelConnectionImpl(){\nRCTWebSocketManager.close(this._socketId);}},{key:'sendStringImpl',value:\n\n\nfunction sendStringImpl(message){\nRCTWebSocketManager.send(message,this._socketId);}},{key:'sendArrayBufferImpl',value:\n\n\nfunction sendArrayBufferImpl(){\n\nconsole.warn('Sending ArrayBuffers is not yet supported');}},{key:'_unregisterEvents',value:\n\n\nfunction _unregisterEvents(){\nthis._subs.forEach(function(e){return e.remove();});\nthis._subs = [];}},{key:'_registerEvents',value:\n\n\nfunction _registerEvents(id){\nthis._subs = [\nRCTDeviceEventEmitter.addListener(\n'websocketMessage',\n(function(ev){\nif(ev.id !== id){\nreturn;}\n\nthis.onmessage && this.onmessage({\ndata:ev.data});}).\n\nbind(this)),\n\nRCTDeviceEventEmitter.addListener(\n'websocketOpen',\n(function(ev){\nif(ev.id !== id){\nreturn;}\n\nthis.readyState = this.OPEN;\nthis.onopen && this.onopen();}).\nbind(this)),\n\nRCTDeviceEventEmitter.addListener(\n'websocketClosed',\n(function(ev){\nif(ev.id !== id){\nreturn;}\n\nthis.readyState = this.CLOSED;\nthis.onclose && this.onclose(ev);\nthis._unregisterEvents();\nRCTWebSocketManager.close(id);}).\nbind(this)),\n\nRCTDeviceEventEmitter.addListener(\n'websocketFailed',\n(function(ev){\nif(ev.id !== id){\nreturn;}\n\nthis.onerror && this.onerror(new Error(ev.message));\nthis._unregisterEvents();\nRCTWebSocketManager.close(id);}).\nbind(this))];}}]);return WebSocket;})(WebSocketBase);\n\n\n\n\n\n\nmodule.exports = WebSocket;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule WebSocket\n *\n */\n'use strict';\n\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTWebSocketManager = require('NativeModules').WebSocketManager;\n\nvar WebSocketBase = require('WebSocketBase');\n\nvar WebSocketId = 0;\n\nclass WebSocket extends WebSocketBase {\n _socketId: number;\n _subs: any;\n\n connectToSocketImpl(url: string): void {\n this._socketId = WebSocketId++;\n RCTWebSocketManager.connect(url, this._socketId);\n this._registerEvents(this._socketId);\n }\n\n closeConnectionImpl(): void {\n RCTWebSocketManager.close(this._socketId);\n }\n\n cancelConnectionImpl(): void {\n RCTWebSocketManager.close(this._socketId);\n }\n\n sendStringImpl(message: string): void {\n RCTWebSocketManager.send(message, this._socketId);\n }\n\n sendArrayBufferImpl(): void {\n // TODO\n console.warn('Sending ArrayBuffers is not yet supported');\n }\n\n _unregisterEvents(): void {\n this._subs.forEach(e => e.remove());\n this._subs = [];\n }\n\n _registerEvents(id: number): void {\n this._subs = [\n RCTDeviceEventEmitter.addListener(\n 'websocketMessage',\n function(ev) {\n if (ev.id !== id) {\n return;\n }\n this.onmessage && this.onmessage({\n data: ev.data\n });\n }.bind(this)\n ),\n RCTDeviceEventEmitter.addListener(\n 'websocketOpen',\n function(ev) {\n if (ev.id !== id) {\n return;\n }\n this.readyState = this.OPEN;\n this.onopen && this.onopen();\n }.bind(this)\n ),\n RCTDeviceEventEmitter.addListener(\n 'websocketClosed',\n function(ev) {\n if (ev.id !== id) {\n return;\n }\n this.readyState = this.CLOSED;\n this.onclose && this.onclose(ev);\n this._unregisterEvents();\n RCTWebSocketManager.close(id);\n }.bind(this)\n ),\n RCTDeviceEventEmitter.addListener(\n 'websocketFailed',\n function(ev) {\n if (ev.id !== id) {\n return;\n }\n this.onerror && this.onerror(new Error(ev.message));\n this._unregisterEvents();\n RCTWebSocketManager.close(id);\n }.bind(this)\n )\n ];\n }\n\n}\n\nmodule.exports = WebSocket;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/WebSocket/WebSocket.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/WebSocket/WebSocketBase.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nWebSocketBase=(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction WebSocketBase(url,protocols){_classCallCheck(this,WebSocketBase);\nthis.CONNECTING = 0;\nthis.OPEN = 1;\nthis.CLOSING = 2;\nthis.CLOSED = 3;\n\nif(!protocols){\nprotocols = [];}\n\n\nthis.connectToSocketImpl(url);}_createClass(WebSocketBase,[{key:'close',value:\n\n\nfunction close(){\nif(this.readyState === WebSocketBase.CLOSING || \nthis.readyState === WebSocketBase.CLOSED){\nreturn;}\n\n\nif(this.readyState === WebSocketBase.CONNECTING){\nthis.cancelConnectionImpl();}\n\n\nthis.closeConnectionImpl();}},{key:'send',value:\n\n\nfunction send(data){\nif(this.readyState === WebSocketBase.CONNECTING){\nthrow new Error('INVALID_STATE_ERR');}\n\n\nif(typeof data === 'string'){\nthis.sendStringImpl(data);}else \nif(data instanceof ArrayBuffer){\nthis.sendArrayBufferImpl(data);}else \n{\nthrow new Error('Not supported data type');}}},{key:'closeConnectionImpl',value:\n\n\n\nfunction closeConnectionImpl(){\nthrow new Error('Subclass must define closeConnectionImpl method');}},{key:'connectToSocketImpl',value:\n\n\nfunction connectToSocketImpl(){\nthrow new Error('Subclass must define connectToSocketImpl method');}},{key:'cancelConnectionImpl',value:\n\n\nfunction cancelConnectionImpl(){\nthrow new Error('Subclass must define cancelConnectionImpl method');}},{key:'sendStringImpl',value:\n\n\nfunction sendStringImpl(){\nthrow new Error('Subclass must define sendStringImpl method');}},{key:'sendArrayBufferImpl',value:\n\n\nfunction sendArrayBufferImpl(){\nthrow new Error('Subclass must define sendArrayBufferImpl method');}}]);return WebSocketBase;})();\n\n\n\n\nmodule.exports = WebSocketBase;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule WebSocketBase\n *\n */\n'use strict';\n\n/**\n * Shared base for platform-specific WebSocket implementations.\n */\nclass WebSocketBase {\n CONNECTING: number;\n OPEN: number;\n CLOSING: number;\n CLOSED: number;\n\n onclose: ?Function;\n onerror: ?Function;\n onmessage: ?Function;\n onopen: ?Function;\n\n binaryType: ?string;\n bufferedAmount: number;\n extension: ?string;\n protocol: ?string;\n readyState: number;\n url: ?string;\n\n constructor(url: string, protocols: ?any) {\n this.CONNECTING = 0;\n this.OPEN = 1;\n this.CLOSING = 2;\n this.CLOSED = 3;\n\n if (!protocols) {\n protocols = [];\n }\n\n this.connectToSocketImpl(url);\n }\n\n close(): void {\n if (this.readyState === WebSocketBase.CLOSING ||\n this.readyState === WebSocketBase.CLOSED) {\n return;\n }\n\n if (this.readyState === WebSocketBase.CONNECTING) {\n this.cancelConnectionImpl();\n }\n\n this.closeConnectionImpl();\n }\n\n send(data: any): void {\n if (this.readyState === WebSocketBase.CONNECTING) {\n throw new Error('INVALID_STATE_ERR');\n }\n\n if (typeof data === 'string') {\n this.sendStringImpl(data);\n } else if (data instanceof ArrayBuffer) {\n this.sendArrayBufferImpl(data);\n } else {\n throw new Error('Not supported data type');\n }\n }\n\n closeConnectionImpl(): void {\n throw new Error('Subclass must define closeConnectionImpl method');\n }\n\n connectToSocketImpl(): void {\n throw new Error('Subclass must define connectToSocketImpl method');\n }\n\n cancelConnectionImpl(): void {\n throw new Error('Subclass must define cancelConnectionImpl method');\n }\n\n sendStringImpl(): void {\n throw new Error('Subclass must define sendStringImpl method');\n }\n\n sendArrayBufferImpl(): void {\n throw new Error('Subclass must define sendArrayBufferImpl method');\n }\n\n}\n\nmodule.exports = WebSocketBase;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/WebSocket/WebSocketBase.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginHub.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPluginRegistry=require('EventPluginRegistry');\nvar EventPluginUtils=require('EventPluginUtils');\n\nvar accumulateInto=require('accumulateInto');\nvar forEachAccumulated=require('forEachAccumulated');\nvar invariant=require('invariant');\n\n\n\n\nvar listenerBank={};\n\n\n\n\n\nvar eventQueue=null;\n\n\n\n\n\n\n\nvar executeDispatchesAndRelease=function(event){\nif(event){\nvar executeDispatch=EventPluginUtils.executeDispatch;\n\nvar PluginModule=EventPluginRegistry.getPluginModuleForEvent(event);\nif(PluginModule && PluginModule.executeDispatch){\nexecuteDispatch = PluginModule.executeDispatch;}\n\nEventPluginUtils.executeDispatchesInOrder(event,executeDispatch);\n\nif(!event.isPersistent()){\nevent.constructor.release(event);}}};\n\n\n\n\n\n\n\n\nvar InstanceHandle=null;\n\nfunction validateInstanceHandle(){\nvar valid=\nInstanceHandle && \nInstanceHandle.traverseTwoPhase && \nInstanceHandle.traverseEnterLeave;\ninvariant(\nvalid,\n'InstanceHandle not injected before use!');}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPluginHub={\n\n\n\n\ninjection:{\n\n\n\n\n\ninjectMount:EventPluginUtils.injection.injectMount,\n\n\n\n\n\ninjectInstanceHandle:function(InjectedInstanceHandle){\nInstanceHandle = InjectedInstanceHandle;\nif(__DEV__){\nvalidateInstanceHandle();}},\n\n\n\ngetInstanceHandle:function(){\nif(__DEV__){\nvalidateInstanceHandle();}\n\nreturn InstanceHandle;},\n\n\n\n\n\n\ninjectEventPluginOrder:EventPluginRegistry.injectEventPluginOrder,\n\n\n\n\ninjectEventPluginsByName:EventPluginRegistry.injectEventPluginsByName},\n\n\n\neventNameDispatchConfigs:EventPluginRegistry.eventNameDispatchConfigs,\n\nregistrationNameModules:EventPluginRegistry.registrationNameModules,\n\n\n\n\n\n\n\n\nputListener:function(id,registrationName,listener){\ninvariant(\n!listener || typeof listener === 'function',\n'Expected %s listener to be a function, instead got type %s',\nregistrationName,typeof listener);\n\n\nvar bankForRegistrationName=\nlistenerBank[registrationName] || (listenerBank[registrationName] = {});\nbankForRegistrationName[id] = listener;},\n\n\n\n\n\n\n\ngetListener:function(id,registrationName){\nvar bankForRegistrationName=listenerBank[registrationName];\nreturn bankForRegistrationName && bankForRegistrationName[id];},\n\n\n\n\n\n\n\n\ndeleteListener:function(id,registrationName){\nvar bankForRegistrationName=listenerBank[registrationName];\nif(bankForRegistrationName){\ndelete bankForRegistrationName[id];}},\n\n\n\n\n\n\n\n\ndeleteAllListeners:function(id){\nfor(var registrationName in listenerBank) {\ndelete listenerBank[registrationName][id];}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nextractEvents:function(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent){\nvar events;\nvar plugins=EventPluginRegistry.plugins;\nfor(var i=0,l=plugins.length;i < l;i++) {\n\nvar possiblePlugin=plugins[i];\nif(possiblePlugin){\nvar extractedEvents=possiblePlugin.extractEvents(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent);\n\nif(extractedEvents){\nevents = accumulateInto(events,extractedEvents);}}}\n\n\n\nreturn events;},\n\n\n\n\n\n\n\n\n\nenqueueEvents:function(events){\nif(events){\neventQueue = accumulateInto(eventQueue,events);}},\n\n\n\n\n\n\n\n\nprocessEventQueue:function(){\n\n\nvar processingEventQueue=eventQueue;\neventQueue = null;\nforEachAccumulated(processingEventQueue,executeDispatchesAndRelease);\ninvariant(\n!eventQueue,\n'processEventQueue(): Additional events were enqueued while processing ' + \n'an event queue. Support for this has not yet been implemented.');},\n\n\n\n\n\n\n__purge:function(){\nlistenerBank = {};},\n\n\n__getListenerBank:function(){\nreturn listenerBank;}};\n\n\n\n\nmodule.exports = EventPluginHub;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginHub\n */\n\n'use strict';\n\nvar EventPluginRegistry = require('EventPluginRegistry');\nvar EventPluginUtils = require('EventPluginUtils');\n\nvar accumulateInto = require('accumulateInto');\nvar forEachAccumulated = require('forEachAccumulated');\nvar invariant = require('invariant');\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @private\n */\nvar executeDispatchesAndRelease = function(event) {\n if (event) {\n var executeDispatch = EventPluginUtils.executeDispatch;\n // Plugins can provide custom behavior when dispatching events.\n var PluginModule = EventPluginRegistry.getPluginModuleForEvent(event);\n if (PluginModule && PluginModule.executeDispatch) {\n executeDispatch = PluginModule.executeDispatch;\n }\n EventPluginUtils.executeDispatchesInOrder(event, executeDispatch);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\n\n/**\n * - `InstanceHandle`: [required] Module that performs logical traversals of DOM\n * hierarchy given ids of the logical DOM elements involved.\n */\nvar InstanceHandle = null;\n\nfunction validateInstanceHandle() {\n var valid =\n InstanceHandle &&\n InstanceHandle.traverseTwoPhase &&\n InstanceHandle.traverseEnterLeave;\n invariant(\n valid,\n 'InstanceHandle not injected before use!'\n );\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {object} InjectedMount\n * @public\n */\n injectMount: EventPluginUtils.injection.injectMount,\n\n /**\n * @param {object} InjectedInstanceHandle\n * @public\n */\n injectInstanceHandle: function(InjectedInstanceHandle) {\n InstanceHandle = InjectedInstanceHandle;\n if (__DEV__) {\n validateInstanceHandle();\n }\n },\n\n getInstanceHandle: function() {\n if (__DEV__) {\n validateInstanceHandle();\n }\n return InstanceHandle;\n },\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n eventNameDispatchConfigs: EventPluginRegistry.eventNameDispatchConfigs,\n\n registrationNameModules: EventPluginRegistry.registrationNameModules,\n\n /**\n * Stores `listener` at `listenerBank[registrationName][id]`. Is idempotent.\n *\n * @param {string} id ID of the DOM element.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {?function} listener The callback to store.\n */\n putListener: function(id, registrationName, listener) {\n invariant(\n !listener || typeof listener === 'function',\n 'Expected %s listener to be a function, instead got type %s',\n registrationName, typeof listener\n );\n\n var bankForRegistrationName =\n listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[id] = listener;\n },\n\n /**\n * @param {string} id ID of the DOM element.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function(id, registrationName) {\n var bankForRegistrationName = listenerBank[registrationName];\n return bankForRegistrationName && bankForRegistrationName[id];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {string} id ID of the DOM element.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function(id, registrationName) {\n var bankForRegistrationName = listenerBank[registrationName];\n if (bankForRegistrationName) {\n delete bankForRegistrationName[id];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {string} id ID of the DOM element.\n */\n deleteAllListeners: function(id) {\n for (var registrationName in listenerBank) {\n delete listenerBank[registrationName][id];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0, l = plugins.length; i < l; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n );\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function(events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function() {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n forEachAccumulated(processingEventQueue, executeDispatchesAndRelease);\n invariant(\n !eventQueue,\n 'processEventQueue(): Additional events were enqueued while processing ' +\n 'an event queue. Support for this has not yet been implemented.'\n );\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function() {\n listenerBank = {};\n },\n\n __getListenerBank: function() {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginHub.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginRegistry.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\nvar EventPluginOrder=null;\n\n\n\n\nvar namesToPlugins={};\n\n\n\n\n\n\nfunction recomputePluginOrdering(){\nif(!EventPluginOrder){\n\nreturn;}\n\nfor(var pluginName in namesToPlugins) {\nvar PluginModule=namesToPlugins[pluginName];\nvar pluginIndex=EventPluginOrder.indexOf(pluginName);\ninvariant(\npluginIndex > -1,\n'EventPluginRegistry: Cannot inject event plugins that do not exist in ' + \n'the plugin ordering, `%s`.',\npluginName);\n\nif(EventPluginRegistry.plugins[pluginIndex]){\ncontinue;}\n\ninvariant(\nPluginModule.extractEvents,\n'EventPluginRegistry: Event plugins must implement an `extractEvents` ' + \n'method, but `%s` does not.',\npluginName);\n\nEventPluginRegistry.plugins[pluginIndex] = PluginModule;\nvar publishedEvents=PluginModule.eventTypes;\nfor(var eventName in publishedEvents) {\ninvariant(\npublishEventForPlugin(\npublishedEvents[eventName],\nPluginModule,\neventName),\n\n'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.',\neventName,\npluginName);}}}\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction publishEventForPlugin(dispatchConfig,PluginModule,eventName){\ninvariant(\n!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName),\n'EventPluginHub: More than one plugin attempted to publish the same ' + \n'event name, `%s`.',\neventName);\n\nEventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\nvar phasedRegistrationNames=dispatchConfig.phasedRegistrationNames;\nif(phasedRegistrationNames){\nfor(var phaseName in phasedRegistrationNames) {\nif(phasedRegistrationNames.hasOwnProperty(phaseName)){\nvar phasedRegistrationName=phasedRegistrationNames[phaseName];\npublishRegistrationName(\nphasedRegistrationName,\nPluginModule,\neventName);}}\n\n\n\nreturn true;}else \nif(dispatchConfig.registrationName){\npublishRegistrationName(\ndispatchConfig.registrationName,\nPluginModule,\neventName);\n\nreturn true;}\n\nreturn false;}\n\n\n\n\n\n\n\n\n\n\nfunction publishRegistrationName(registrationName,PluginModule,eventName){\ninvariant(\n!EventPluginRegistry.registrationNameModules[registrationName],\n'EventPluginHub: More than one plugin attempted to publish the same ' + \n'registration name, `%s`.',\nregistrationName);\n\nEventPluginRegistry.registrationNameModules[registrationName] = PluginModule;\nEventPluginRegistry.registrationNameDependencies[registrationName] = \nPluginModule.eventTypes[eventName].dependencies;}\n\n\n\n\n\n\n\nvar EventPluginRegistry={\n\n\n\n\nplugins:[],\n\n\n\n\neventNameDispatchConfigs:{},\n\n\n\n\nregistrationNameModules:{},\n\n\n\n\nregistrationNameDependencies:{},\n\n\n\n\n\n\n\n\n\n\ninjectEventPluginOrder:function(InjectedEventPluginOrder){\ninvariant(\n!EventPluginOrder,\n'EventPluginRegistry: Cannot inject event plugin ordering more than ' + \n'once. You are likely trying to load more than one copy of React.');\n\n\nEventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);\nrecomputePluginOrdering();},\n\n\n\n\n\n\n\n\n\n\n\n\ninjectEventPluginsByName:function(injectedNamesToPlugins){\nvar isOrderingDirty=false;\nfor(var pluginName in injectedNamesToPlugins) {\nif(!injectedNamesToPlugins.hasOwnProperty(pluginName)){\ncontinue;}\n\nvar PluginModule=injectedNamesToPlugins[pluginName];\nif(!namesToPlugins.hasOwnProperty(pluginName) || \nnamesToPlugins[pluginName] !== PluginModule){\ninvariant(\n!namesToPlugins[pluginName],\n'EventPluginRegistry: Cannot inject two different event plugins ' + \n'using the same name, `%s`.',\npluginName);\n\nnamesToPlugins[pluginName] = PluginModule;\nisOrderingDirty = true;}}\n\n\nif(isOrderingDirty){\nrecomputePluginOrdering();}},\n\n\n\n\n\n\n\n\n\n\ngetPluginModuleForEvent:function(event){\nvar dispatchConfig=event.dispatchConfig;\nif(dispatchConfig.registrationName){\nreturn EventPluginRegistry.registrationNameModules[\ndispatchConfig.registrationName] || \nnull;}\n\nfor(var phase in dispatchConfig.phasedRegistrationNames) {\nif(!dispatchConfig.phasedRegistrationNames.hasOwnProperty(phase)){\ncontinue;}\n\nvar PluginModule=EventPluginRegistry.registrationNameModules[\ndispatchConfig.phasedRegistrationNames[phase]];\n\nif(PluginModule){\nreturn PluginModule;}}\n\n\nreturn null;},\n\n\n\n\n\n\n_resetEventPlugins:function(){\nEventPluginOrder = null;\nfor(var pluginName in namesToPlugins) {\nif(namesToPlugins.hasOwnProperty(pluginName)){\ndelete namesToPlugins[pluginName];}}\n\n\nEventPluginRegistry.plugins.length = 0;\n\nvar eventNameDispatchConfigs=EventPluginRegistry.eventNameDispatchConfigs;\nfor(var eventName in eventNameDispatchConfigs) {\nif(eventNameDispatchConfigs.hasOwnProperty(eventName)){\ndelete eventNameDispatchConfigs[eventName];}}\n\n\n\nvar registrationNameModules=EventPluginRegistry.registrationNameModules;\nfor(var registrationName in registrationNameModules) {\nif(registrationNameModules.hasOwnProperty(registrationName)){\ndelete registrationNameModules[registrationName];}}}};\n\n\n\n\n\n\nmodule.exports = EventPluginRegistry;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginRegistry\n * @typechecks static-only\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar EventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!EventPluginOrder) {\n // Wait until an `EventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var PluginModule = namesToPlugins[pluginName];\n var pluginIndex = EventPluginOrder.indexOf(pluginName);\n invariant(\n pluginIndex > -1,\n 'EventPluginRegistry: Cannot inject event plugins that do not exist in ' +\n 'the plugin ordering, `%s`.',\n pluginName\n );\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n invariant(\n PluginModule.extractEvents,\n 'EventPluginRegistry: Event plugins must implement an `extractEvents` ' +\n 'method, but `%s` does not.',\n pluginName\n );\n EventPluginRegistry.plugins[pluginIndex] = PluginModule;\n var publishedEvents = PluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n invariant(\n publishEventForPlugin(\n publishedEvents[eventName],\n PluginModule,\n eventName\n ),\n 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.',\n eventName,\n pluginName\n );\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, PluginModule, eventName) {\n invariant(\n !EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName),\n 'EventPluginHub: More than one plugin attempted to publish the same ' +\n 'event name, `%s`.',\n eventName\n );\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(\n phasedRegistrationName,\n PluginModule,\n eventName\n );\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(\n dispatchConfig.registrationName,\n PluginModule,\n eventName\n );\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, PluginModule, eventName) {\n invariant(\n !EventPluginRegistry.registrationNameModules[registrationName],\n 'EventPluginHub: More than one plugin attempted to publish the same ' +\n 'registration name, `%s`.',\n registrationName\n );\n EventPluginRegistry.registrationNameModules[registrationName] = PluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] =\n PluginModule.eventTypes[eventName].dependencies;\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function(InjectedEventPluginOrder) {\n invariant(\n !EventPluginOrder,\n 'EventPluginRegistry: Cannot inject event plugin ordering more than ' +\n 'once. You are likely trying to load more than one copy of React.'\n );\n // Clone the ordering so it cannot be dynamically mutated.\n EventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function(injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var PluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) ||\n namesToPlugins[pluginName] !== PluginModule) {\n invariant(\n !namesToPlugins[pluginName],\n 'EventPluginRegistry: Cannot inject two different event plugins ' +\n 'using the same name, `%s`.',\n pluginName\n );\n namesToPlugins[pluginName] = PluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function(event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[\n dispatchConfig.registrationName\n ] || null;\n }\n for (var phase in dispatchConfig.phasedRegistrationNames) {\n if (!dispatchConfig.phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var PluginModule = EventPluginRegistry.registrationNameModules[\n dispatchConfig.phasedRegistrationNames[phase]\n ];\n if (PluginModule) {\n return PluginModule;\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function() {\n EventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginRegistry.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginUtils.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventConstants=require('EventConstants');\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\nvar injection={\nMount:null,\ninjectMount:function(InjectedMount){\ninjection.Mount = InjectedMount;\nif(__DEV__){\ninvariant(\nInjectedMount && InjectedMount.getNode,\n'EventPluginUtils.injection.injectMount(...): Injected Mount module ' + \n'is missing getNode.');}}};\n\n\n\n\n\nvar topLevelTypes=EventConstants.topLevelTypes;\n\nfunction isEndish(topLevelType){\nreturn topLevelType === topLevelTypes.topMouseUp || \ntopLevelType === topLevelTypes.topTouchEnd || \ntopLevelType === topLevelTypes.topTouchCancel;}\n\n\nfunction isMoveish(topLevelType){\nreturn topLevelType === topLevelTypes.topMouseMove || \ntopLevelType === topLevelTypes.topTouchMove;}\n\nfunction isStartish(topLevelType){\nreturn topLevelType === topLevelTypes.topMouseDown || \ntopLevelType === topLevelTypes.topTouchStart;}\n\n\n\nvar validateEventDispatches;\nif(__DEV__){\nvalidateEventDispatches = function(event){\nvar dispatchListeners=event._dispatchListeners;\nvar dispatchIDs=event._dispatchIDs;\n\nvar listenersIsArr=Array.isArray(dispatchListeners);\nvar idsIsArr=Array.isArray(dispatchIDs);\nvar IDsLen=idsIsArr?dispatchIDs.length:dispatchIDs?1:0;\nvar listenersLen=listenersIsArr?\ndispatchListeners.length:\ndispatchListeners?1:0;\n\ninvariant(\nidsIsArr === listenersIsArr && IDsLen === listenersLen,\n'EventPluginUtils: Invalid `event`.');};}\n\n\n\n\n\n\n\n\n\nfunction forEachEventDispatch(event,cb){\nvar dispatchListeners=event._dispatchListeners;\nvar dispatchIDs=event._dispatchIDs;\nif(__DEV__){\nvalidateEventDispatches(event);}\n\nif(Array.isArray(dispatchListeners)){\nfor(var i=0;i < dispatchListeners.length;i++) {\nif(event.isPropagationStopped()){\nbreak;}\n\n\ncb(event,dispatchListeners[i],dispatchIDs[i]);}}else \n\nif(dispatchListeners){\ncb(event,dispatchListeners,dispatchIDs);}}\n\n\n\n\n\n\n\n\n\nfunction executeDispatch(event,listener,domID){\nevent.currentTarget = injection.Mount.getNode(domID);\nvar returnValue=listener(event,domID);\nevent.currentTarget = null;\nreturn returnValue;}\n\n\n\n\n\nfunction executeDispatchesInOrder(event,cb){\nforEachEventDispatch(event,cb);\nevent._dispatchListeners = null;\nevent._dispatchIDs = null;}\n\n\n\n\n\n\n\n\n\nfunction executeDispatchesInOrderStopAtTrueImpl(event){\nvar dispatchListeners=event._dispatchListeners;\nvar dispatchIDs=event._dispatchIDs;\nif(__DEV__){\nvalidateEventDispatches(event);}\n\nif(Array.isArray(dispatchListeners)){\nfor(var i=0;i < dispatchListeners.length;i++) {\nif(event.isPropagationStopped()){\nbreak;}\n\n\nif(dispatchListeners[i](event,dispatchIDs[i])){\nreturn dispatchIDs[i];}}}else \n\n\nif(dispatchListeners){\nif(dispatchListeners(event,dispatchIDs)){\nreturn dispatchIDs;}}\n\n\nreturn null;}\n\n\n\n\n\nfunction executeDispatchesInOrderStopAtTrue(event){\nvar ret=executeDispatchesInOrderStopAtTrueImpl(event);\nevent._dispatchIDs = null;\nevent._dispatchListeners = null;\nreturn ret;}\n\n\n\n\n\n\n\n\n\n\n\nfunction executeDirectDispatch(event){\nif(__DEV__){\nvalidateEventDispatches(event);}\n\nvar dispatchListener=event._dispatchListeners;\nvar dispatchID=event._dispatchIDs;\ninvariant(\n!Array.isArray(dispatchListener),\n'executeDirectDispatch(...): Invalid `event`.');\n\nvar res=dispatchListener?\ndispatchListener(event,dispatchID):\nnull;\nevent._dispatchListeners = null;\nevent._dispatchIDs = null;\nreturn res;}\n\n\n\n\n\n\nfunction hasDispatches(event){\nreturn !!event._dispatchListeners;}\n\n\n\n\n\nvar EventPluginUtils={\nisEndish:isEndish,\nisMoveish:isMoveish,\nisStartish:isStartish,\n\nexecuteDirectDispatch:executeDirectDispatch,\nexecuteDispatch:executeDispatch,\nexecuteDispatchesInOrder:executeDispatchesInOrder,\nexecuteDispatchesInOrderStopAtTrue:executeDispatchesInOrderStopAtTrue,\nhasDispatches:hasDispatches,\ninjection:injection,\nuseTouchEvents:false};\n\n\nmodule.exports = EventPluginUtils;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginUtils\n */\n\n'use strict';\n\nvar EventConstants = require('EventConstants');\n\nvar invariant = require('invariant');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `Mount`: [required] Module that can convert between React dom IDs and\n * actual node references.\n */\nvar injection = {\n Mount: null,\n injectMount: function(InjectedMount) {\n injection.Mount = InjectedMount;\n if (__DEV__) {\n invariant(\n InjectedMount && InjectedMount.getNode,\n 'EventPluginUtils.injection.injectMount(...): Injected Mount module ' +\n 'is missing getNode.'\n );\n }\n }\n};\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nfunction isEndish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseUp ||\n topLevelType === topLevelTypes.topTouchEnd ||\n topLevelType === topLevelTypes.topTouchCancel;\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseMove ||\n topLevelType === topLevelTypes.topTouchMove;\n}\nfunction isStartish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseDown ||\n topLevelType === topLevelTypes.topTouchStart;\n}\n\n\nvar validateEventDispatches;\nif (__DEV__) {\n validateEventDispatches = function(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchIDs = event._dispatchIDs;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var idsIsArr = Array.isArray(dispatchIDs);\n var IDsLen = idsIsArr ? dispatchIDs.length : dispatchIDs ? 1 : 0;\n var listenersLen = listenersIsArr ?\n dispatchListeners.length :\n dispatchListeners ? 1 : 0;\n\n invariant(\n idsIsArr === listenersIsArr && IDsLen === listenersLen,\n 'EventPluginUtils: Invalid `event`.'\n );\n };\n}\n\n/**\n * Invokes `cb(event, listener, id)`. Avoids using call if no scope is\n * provided. The `(listener,id)` pair effectively forms the \"dispatch\" but are\n * kept separate to conserve memory.\n */\nfunction forEachEventDispatch(event, cb) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchIDs = event._dispatchIDs;\n if (__DEV__) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and IDs are two parallel arrays that are always in sync.\n cb(event, dispatchListeners[i], dispatchIDs[i]);\n }\n } else if (dispatchListeners) {\n cb(event, dispatchListeners, dispatchIDs);\n }\n}\n\n/**\n * Default implementation of PluginModule.executeDispatch().\n * @param {SyntheticEvent} SyntheticEvent to handle\n * @param {function} Application-level callback\n * @param {string} domID DOM id to pass to the callback.\n */\nfunction executeDispatch(event, listener, domID) {\n event.currentTarget = injection.Mount.getNode(domID);\n var returnValue = listener(event, domID);\n event.currentTarget = null;\n return returnValue;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, cb) {\n forEachEventDispatch(event, cb);\n event._dispatchListeners = null;\n event._dispatchIDs = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return id of the first dispatch execution who's listener returns true, or\n * null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchIDs = event._dispatchIDs;\n if (__DEV__) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and IDs are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchIDs[i])) {\n return dispatchIDs[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchIDs)) {\n return dispatchIDs;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchIDs = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (__DEV__) {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchID = event._dispatchIDs;\n invariant(\n !Array.isArray(dispatchListener),\n 'executeDirectDispatch(...): Invalid `event`.'\n );\n var res = dispatchListener ?\n dispatchListener(event, dispatchID) :\n null;\n event._dispatchListeners = null;\n event._dispatchIDs = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {bool} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatch: executeDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n injection: injection,\n useTouchEvents: false\n};\n\nmodule.exports = EventPluginUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginUtils.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventConstants.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=require('keyMirror');\n\nvar PropagationPhases=keyMirror({bubbled:null,captured:null});\n\n\n\n\nvar topLevelTypes=keyMirror({\ntopBlur:null,\ntopChange:null,\ntopClick:null,\ntopCompositionEnd:null,\ntopCompositionStart:null,\ntopCompositionUpdate:null,\ntopContextMenu:null,\ntopCopy:null,\ntopCut:null,\ntopDoubleClick:null,\ntopDrag:null,\ntopDragEnd:null,\ntopDragEnter:null,\ntopDragExit:null,\ntopDragLeave:null,\ntopDragOver:null,\ntopDragStart:null,\ntopDrop:null,\ntopError:null,\ntopFocus:null,\ntopInput:null,\ntopKeyDown:null,\ntopKeyPress:null,\ntopKeyUp:null,\ntopLoad:null,\ntopMouseDown:null,\ntopMouseMove:null,\ntopMouseOut:null,\ntopMouseOver:null,\ntopMouseUp:null,\ntopPaste:null,\ntopReset:null,\ntopScroll:null,\ntopSelectionChange:null,\ntopSubmit:null,\ntopTextInput:null,\ntopTouchCancel:null,\ntopTouchEnd:null,\ntopTouchMove:null,\ntopTouchStart:null,\ntopWheel:null});\n\n\nvar EventConstants={\ntopLevelTypes:topLevelTypes,\nPropagationPhases:PropagationPhases};\n\n\nmodule.exports = EventConstants;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventConstants\n */\n\n'use strict';\n\nvar keyMirror = require('keyMirror');\n\nvar PropagationPhases = keyMirror({bubbled: null, captured: null});\n\n/**\n * Types of raw signals from the browser caught at the top level.\n */\nvar topLevelTypes = keyMirror({\n topBlur: null,\n topChange: null,\n topClick: null,\n topCompositionEnd: null,\n topCompositionStart: null,\n topCompositionUpdate: null,\n topContextMenu: null,\n topCopy: null,\n topCut: null,\n topDoubleClick: null,\n topDrag: null,\n topDragEnd: null,\n topDragEnter: null,\n topDragExit: null,\n topDragLeave: null,\n topDragOver: null,\n topDragStart: null,\n topDrop: null,\n topError: null,\n topFocus: null,\n topInput: null,\n topKeyDown: null,\n topKeyPress: null,\n topKeyUp: null,\n topLoad: null,\n topMouseDown: null,\n topMouseMove: null,\n topMouseOut: null,\n topMouseOver: null,\n topMouseUp: null,\n topPaste: null,\n topReset: null,\n topScroll: null,\n topSelectionChange: null,\n topSubmit: null,\n topTextInput: null,\n topTouchCancel: null,\n topTouchEnd: null,\n topTouchMove: null,\n topTouchStart: null,\n topWheel: null\n});\n\nvar EventConstants = {\n topLevelTypes: topLevelTypes,\n PropagationPhases: PropagationPhases\n};\n\nmodule.exports = EventConstants;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventConstants.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/accumulateInto.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction accumulateInto(current,next){\ninvariant(\nnext != null,\n'accumulateInto(...): Accumulated items must not be null or undefined.');\n\nif(current == null){\nreturn next;}\n\n\n\n\nvar currentIsArray=Array.isArray(current);\nvar nextIsArray=Array.isArray(next);\n\nif(currentIsArray && nextIsArray){\ncurrent.push.apply(current,next);\nreturn current;}\n\n\nif(currentIsArray){\ncurrent.push(next);\nreturn current;}\n\n\nif(nextIsArray){\n\nreturn [current].concat(next);}\n\n\nreturn [current,next];}\n\n\nmodule.exports = accumulateInto;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule accumulateInto\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n *\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n invariant(\n next != null,\n 'accumulateInto(...): Accumulated items must not be null or undefined.'\n );\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n var currentIsArray = Array.isArray(current);\n var nextIsArray = Array.isArray(next);\n\n if (currentIsArray && nextIsArray) {\n current.push.apply(current, next);\n return current;\n }\n\n if (currentIsArray) {\n current.push(next);\n return current;\n }\n\n if (nextIsArray) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/accumulateInto.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/forEachAccumulated.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar forEachAccumulated=function(arr,cb,scope){\nif(Array.isArray(arr)){\narr.forEach(cb,scope);}else \nif(arr){\ncb.call(scope,arr);}};\n\n\n\nmodule.exports = forEachAccumulated;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule forEachAccumulated\n */\n\n'use strict';\n\n/**\n * @param {array} an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\nvar forEachAccumulated = function(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n};\n\nmodule.exports = forEachAccumulated;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/forEachAccumulated.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/IOSDefaultEventPluginOrder.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar IOSDefaultEventPluginOrder=[\n'ResponderEventPlugin',\n'IOSNativeBridgeEventPlugin'];\n\n\nmodule.exports = IOSDefaultEventPluginOrder;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule IOSDefaultEventPluginOrder\n * @flow\n */\n'use strict';\n\nvar IOSDefaultEventPluginOrder = [\n 'ResponderEventPlugin',\n 'IOSNativeBridgeEventPlugin'\n];\n\nmodule.exports = IOSDefaultEventPluginOrder;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/IOSDefaultEventPluginOrder.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/IOSNativeBridgeEventPlugin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPropagators=require('EventPropagators');\nvar NativeModules=require('NativeModules');\nvar SyntheticEvent=require('SyntheticEvent');\n\nvar merge=require('merge');\nvar warning=require('warning');\n\nvar RCTUIManager=NativeModules.UIManager;\n\nvar customBubblingEventTypes=RCTUIManager.customBubblingEventTypes;\nvar customDirectEventTypes=RCTUIManager.customDirectEventTypes;\n\nvar allTypesByEventName={};\n\nfor(var bubblingTypeName in customBubblingEventTypes) {\nallTypesByEventName[bubblingTypeName] = customBubblingEventTypes[bubblingTypeName];}\n\n\nfor(var directTypeName in customDirectEventTypes) {\nwarning(\n!customBubblingEventTypes[directTypeName],\n'Event cannot be both direct and bubbling: %s',\ndirectTypeName);\n\nallTypesByEventName[directTypeName] = customDirectEventTypes[directTypeName];}\n\n\nvar IOSNativeBridgeEventPlugin={\n\neventTypes:merge(customBubblingEventTypes,customDirectEventTypes),\n\n\n\n\n\n\n\n\n\nextractEvents:function(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent)\n{\nvar bubbleDispatchConfig=customBubblingEventTypes[topLevelType];\nvar directDispatchConfig=customDirectEventTypes[topLevelType];\nvar event=SyntheticEvent.getPooled(\nbubbleDispatchConfig || directDispatchConfig,\ntopLevelTargetID,\nnativeEvent);\n\nif(bubbleDispatchConfig){\nEventPropagators.accumulateTwoPhaseDispatches(event);}else \nif(directDispatchConfig){\nEventPropagators.accumulateDirectDispatches(event);}else \n{\nreturn null;}\n\nreturn event;}};\n\n\n\nmodule.exports = IOSNativeBridgeEventPlugin;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule IOSNativeBridgeEventPlugin\n * @flow\n */\n'use strict';\n\nvar EventPropagators = require('EventPropagators');\nvar NativeModules = require('NativeModules');\nvar SyntheticEvent = require('SyntheticEvent');\n\nvar merge = require('merge');\nvar warning = require('warning');\n\nvar RCTUIManager = NativeModules.UIManager;\n\nvar customBubblingEventTypes = RCTUIManager.customBubblingEventTypes;\nvar customDirectEventTypes = RCTUIManager.customDirectEventTypes;\n\nvar allTypesByEventName = {};\n\nfor (var bubblingTypeName in customBubblingEventTypes) {\n allTypesByEventName[bubblingTypeName] = customBubblingEventTypes[bubblingTypeName];\n}\n\nfor (var directTypeName in customDirectEventTypes) {\n warning(\n !customBubblingEventTypes[directTypeName],\n 'Event cannot be both direct and bubbling: %s',\n directTypeName\n );\n allTypesByEventName[directTypeName] = customDirectEventTypes[directTypeName];\n}\n\nvar IOSNativeBridgeEventPlugin = {\n\n eventTypes: merge(customBubblingEventTypes, customDirectEventTypes),\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType: string,\n topLevelTarget: EventTarget,\n topLevelTargetID: string,\n nativeEvent: Event\n ): ?Object {\n var bubbleDispatchConfig = customBubblingEventTypes[topLevelType];\n var directDispatchConfig = customDirectEventTypes[topLevelType];\n var event = SyntheticEvent.getPooled(\n bubbleDispatchConfig || directDispatchConfig,\n topLevelTargetID,\n nativeEvent\n );\n if (bubbleDispatchConfig) {\n EventPropagators.accumulateTwoPhaseDispatches(event);\n } else if (directDispatchConfig) {\n EventPropagators.accumulateDirectDispatches(event);\n } else {\n return null;\n }\n return event;\n }\n};\n\nmodule.exports = IOSNativeBridgeEventPlugin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/IOSNativeBridgeEventPlugin.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/event/EventPropagators.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventConstants=require('EventConstants');\nvar EventPluginHub=require('EventPluginHub');\n\nvar accumulateInto=require('accumulateInto');\nvar forEachAccumulated=require('forEachAccumulated');\n\nvar PropagationPhases=EventConstants.PropagationPhases;\nvar getListener=EventPluginHub.getListener;\n\n\n\n\n\nfunction listenerAtPhase(id,event,propagationPhase){\nvar registrationName=\nevent.dispatchConfig.phasedRegistrationNames[propagationPhase];\nreturn getListener(id,registrationName);}\n\n\n\n\n\n\n\n\nfunction accumulateDirectionalDispatches(domID,upwards,event){\nif(__DEV__){\nif(!domID){\nthrow new Error('Dispatching id must not be null');}}\n\n\nvar phase=upwards?PropagationPhases.bubbled:PropagationPhases.captured;\nvar listener=listenerAtPhase(domID,event,phase);\nif(listener){\nevent._dispatchListeners = \naccumulateInto(event._dispatchListeners,listener);\nevent._dispatchIDs = accumulateInto(event._dispatchIDs,domID);}}\n\n\n\n\n\n\n\n\n\n\nfunction accumulateTwoPhaseDispatchesSingle(event){\nif(event && event.dispatchConfig.phasedRegistrationNames){\nEventPluginHub.injection.getInstanceHandle().traverseTwoPhase(\nevent.dispatchMarker,\naccumulateDirectionalDispatches,\nevent);}}\n\n\n\n\n\n\n\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event){\nif(event && event.dispatchConfig.phasedRegistrationNames){\nEventPluginHub.injection.getInstanceHandle().traverseTwoPhaseSkipTarget(\nevent.dispatchMarker,\naccumulateDirectionalDispatches,\nevent);}}\n\n\n\n\n\n\n\n\n\n\nfunction accumulateDispatches(id,ignoredDirection,event){\nif(event && event.dispatchConfig.registrationName){\nvar registrationName=event.dispatchConfig.registrationName;\nvar listener=getListener(id,registrationName);\nif(listener){\nevent._dispatchListeners = \naccumulateInto(event._dispatchListeners,listener);\nevent._dispatchIDs = accumulateInto(event._dispatchIDs,id);}}}\n\n\n\n\n\n\n\n\n\nfunction accumulateDirectDispatchesSingle(event){\nif(event && event.dispatchConfig.registrationName){\naccumulateDispatches(event.dispatchMarker,null,event);}}\n\n\n\nfunction accumulateTwoPhaseDispatches(events){\nforEachAccumulated(events,accumulateTwoPhaseDispatchesSingle);}\n\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events){\nforEachAccumulated(events,accumulateTwoPhaseDispatchesSingleSkipTarget);}\n\n\nfunction accumulateEnterLeaveDispatches(leave,enter,fromID,toID){\nEventPluginHub.injection.getInstanceHandle().traverseEnterLeave(\nfromID,\ntoID,\naccumulateDispatches,\nleave,\nenter);}\n\n\n\n\nfunction accumulateDirectDispatches(events){\nforEachAccumulated(events,accumulateDirectDispatchesSingle);}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPropagators={\naccumulateTwoPhaseDispatches:accumulateTwoPhaseDispatches,\naccumulateTwoPhaseDispatchesSkipTarget:accumulateTwoPhaseDispatchesSkipTarget,\naccumulateDirectDispatches:accumulateDirectDispatches,\naccumulateEnterLeaveDispatches:accumulateEnterLeaveDispatches};\n\n\nmodule.exports = EventPropagators;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule EventPropagators\n */\n\n\"use strict\";\n\nvar EventConstants = require('EventConstants');\nvar EventPluginHub = require('EventPluginHub');\n\nvar accumulateInto = require('accumulateInto');\nvar forEachAccumulated = require('forEachAccumulated');\n\nvar PropagationPhases = EventConstants.PropagationPhases;\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(id, event, propagationPhase) {\n var registrationName =\n event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(id, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(domID, upwards, event) {\n if (__DEV__) {\n if (!domID) {\n throw new Error('Dispatching id must not be null');\n }\n }\n var phase = upwards ? PropagationPhases.bubbled : PropagationPhases.captured;\n var listener = listenerAtPhase(domID, event, phase);\n if (listener) {\n event._dispatchListeners =\n accumulateInto(event._dispatchListeners, listener);\n event._dispatchIDs = accumulateInto(event._dispatchIDs, domID);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We can not perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginHub.injection.getInstanceHandle().traverseTwoPhase(\n event.dispatchMarker,\n accumulateDirectionalDispatches,\n event\n );\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginHub.injection.getInstanceHandle().traverseTwoPhaseSkipTarget(\n event.dispatchMarker,\n accumulateDirectionalDispatches,\n event\n );\n }\n}\n\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(id, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(id, registrationName);\n if (listener) {\n event._dispatchListeners =\n accumulateInto(event._dispatchListeners, listener);\n event._dispatchIDs = accumulateInto(event._dispatchIDs, id);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event.dispatchMarker, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, fromID, toID) {\n EventPluginHub.injection.getInstanceHandle().traverseEnterLeave(\n fromID,\n toID,\n accumulateDispatches,\n leave,\n enter\n );\n}\n\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/event/EventPropagators.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/syntheticEvents/SyntheticEvent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar assign=require('Object.assign');\nvar emptyFunction=require('emptyFunction');\nvar getEventTarget=require('getEventTarget');\n\n\n\n\n\nvar EventInterface={\ntype:null,\ntarget:getEventTarget,\n\ncurrentTarget:emptyFunction.thatReturnsNull,\neventPhase:null,\nbubbles:null,\ncancelable:null,\ntimeStamp:function(event){\nreturn event.timeStamp || Date.now();},\n\ndefaultPrevented:null,\nisTrusted:null};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SyntheticEvent(dispatchConfig,dispatchMarker,nativeEvent){\nthis.dispatchConfig = dispatchConfig;\nthis.dispatchMarker = dispatchMarker;\nthis.nativeEvent = nativeEvent;\n\nvar Interface=this.constructor.Interface;\nfor(var propName in Interface) {\nif(!Interface.hasOwnProperty(propName)){\ncontinue;}\n\nvar normalize=Interface[propName];\nif(normalize){\nthis[propName] = normalize(nativeEvent);}else \n{\nthis[propName] = nativeEvent[propName];}}\n\n\n\nvar defaultPrevented=nativeEvent.defaultPrevented != null?\nnativeEvent.defaultPrevented:\nnativeEvent.returnValue === false;\nif(defaultPrevented){\nthis.isDefaultPrevented = emptyFunction.thatReturnsTrue;}else \n{\nthis.isDefaultPrevented = emptyFunction.thatReturnsFalse;}\n\nthis.isPropagationStopped = emptyFunction.thatReturnsFalse;}\n\n\nassign(SyntheticEvent.prototype,{\n\npreventDefault:function(){\nthis.defaultPrevented = true;\nvar event=this.nativeEvent;\nif(event.preventDefault){\nevent.preventDefault();}else \n{\nevent.returnValue = false;}\n\nthis.isDefaultPrevented = emptyFunction.thatReturnsTrue;},\n\n\nstopPropagation:function(){\nvar event=this.nativeEvent;\nif(event.stopPropagation){\nevent.stopPropagation();}else \n{\nevent.cancelBubble = true;}\n\nthis.isPropagationStopped = emptyFunction.thatReturnsTrue;},\n\n\n\n\n\n\n\npersist:function(){\nthis.isPersistent = emptyFunction.thatReturnsTrue;},\n\n\n\n\n\n\n\nisPersistent:emptyFunction.thatReturnsFalse,\n\n\n\n\ndestructor:function(){\nvar Interface=this.constructor.Interface;\nfor(var propName in Interface) {\nthis[propName] = null;}\n\nthis.dispatchConfig = null;\nthis.dispatchMarker = null;\nthis.nativeEvent = null;}});\n\n\n\n\nSyntheticEvent.Interface = EventInterface;\n\n\n\n\n\n\n\nSyntheticEvent.augmentClass = function(Class,Interface){\nvar Super=this;\n\nvar prototype=Object.create(Super.prototype);\nassign(prototype,Class.prototype);\nClass.prototype = prototype;\nClass.prototype.constructor = Class;\n\nClass.Interface = assign({},Super.Interface,Interface);\nClass.augmentClass = Super.augmentClass;\n\nPooledClass.addPoolingTo(Class,PooledClass.threeArgumentPooler);};\n\n\nPooledClass.addPoolingTo(SyntheticEvent,PooledClass.threeArgumentPooler);\n\nmodule.exports = SyntheticEvent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar PooledClass = require('PooledClass');\n\nvar assign = require('Object.assign');\nvar emptyFunction = require('emptyFunction');\nvar getEventTarget = require('getEventTarget');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: getEventTarget,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function(event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n */\nfunction SyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n this.dispatchConfig = dispatchConfig;\n this.dispatchMarker = dispatchMarker;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ?\n nativeEvent.defaultPrevented :\n nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n}\n\nassign(SyntheticEvent.prototype, {\n\n preventDefault: function() {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (event.preventDefault) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function() {\n var event = this.nativeEvent;\n if (event.stopPropagation) {\n event.stopPropagation();\n } else {\n event.cancelBubble = true;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function() {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function() {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n this[propName] = null;\n }\n this.dispatchConfig = null;\n this.dispatchMarker = null;\n this.nativeEvent = null;\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function(Class, Interface) {\n var Super = this;\n\n var prototype = Object.create(Super.prototype);\n assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.threeArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.threeArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/syntheticEvents/SyntheticEvent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/getEventTarget.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getEventTarget(nativeEvent){\nvar target=nativeEvent.target || nativeEvent.srcElement || window;\n\n\nreturn target.nodeType === 3?target.parentNode:target;}\n\n\nmodule.exports = getEventTarget;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getEventTarget\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/getEventTarget.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/merge.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mergeInto=require('mergeInto');\n\n\n\n\n\n\n\n\nvar merge=function(one,two){\nvar result={};\nmergeInto(result,one);\nmergeInto(result,two);\nreturn result;};\n\n\nmodule.exports = merge;","sourceCode":"/**\n * @generated SignedSource<<0e3063b19e14ed191102b1dffe45551f>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule merge\n */\n\n\"use strict\";\n\nvar mergeInto = require('mergeInto');\n\n/**\n * Shallow merges two structures into a return value, without mutating either.\n *\n * @param {?object} one Optional object with properties to merge from.\n * @param {?object} two Optional object with properties to merge from.\n * @return {object} The shallow extension of one by two.\n */\nvar merge = function(one, two) {\n var result = {};\n mergeInto(result, one);\n mergeInto(result, two);\n return result;\n};\n\nmodule.exports = merge;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/merge.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/mergeInto.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mergeHelpers=require('mergeHelpers');\n\nvar checkMergeObjectArg=mergeHelpers.checkMergeObjectArg;\nvar checkMergeIntoObjectArg=mergeHelpers.checkMergeIntoObjectArg;\n\n\n\n\n\n\n\nfunction mergeInto(one,two){\ncheckMergeIntoObjectArg(one);\nif(two != null){\ncheckMergeObjectArg(two);\nfor(var key in two) {\nif(!two.hasOwnProperty(key)){\ncontinue;}\n\none[key] = two[key];}}}\n\n\n\n\nmodule.exports = mergeInto;","sourceCode":"/**\n * @generated SignedSource<<d3caa35be27b17ea4dd4c76bef72d1ab>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule mergeInto\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar mergeHelpers = require('mergeHelpers');\n\nvar checkMergeObjectArg = mergeHelpers.checkMergeObjectArg;\nvar checkMergeIntoObjectArg = mergeHelpers.checkMergeIntoObjectArg;\n\n/**\n * Shallow merges two structures by mutating the first parameter.\n *\n * @param {object|function} one Object to be merged into.\n * @param {?object} two Optional object with properties to merge from.\n */\nfunction mergeInto(one, two) {\n checkMergeIntoObjectArg(one);\n if (two != null) {\n checkMergeObjectArg(two);\n for (var key in two) {\n if (!two.hasOwnProperty(key)) {\n continue;\n }\n one[key] = two[key];\n }\n }\n}\n\nmodule.exports = mergeInto;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/mergeInto.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/mergeHelpers.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\n\n\n\n\n\nvar MAX_MERGE_DEPTH=36;\n\n\n\n\n\n\n\nvar isTerminal=function(o){\nreturn typeof o !== 'object' || o === null;};\n\n\nvar mergeHelpers={\n\nMAX_MERGE_DEPTH:MAX_MERGE_DEPTH,\n\nisTerminal:isTerminal,\n\n\n\n\n\n\n\nnormalizeMergeArg:function(arg){\nreturn arg === undefined || arg === null?{}:arg;},\n\n\n\n\n\n\n\n\n\n\ncheckMergeArrayArgs:function(one,two){\ninvariant(\nArray.isArray(one) && Array.isArray(two),\n'Tried to merge arrays, instead got %s and %s.',\none,\ntwo);},\n\n\n\n\n\n\n\ncheckMergeObjectArgs:function(one,two){\nmergeHelpers.checkMergeObjectArg(one);\nmergeHelpers.checkMergeObjectArg(two);},\n\n\n\n\n\ncheckMergeObjectArg:function(arg){\ninvariant(\n!isTerminal(arg) && !Array.isArray(arg),\n'Tried to merge an object, instead got %s.',\narg);},\n\n\n\n\n\n\ncheckMergeIntoObjectArg:function(arg){\ninvariant(\n(!isTerminal(arg) || typeof arg === 'function') && !Array.isArray(arg),\n'Tried to merge into an object, instead got %s.',\narg);},\n\n\n\n\n\n\n\n\n\ncheckMergeLevel:function(level){\ninvariant(\nlevel < MAX_MERGE_DEPTH,\n'Maximum deep merge depth exceeded. You may be attempting to merge ' + \n'circular structures in an unsupported way.');},\n\n\n\n\n\n\n\n\ncheckArrayStrategy:function(strategy){\ninvariant(\nstrategy === undefined || strategy in mergeHelpers.ArrayStrategies,\n'You must provide an array strategy to deep merge functions to ' + \n'instruct the deep merge how to resolve merging two arrays.');},\n\n\n\n\n\n\n\n\n\n\nArrayStrategies:keyMirror({\nClobber:true,\nIndexByIndex:true})};\n\n\n\n\nmodule.exports = mergeHelpers;","sourceCode":"/**\n * @generated SignedSource<<b68d78236d45828b3f7f7fcc740782a9>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule mergeHelpers\n *\n * requiresPolyfills: Array.isArray\n */\n\n\"use strict\";\n\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\n\n/**\n * Maximum number of levels to traverse. Will catch circular structures.\n * @const\n */\nvar MAX_MERGE_DEPTH = 36;\n\n/**\n * We won't worry about edge cases like new String('x') or new Boolean(true).\n * Functions are considered terminals, and arrays are not.\n * @param {*} o The item/object/value to test.\n * @return {boolean} true iff the argument is a terminal.\n */\nvar isTerminal = function(o) {\n return typeof o !== 'object' || o === null;\n};\n\nvar mergeHelpers = {\n\n MAX_MERGE_DEPTH: MAX_MERGE_DEPTH,\n\n isTerminal: isTerminal,\n\n /**\n * Converts null/undefined values into empty object.\n *\n * @param {?Object=} arg Argument to be normalized (nullable optional)\n * @return {!Object}\n */\n normalizeMergeArg: function(arg) {\n return arg === undefined || arg === null ? {} : arg;\n },\n\n /**\n * If merging Arrays, a merge strategy *must* be supplied. If not, it is\n * likely the caller's fault. If this function is ever called with anything\n * but `one` and `two` being `Array`s, it is the fault of the merge utilities.\n *\n * @param {*} one Array to merge into.\n * @param {*} two Array to merge from.\n */\n checkMergeArrayArgs: function(one, two) {\n invariant(\n Array.isArray(one) && Array.isArray(two),\n 'Tried to merge arrays, instead got %s and %s.',\n one,\n two\n );\n },\n\n /**\n * @param {*} one Object to merge into.\n * @param {*} two Object to merge from.\n */\n checkMergeObjectArgs: function(one, two) {\n mergeHelpers.checkMergeObjectArg(one);\n mergeHelpers.checkMergeObjectArg(two);\n },\n\n /**\n * @param {*} arg\n */\n checkMergeObjectArg: function(arg) {\n invariant(\n !isTerminal(arg) && !Array.isArray(arg),\n 'Tried to merge an object, instead got %s.',\n arg\n );\n },\n\n /**\n * @param {*} arg\n */\n checkMergeIntoObjectArg: function(arg) {\n invariant(\n (!isTerminal(arg) || typeof arg === 'function') && !Array.isArray(arg),\n 'Tried to merge into an object, instead got %s.',\n arg\n );\n },\n\n /**\n * Checks that a merge was not given a circular object or an object that had\n * too great of depth.\n *\n * @param {number} Level of recursion to validate against maximum.\n */\n checkMergeLevel: function(level) {\n invariant(\n level < MAX_MERGE_DEPTH,\n 'Maximum deep merge depth exceeded. You may be attempting to merge ' +\n 'circular structures in an unsupported way.'\n );\n },\n\n /**\n * Checks that the supplied merge strategy is valid.\n *\n * @param {string} Array merge strategy.\n */\n checkArrayStrategy: function(strategy) {\n invariant(\n strategy === undefined || strategy in mergeHelpers.ArrayStrategies,\n 'You must provide an array strategy to deep merge functions to ' +\n 'instruct the deep merge how to resolve merging two arrays.'\n );\n },\n\n /**\n * Set of possible behaviors of merge algorithms when encountering two Arrays\n * that must be merged together.\n * - `clobber`: The left `Array` is ignored.\n * - `indexByIndex`: The result is achieved by recursively deep merging at\n * each index. (not yet supported.)\n */\n ArrayStrategies: keyMirror({\n Clobber: true,\n IndexByIndex: true\n })\n\n};\n\nmodule.exports = mergeHelpers;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/mergeHelpers.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/platform/NodeHandle.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nNodeHandle={\n\n\n\ninjection:{\ninjectImplementation:function(Impl){\nNodeHandle._Implementation = Impl;}},\n\n\n\n_Implementation:null,\n\n\n\n\n\ngetRootNodeID:function(nodeHandle){\nreturn NodeHandle._Implementation.getRootNodeID(nodeHandle);}};\n\n\n\nmodule.exports = NodeHandle;","sourceCode":"/**\n * @providesModule NodeHandle\n */\n\n /**\n * A \"handle\" is a serializable representation of the underlying platform's\n * native node abstraction. This allows reasoning about nodes behind a thread\n * (worker) boundary. On some platforms (DOM main thread) the node handle *is*\n * an actual DOM node - `NodeHandle` (and potentially other libraries)\n * abstract away those differences so you can write code that doesn't depend\n * on whether or not you are running in a worker. For example, you could write\n * application code:\n *\n *\n * SomeLibrary.measureNodeHandle(myNodeHandle, cb)\n *\n * Where `measureNodeHandle` knows how to handle actual DOM nodes if running\n * in a worker thread, and knows how to handle numeric IDs if running in a\n * worker thread.\n *\n * The only other requirement of a platform/environment is that it always be\n * possible to extract the React rootNodeID in a blocking manner (see\n * `getRootNodeID`).\n *\n * +------------------+ +------------------+ +------------------+\n * | | | | | |\n * | ReactJS | | YourUtilities | | Animation Utils |\n * | | | | | |\n * +------------------+ +------------------+ +------------------+\n *\n * +------------------------------------------------------------+\n * | Async Platform Independent Node Interface |\n * +------------------------------------------------------------+\n * | |\n * | NodeIterface: |\n * | -measure(nodeHandle, cb) |\n * | -setProperties(nodeHandle, cb) |\n * | -manageChildren(nodeHandle, nodeHandles, cb) |\n * | ... |\n * | |\n * | Note: This may be a simplification. We could break up much |\n * | of this functionality into several smaller libraries, each |\n * | one requiring a . |\n * +------------------------------------------------------------+\n *\n * +------------------------------------------------------------+\n * | Platform Implementations |\n * | ----------------------------------------- |\n * | React Canvas | React DOM Worker | React DOM main |\n * +------------------------------------------------------------+\n * | | | |\n * |-measure(..) |-measure(..) |-measure(..) |\n * |-setProperties(..) |-setProperties(..) |-setProperties(..) |\n * |-manageChildren(..)|-manageChildren(..) |-manageChildren(..)|\n * | ... | ... | ... |\n * +-----------------------------o------------------------------+\n * | Worker simply ^\n * | marshals commands |\n * | to Web DOM thread. |\n * +---------------------+\n */\nvar NodeHandle = {\n /**\n * Injection\n */\n injection: {\n injectImplementation: function(Impl) {\n NodeHandle._Implementation = Impl;\n }\n },\n\n _Implementation: null,\n\n /**\n * @param {NodeHandle} nodeHandle The handle to the low level resource.\n * @return {string} React root node ID.\n */\n getRootNodeID: function(nodeHandle) {\n return NodeHandle._Implementation.getRootNodeID(nodeHandle);\n }\n};\n\nmodule.exports = NodeHandle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/platform/NodeHandle.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactDefaultBatchingStrategy.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactUpdates=require('ReactUpdates');\nvar Transaction=require('Transaction');\n\nvar assign=require('Object.assign');\nvar emptyFunction=require('emptyFunction');\n\nvar RESET_BATCHED_UPDATES={\ninitialize:emptyFunction,\nclose:function(){\nReactDefaultBatchingStrategy.isBatchingUpdates = false;}};\n\n\n\nvar FLUSH_BATCHED_UPDATES={\ninitialize:emptyFunction,\nclose:ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)};\n\n\nvar TRANSACTION_WRAPPERS=[FLUSH_BATCHED_UPDATES,RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction(){\nthis.reinitializeTransaction();}\n\n\nassign(\nReactDefaultBatchingStrategyTransaction.prototype,\nTransaction.Mixin,\n{\ngetTransactionWrappers:function(){\nreturn TRANSACTION_WRAPPERS;}});\n\n\n\n\nvar transaction=new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy={\nisBatchingUpdates:false,\n\n\n\n\n\nbatchedUpdates:function(callback,a,b,c,d){\nvar alreadyBatchingUpdates=ReactDefaultBatchingStrategy.isBatchingUpdates;\n\nReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n\nif(alreadyBatchingUpdates){\ncallback(a,b,c,d);}else \n{\ntransaction.perform(callback,null,a,b,c,d);}}};\n\n\n\n\nmodule.exports = ReactDefaultBatchingStrategy;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDefaultBatchingStrategy\n */\n\n'use strict';\n\nvar ReactUpdates = require('ReactUpdates');\nvar Transaction = require('Transaction');\n\nvar assign = require('Object.assign');\nvar emptyFunction = require('emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function() {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\nassign(\n ReactDefaultBatchingStrategyTransaction.prototype,\n Transaction.Mixin,\n {\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n }\n }\n);\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function(callback, a, b, c, d) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n callback(a, b, c, d);\n } else {\n transaction.perform(callback, null, a, b, c, d);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactDefaultBatchingStrategy.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeBaseComponentEnvironment.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeDOMIDOperations=require('ReactNativeDOMIDOperations');\nvar ReactNativeReconcileTransaction=require('ReactNativeReconcileTransaction');\n\nvar ReactNativeComponentEnvironment={\n\nprocessChildrenUpdates:ReactNativeDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\nreplaceNodeWithMarkupByID:ReactNativeDOMIDOperations.dangerouslyReplaceNodeWithMarkupByID,\n\n\n\n\n\n\nunmountIDFromEnvironment:function(){},\n\n\n\n\n\n\nclearNode:function(){},\n\n\n\nReactReconcileTransaction:ReactNativeReconcileTransaction};\n\n\nmodule.exports = ReactNativeComponentEnvironment;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeComponentEnvironment\n * @flow\n */\n'use strict';\n\nvar ReactNativeDOMIDOperations = require('ReactNativeDOMIDOperations');\nvar ReactNativeReconcileTransaction = require('ReactNativeReconcileTransaction');\n\nvar ReactNativeComponentEnvironment = {\n\n processChildrenUpdates: ReactNativeDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkupByID: ReactNativeDOMIDOperations.dangerouslyReplaceNodeWithMarkupByID,\n\n /**\n * Nothing to do for UIKit bridge.\n *\n * @private\n */\n unmountIDFromEnvironment: function(/*rootNodeID*/) {\n\n },\n\n /**\n * @param {DOMElement} Element to clear.\n */\n clearNode: function(/*containerView*/) {\n\n },\n\n ReactReconcileTransaction: ReactNativeReconcileTransaction,\n};\n\nmodule.exports = ReactNativeComponentEnvironment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeBaseComponentEnvironment.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeDOMIDOperations.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar ReactMultiChildUpdateTypes=require('ReactMultiChildUpdateTypes');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar ReactPerf=require('ReactPerf');\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar dangerouslyProcessChildrenUpdates=function(childrenUpdates,markupList){\nif(!childrenUpdates.length){\nreturn;}\n\nvar byContainerTag={};\n\n\nfor(var i=0;i < childrenUpdates.length;i++) {\nvar update=childrenUpdates[i];\nvar containerTag=ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(update.parentID);\nvar updates=byContainerTag[containerTag] || (byContainerTag[containerTag] = {});\nif(update.type === ReactMultiChildUpdateTypes.MOVE_EXISTING){\n(updates.moveFromIndices || (updates.moveFromIndices = [])).push(update.fromIndex);\n(updates.moveToIndices || (updates.moveToIndices = [])).push(update.toIndex);}else \nif(update.type === ReactMultiChildUpdateTypes.REMOVE_NODE){\n(updates.removeAtIndices || (updates.removeAtIndices = [])).push(update.fromIndex);}else \nif(update.type === ReactMultiChildUpdateTypes.INSERT_MARKUP){\nvar mountImage=markupList[update.markupIndex];\nvar tag=mountImage.tag;\nvar rootNodeID=mountImage.rootNodeID;\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(rootNodeID,tag);\n(updates.addAtIndices || (updates.addAtIndices = [])).push(update.toIndex);\n(updates.addChildTags || (updates.addChildTags = [])).push(tag);}}\n\n\n\n\n\nfor(var updateParentTagString in byContainerTag) {\nvar updateParentTagNumber=+updateParentTagString;\nvar childUpdatesToSend=byContainerTag[updateParentTagNumber];\nRCTUIManager.manageChildren(\nupdateParentTagNumber,\nchildUpdatesToSend.moveFromIndices,\nchildUpdatesToSend.moveToIndices,\nchildUpdatesToSend.addChildTags,\nchildUpdatesToSend.addAtIndices,\nchildUpdatesToSend.removeAtIndices);}};\n\n\n\n\n\n\n\n\nvar ReactNativeDOMIDOperations={\ndangerouslyProcessChildrenUpdates:ReactPerf.measure(\n\n'ReactDOMIDOperations',\n'dangerouslyProcessChildrenUpdates',\ndangerouslyProcessChildrenUpdates),\n\n\n\n\n\n\n\n\ndangerouslyReplaceNodeWithMarkupByID:ReactPerf.measure(\n'ReactDOMIDOperations',\n'dangerouslyReplaceNodeWithMarkupByID',\nfunction(id,mountImage){\nvar oldTag=ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(id);\nRCTUIManager.replaceExistingNonRootView(oldTag,mountImage.tag);\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(id,mountImage.tag);})};\n\n\n\n\nmodule.exports = ReactNativeDOMIDOperations;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeDOMIDOperations\n * @flow\n */\n'use strict';\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar ReactMultiChildUpdateTypes = require('ReactMultiChildUpdateTypes');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar ReactPerf = require('ReactPerf');\n\n/**\n * Updates a component's children by processing a series of updates.\n * For each of the update/create commands, the `fromIndex` refers to the index\n * that the item existed at *before* any of the updates are applied, and the\n * `toIndex` refers to the index after *all* of the updates are applied\n * (including deletes/moves). TODO: refactor so this can be shared with\n * DOMChildrenOperations.\n *\n * @param {array<object>} updates List of update configurations.\n * @param {array<string>} markup List of markup strings - in the case of React\n * IOS, the ids of new components assumed to be already created.\n */\nvar dangerouslyProcessChildrenUpdates = function(childrenUpdates, markupList) {\n if (!childrenUpdates.length) {\n return;\n }\n var byContainerTag = {};\n // Group by parent ID - send them across the bridge in separate commands per\n // containerID.\n for (var i = 0; i < childrenUpdates.length; i++) {\n var update = childrenUpdates[i];\n var containerTag = ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(update.parentID);\n var updates = byContainerTag[containerTag] || (byContainerTag[containerTag] = {});\n if (update.type === ReactMultiChildUpdateTypes.MOVE_EXISTING) {\n (updates.moveFromIndices || (updates.moveFromIndices = [])).push(update.fromIndex);\n (updates.moveToIndices || (updates.moveToIndices = [])).push(update.toIndex);\n } else if (update.type === ReactMultiChildUpdateTypes.REMOVE_NODE) {\n (updates.removeAtIndices || (updates.removeAtIndices = [])).push(update.fromIndex);\n } else if (update.type === ReactMultiChildUpdateTypes.INSERT_MARKUP) {\n var mountImage = markupList[update.markupIndex];\n var tag = mountImage.tag;\n var rootNodeID = mountImage.rootNodeID;\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(rootNodeID, tag);\n (updates.addAtIndices || (updates.addAtIndices = [])).push(update.toIndex);\n (updates.addChildTags || (updates.addChildTags = [])).push(tag);\n }\n }\n // Note this enumeration order will be different on V8! Move `byContainerTag`\n // to a sparse array as soon as we confirm there are not horrible perf\n // penalties.\n for (var updateParentTagString in byContainerTag) {\n var updateParentTagNumber = +updateParentTagString;\n var childUpdatesToSend = byContainerTag[updateParentTagNumber];\n RCTUIManager.manageChildren(\n updateParentTagNumber,\n childUpdatesToSend.moveFromIndices,\n childUpdatesToSend.moveToIndices,\n childUpdatesToSend.addChildTags,\n childUpdatesToSend.addAtIndices,\n childUpdatesToSend.removeAtIndices\n );\n }\n};\n\n/**\n * Operations used to process updates to DOM nodes. This is made injectable via\n * `ReactComponent.DOMIDOperations`.\n */\nvar ReactNativeDOMIDOperations = {\n dangerouslyProcessChildrenUpdates: ReactPerf.measure(\n // FIXME(frantic): #4441289 Hack to avoid modifying react-tools\n 'ReactDOMIDOperations',\n 'dangerouslyProcessChildrenUpdates',\n dangerouslyProcessChildrenUpdates\n ),\n\n /**\n * Replaces a view that exists in the document with markup.\n *\n * @param {string} id ID of child to be replaced.\n * @param {string} markup Mount image to replace child with id.\n */\n dangerouslyReplaceNodeWithMarkupByID: ReactPerf.measure(\n 'ReactDOMIDOperations',\n 'dangerouslyReplaceNodeWithMarkupByID',\n function(id, mountImage) {\n var oldTag = ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(id);\n RCTUIManager.replaceExistingNonRootView(oldTag, mountImage.tag);\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(id, mountImage.tag);\n }\n ),\n};\n\nmodule.exports = ReactNativeDOMIDOperations;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeDOMIDOperations.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactMultiChildUpdateTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=require('keyMirror');\n\n\n\n\n\n\n\n\n\nvar ReactMultiChildUpdateTypes=keyMirror({\nINSERT_MARKUP:null,\nMOVE_EXISTING:null,\nREMOVE_NODE:null,\nTEXT_CONTENT:null});\n\n\nmodule.exports = ReactMultiChildUpdateTypes;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMultiChildUpdateTypes\n */\n\n'use strict';\n\nvar keyMirror = require('keyMirror');\n\n/**\n * When a component's children are updated, a series of update configuration\n * objects are created in order to batch and serialize the required changes.\n *\n * Enumerates all the possible types of update configurations.\n *\n * @internal\n */\nvar ReactMultiChildUpdateTypes = keyMirror({\n INSERT_MARKUP: null,\n MOVE_EXISTING: null,\n REMOVE_NODE: null,\n TEXT_CONTENT: null\n});\n\nmodule.exports = ReactMultiChildUpdateTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactMultiChildUpdateTypes.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeReconcileTransaction.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar CallbackQueue=require('CallbackQueue');\nvar PooledClass=require('PooledClass');\nvar Transaction=require('Transaction');\n\n\n\n\n\nvar ON_DOM_READY_QUEUEING={\n\n\n\ninitialize:function(){\nthis.reactMountReady.reset();},\n\n\n\n\n\nclose:function(){\nthis.reactMountReady.notifyAll();}};\n\n\n\n\n\n\n\n\nvar TRANSACTION_WRAPPERS=[ON_DOM_READY_QUEUEING];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ReactNativeReconcileTransaction(){\nthis.reinitializeTransaction();\nthis.reactMountReady = CallbackQueue.getPooled(null);}\n\n\nvar Mixin={\n\n\n\n\n\n\n\ngetTransactionWrappers:function(){\nreturn TRANSACTION_WRAPPERS;},\n\n\n\n\n\n\ngetReactMountReady:function(){\nreturn this.reactMountReady;},\n\n\n\n\n\n\ndestructor:function(){\nCallbackQueue.release(this.reactMountReady);\nthis.reactMountReady = null;}};\n\n\n\nObject.assign(\nReactNativeReconcileTransaction.prototype,\nTransaction.Mixin,\nReactNativeReconcileTransaction,\nMixin);\n\n\nPooledClass.addPoolingTo(ReactNativeReconcileTransaction);\n\nmodule.exports = ReactNativeReconcileTransaction;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeReconcileTransaction\n * @flow\n */\n'use strict';\n\nvar CallbackQueue = require('CallbackQueue');\nvar PooledClass = require('PooledClass');\nvar Transaction = require('Transaction');\n\n/**\n * Provides a `CallbackQueue` queue for collecting `onDOMReady` callbacks during\n * the performing of the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function() {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function() {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [ON_DOM_READY_QUEUEING];\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactNativeReconcileTransaction\n */\nfunction ReactNativeReconcileTransaction() {\n this.reinitializeTransaction();\n this.reactMountReady = CallbackQueue.getPooled(null);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap proceedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n * TODO: convert to ReactMountReady\n */\n getReactMountReady: function() {\n return this.reactMountReady;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be resused.\n */\n destructor: function() {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\nObject.assign(\n ReactNativeReconcileTransaction.prototype,\n Transaction.Mixin,\n ReactNativeReconcileTransaction,\n Mixin\n);\n\nPooledClass.addPoolingTo(ReactNativeReconcileTransaction);\n\nmodule.exports = ReactNativeReconcileTransaction;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeReconcileTransaction.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeGlobalInteractionHandler.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar InteractionManager=require('InteractionManager');\n\n\n\nvar interactionHandle=null;\n\nvar ReactNativeGlobalInteractionHandler={\nonChange:function(numberActiveTouches){\nif(numberActiveTouches === 0){\nif(interactionHandle){\nInteractionManager.clearInteractionHandle(interactionHandle);\ninteractionHandle = null;}}else \n\nif(!interactionHandle){\ninteractionHandle = InteractionManager.createInteractionHandle();}}};\n\n\n\n\nmodule.exports = ReactNativeGlobalInteractionHandler;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeGlobalInteractionHandler\n * @flow\n */\n'use strict';\n\nvar InteractionManager = require('InteractionManager');\n\n// Interaction handle is created/cleared when responder is granted or\n// released/terminated.\nvar interactionHandle = null;\n\nvar ReactNativeGlobalInteractionHandler = {\n onChange: function(numberActiveTouches: number) {\n if (numberActiveTouches === 0) {\n if (interactionHandle) {\n InteractionManager.clearInteractionHandle(interactionHandle);\n interactionHandle = null;\n }\n } else if (!interactionHandle) {\n interactionHandle = InteractionManager.createInteractionHandle();\n }\n }\n};\n\nmodule.exports = ReactNativeGlobalInteractionHandler;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeGlobalInteractionHandler.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Interaction/InteractionManager.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ErrorUtils=require('ErrorUtils');\nvar EventEmitter=require('EventEmitter');\nvar Set=require('Set');\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar setImmediate=require('setImmediate');\n\n\n\nvar _emitter=new EventEmitter();\nvar _interactionSet=new Set();\nvar _addInteractionSet=new Set();\nvar _deleteInteractionSet=new Set();\nvar _nextUpdateHandle=null;\nvar _queue=[];\nvar _inc=0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar InteractionManager={\nEvents:keyMirror({\ninteractionStart:true,\ninteractionComplete:true}),\n\n\n\n\n\nrunAfterInteractions:function(callback){\ninvariant(\ntypeof callback === 'function',\n'Must specify a function to schedule.');\n\nscheduleUpdate();\n_queue.push(callback);},\n\n\n\n\n\ncreateInteractionHandle:function(){\nscheduleUpdate();\nvar handle=++_inc;\n_addInteractionSet.add(handle);\nreturn handle;},\n\n\n\n\n\nclearInteractionHandle:function(handle){\ninvariant(\n!!handle,\n'Must provide a handle to clear.');\n\nscheduleUpdate();\n_addInteractionSet.delete(handle);\n_deleteInteractionSet.add(handle);},\n\n\naddListener:_emitter.addListener.bind(_emitter)};\n\n\n\n\n\nfunction scheduleUpdate(){\nif(!_nextUpdateHandle){\n_nextUpdateHandle = setImmediate(processUpdate);}}\n\n\n\n\n\n\nfunction processUpdate(){\n_nextUpdateHandle = null;\n\nvar interactionCount=_interactionSet.size;\n_addInteractionSet.forEach(function(handle){return (\n_interactionSet.add(handle));});\n\n_deleteInteractionSet.forEach(function(handle){return (\n_interactionSet.delete(handle));});\n\nvar nextInteractionCount=_interactionSet.size;\n\nif(interactionCount !== 0 && nextInteractionCount === 0){\n\n_emitter.emit(InteractionManager.Events.interactionComplete);}else \nif(interactionCount === 0 && nextInteractionCount !== 0){\n\n_emitter.emit(InteractionManager.Events.interactionStart);}\n\n\n\nif(nextInteractionCount === 0){\nvar queue=_queue;\n_queue = [];\nqueue.forEach(function(callback){\nErrorUtils.applyWithGuard(callback);});}\n\n\n\n_addInteractionSet.clear();\n_deleteInteractionSet.clear();}\n\n\nmodule.exports = InteractionManager;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InteractionManager\n * @flow\n */\n'use strict';\n\nvar ErrorUtils = require('ErrorUtils');\nvar EventEmitter = require('EventEmitter');\nvar Set = require('Set');\n\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar setImmediate = require('setImmediate');\n\ntype Handle = number;\n\nvar _emitter = new EventEmitter();\nvar _interactionSet = new Set();\nvar _addInteractionSet = new Set();\nvar _deleteInteractionSet = new Set();\nvar _nextUpdateHandle = null;\nvar _queue = [];\nvar _inc = 0;\n\n/**\n * InteractionManager allows long-running work to be scheduled after any\n * interactions/animations have completed. In particular, this allows JavaScript\n * animations to run smoothly.\n *\n * Applications can schedule tasks to run after interactions with the following:\n *\n * ```\n * InteractionManager.runAfterInteractions(() => {\n * // ...long-running synchronous task...\n * });\n * ```\n *\n * Compare this to other scheduling alternatives:\n *\n * - requestAnimationFrame(): for code that animates a view over time.\n * - setImmediate/setTimeout(): run code later, note this may delay animations.\n * - runAfterInteractions(): run code later, without delaying active animations.\n *\n * The touch handling system considers one or more active touches to be an\n * 'interaction' and will delay `runAfterInteractions()` callbacks until all\n * touches have ended or been cancelled.\n *\n * InteractionManager also allows applications to register animations by\n * creating an interaction 'handle' on animation start, and clearing it upon\n * completion:\n *\n * ```\n * var handle = InteractionManager.createInteractionHandle();\n * // run animation... (`runAfterInteractions` tasks are queued)\n * // later, on animation completion:\n * InteractionManager.clearInteractionHandle(handle);\n * // queued tasks run if all handles were cleared\n * ```\n */\nvar InteractionManager = {\n Events: keyMirror({\n interactionStart: true,\n interactionComplete: true,\n }),\n\n /**\n * Schedule a function to run after all interactions have completed.\n */\n runAfterInteractions(callback: Function) {\n invariant(\n typeof callback === 'function',\n 'Must specify a function to schedule.'\n );\n scheduleUpdate();\n _queue.push(callback);\n },\n\n /**\n * Notify manager that an interaction has started.\n */\n createInteractionHandle(): Handle {\n scheduleUpdate();\n var handle = ++_inc;\n _addInteractionSet.add(handle);\n return handle;\n },\n\n /**\n * Notify manager that an interaction has completed.\n */\n clearInteractionHandle(handle: Handle) {\n invariant(\n !!handle,\n 'Must provide a handle to clear.'\n );\n scheduleUpdate();\n _addInteractionSet.delete(handle);\n _deleteInteractionSet.add(handle);\n },\n\n addListener: _emitter.addListener.bind(_emitter),\n};\n\n/**\n * Schedule an asynchronous update to the interaction state.\n */\nfunction scheduleUpdate() {\n if (!_nextUpdateHandle) {\n _nextUpdateHandle = setImmediate(processUpdate);\n }\n}\n\n/**\n * Notify listeners, process queue, etc\n */\nfunction processUpdate() {\n _nextUpdateHandle = null;\n\n var interactionCount = _interactionSet.size;\n _addInteractionSet.forEach(handle =>\n _interactionSet.add(handle)\n );\n _deleteInteractionSet.forEach(handle =>\n _interactionSet.delete(handle)\n );\n var nextInteractionCount = _interactionSet.size;\n\n if (interactionCount !== 0 && nextInteractionCount === 0) {\n // transition from 1+ --> 0 interactions\n _emitter.emit(InteractionManager.Events.interactionComplete);\n } else if (interactionCount === 0 && nextInteractionCount !== 0) {\n // transition from 0 --> 1+ interactions\n _emitter.emit(InteractionManager.Events.interactionStart);\n }\n\n // process the queue regardless of a transition\n if (nextInteractionCount === 0) {\n var queue = _queue;\n _queue = [];\n queue.forEach(callback => {\n ErrorUtils.applyWithGuard(callback);\n });\n }\n\n _addInteractionSet.clear();\n _deleteInteractionSet.clear();\n}\n\nmodule.exports = InteractionManager;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Interaction/InteractionManager.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/Set.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Map=require('Map');\nvar toIterator=require('toIterator');\nvar _shouldPolyfillES6Collection=require('_shouldPolyfillES6Collection');\n\nmodule.exports = (function(global,undefined){\n\n\n\n\n\nif(!_shouldPolyfillES6Collection('Set')){\nreturn global.Set;}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSet=(function(){\n\n\n\n\n\n\n\n\n\n\nfunction Set(iterable){_classCallCheck(this,Set);\nif(this == null || \ntypeof this !== 'object' && typeof this !== 'function'){\nthrow new TypeError('Wrong set object type.');}\n\n\ninitSet(this);\n\nif(iterable != null){\nvar it=toIterator(iterable);\nvar next;\nwhile(!(next = it.next()).done) {\nthis.add(next.value);}}}_createClass(Set,[{key:'add',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction add(value){\nthis._map.set(value,value);\nthis.size = this._map.size;\nreturn this;}},{key:'clear',value:\n\n\n\n\n\n\n\nfunction clear(){\ninitSet(this);}},{key:'delete',value:\n\n\n\n\n\n\n\n\n\n\n\nfunction _delete(value){\nvar ret=this._map.delete(value);\nthis.size = this._map.size;\nreturn ret;}},{key:'entries',value:\n\n\n\n\n\n\n\nfunction entries(){\nreturn this._map.entries();}},{key:'forEach',value:\n\n\n\n\n\n\n\n\n\nfunction forEach(callback){\nvar thisArg=arguments[1];\nvar it=this._map.keys();\nvar next;\nwhile(!(next = it.next()).done) {\ncallback.call(thisArg,next.value,next.value,this);}}},{key:'has',value:\n\n\n\n\n\n\n\n\n\n\n\nfunction has(value){\nreturn this._map.has(value);}},{key:'values',value:\n\n\n\n\n\n\n\nfunction values(){\nreturn this._map.values();}}]);return Set;})();\n\n\n\n\nSet.prototype[toIterator.ITERATOR_SYMBOL] = Set.prototype.values;\n\n\nSet.prototype.keys = Set.prototype.values;\n\nfunction initSet(set){\nset._map = new Map();\nset.size = set._map.size;}\n\n\nreturn Set;})(\nFunction('return this')());","sourceCode":"/**\n * @generated SignedSource<<1fe20877e83ba5d4d0ea68ab240df21c>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n * @providesModule Set\n * @preventMunge\n * @typechecks\n */\n\nvar Map = require('Map');\nvar toIterator = require('toIterator');\nvar _shouldPolyfillES6Collection = require('_shouldPolyfillES6Collection');\n\nmodule.exports = (function(global, undefined) {\n // Since our implementation is spec-compliant for the most part we can safely\n // delegate to a built-in version if exists and is implemented correctly.\n // Firefox had gotten a few implementation details wrong across different\n // versions so we guard against that.\n // These checks are adapted from es6-shim https://fburl.com/34437854\n if (!_shouldPolyfillES6Collection('Set')) {\n return global.Set;\n }\n\n /**\n * == ES6 Set Collection ==\n *\n * This module is meant to implement a Set collection as described in chapter\n * 23.2 of the ES6 specification.\n *\n * Set objects are collections of unique values. Where values can be any\n * JavaScript value.\n * https://people.mozilla.org/~jorendorff/es6-draft.html#sec-map-objects\n *\n * There only two -- rather small -- diviations from the spec:\n *\n * 1. The use of frozen objects as keys. @see Map module for more on this.\n *\n * 2. The `size` property on a map object is a regular property and not a\n * computed property on the prototype as described by the spec.\n * The reason being is that we simply want to support ES3 environments\n * which doesn't implement computed properties.\n *\n * == Usage ==\n *\n * var set = new set(iterable);\n *\n * set.set(value);\n * set.has(value); // true\n * set.delete(value); // true\n *\n * var iterator = set.keys();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = set.values();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = set.entries();\n * iterator.next(); // {value: [value, value], done: false}\n *\n * set.forEach(function(value, value){ this === thisArg }, thisArg);\n *\n * set.clear(); // resets set.\n */\n\n class Set {\n\n /**\n * 23.2.1.1\n *\n * Takes an optional `iterable` (which is basically any object that\n * implements a Symbol.iterator (@@iterator) method). That is a collection\n * of values used to instantiate the set.\n *\n * @param {*} iterable\n */\n constructor(iterable) {\n if (this == null ||\n (typeof this !== 'object' && typeof this !== 'function')) {\n throw new TypeError('Wrong set object type.');\n }\n\n initSet(this);\n\n if (iterable != null) {\n var it = toIterator(iterable);\n var next;\n while (!(next = it.next()).done) {\n this.add(next.value);\n }\n }\n }\n\n /**\n * 23.2.3.1\n *\n * If it doesn't already exist in the collection a `value` is added.\n *\n * @param {*} value\n * @return {set}\n */\n add(value) {\n this._map.set(value, value);\n this.size = this._map.size;\n return this;\n }\n\n /**\n * 23.2.3.2\n *\n * Clears the set.\n */\n clear() {\n initSet(this);\n }\n\n /**\n * 23.2.3.4\n *\n * Deletes a `value` from the collection if it exists.\n * Returns true if the value was found and deleted and false otherwise.\n *\n * @param {*} value\n * @return {boolean}\n */\n delete(value) {\n var ret = this._map.delete(value);\n this.size = this._map.size;\n return ret;\n }\n\n /**\n * 23.2.3.5\n *\n * Returns an iterator over a collection of [value, value] tuples.\n */\n entries() {\n return this._map.entries();\n }\n\n /**\n * 23.2.3.6\n *\n * Iterate over the collection calling `callback` with (value, value, set).\n *\n * @param {function} callback\n */\n forEach(callback) {\n var thisArg = arguments[1];\n var it = this._map.keys();\n var next;\n while (!(next = it.next()).done) {\n callback.call(thisArg, next.value, next.value, this);\n }\n }\n\n /**\n * 23.2.3.7\n *\n * Iterate over the collection calling `callback` with (value, value, set).\n *\n * @param {*} value\n * @return {boolean}\n */\n has(value) {\n return this._map.has(value);\n }\n\n /**\n * 23.2.3.7\n *\n * Returns an iterator over the colleciton of values.\n */\n values() {\n return this._map.values();\n }\n }\n\n // 23.2.3.11\n Set.prototype[toIterator.ITERATOR_SYMBOL] = Set.prototype.values;\n\n // 23.2.3.7\n Set.prototype.keys = Set.prototype.values;\n\n function initSet(set) {\n set._map = new Map();\n set.size = set._map.size;\n }\n\n return Set;\n})(/* jslint evil: true */ Function('return this')());\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/Set.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/Map.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar guid=require('guid');\nvar isNode=require('isNode');\nvar toIterator=require('toIterator');\nvar _shouldPolyfillES6Collection=require('_shouldPolyfillES6Collection');\n\nmodule.exports = (function(global,undefined){\n\n\n\n\nif(!_shouldPolyfillES6Collection('Map')){\nreturn global.Map;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar KIND_KEY='key';\nvar KIND_VALUE='value';\nvar KIND_KEY_VALUE='key+value';\n\n\n\nvar KEY_PREFIX='$map_';\n\n\n\nvar SECRET_SIZE_PROP;\nif(__DEV__){\nSECRET_SIZE_PROP = '$size' + guid();}\n\n\n\nvar OLD_IE_HASH_PREFIX='IE_HASH_';var \n\nMap=(function(){\n\n\n\n\n\n\n\n\n\n\nfunction Map(iterable){_classCallCheck(this,Map);\nif(!isObject(this)){\nthrow new TypeError('Wrong map object type.');}\n\n\ninitMap(this);\n\nif(iterable != null){\nvar it=toIterator(iterable);\nvar next;\nwhile(!(next = it.next()).done) {\nif(!isObject(next.value)){\nthrow new TypeError('Expected iterable items to be pair objects.');}\n\nthis.set(next.value[0],next.value[1]);}}}_createClass(Map,[{key:'clear',value:\n\n\n\n\n\n\n\n\nfunction clear(){\ninitMap(this);}},{key:'has',value:\n\n\n\n\n\n\n\n\n\nfunction has(key){\nvar index=getIndex(this,key);\nreturn !!(index != null && this._mapData[index]);}},{key:'set',value:\n\n\n\n\n\n\n\n\n\n\nfunction set(key,value){\nvar index=getIndex(this,key);\n\nif(index != null && this._mapData[index]){\nthis._mapData[index][1] = value;}else \n{\nindex = this._mapData.push([\nkey,\nvalue]) - \n1;\nsetIndex(this,key,index);\nif(__DEV__){\nthis[SECRET_SIZE_PROP] += 1;}else \n{\nthis.size += 1;}}\n\n\n\nreturn this;}},{key:'get',value:\n\n\n\n\n\n\n\n\n\nfunction get(key){\nvar index=getIndex(this,key);\nif(index == null){\nreturn undefined;}else \n{\nreturn this._mapData[index][1];}}},{key:'delete',value:\n\n\n\n\n\n\n\n\n\n\n\nfunction _delete(key){\nvar index=getIndex(this,key);\nif(index != null && this._mapData[index]){\nsetIndex(this,key,undefined);\nthis._mapData[index] = undefined;\nif(__DEV__){\nthis[SECRET_SIZE_PROP] -= 1;}else \n{\nthis.size -= 1;}\n\nreturn true;}else \n{\nreturn false;}}},{key:'entries',value:\n\n\n\n\n\n\n\n\n\n\nfunction entries(){\nreturn new MapIterator(this,KIND_KEY_VALUE);}},{key:'keys',value:\n\n\n\n\n\n\n\n\nfunction keys(){\nreturn new MapIterator(this,KIND_KEY);}},{key:'values',value:\n\n\n\n\n\n\n\n\nfunction values(){\nreturn new MapIterator(this,KIND_VALUE);}},{key:'forEach',value:\n\n\n\n\n\n\n\n\n\n\n\nfunction forEach(callback,thisArg){\nif(typeof callback !== 'function'){\nthrow new TypeError('Callback must be callable.');}\n\n\nvar boundCallback=callback.bind(thisArg || undefined);\nvar mapData=this._mapData;\n\n\n\n\nfor(var i=0;i < mapData.length;i++) {\nvar entry=mapData[i];\nif(entry != null){\nboundCallback(entry[1],entry[0],this);}}}}]);return Map;})();\n\n\n\n\n\n\nMap.prototype[toIterator.ITERATOR_SYMBOL] = Map.prototype.entries;var \n\nMapIterator=(function(){\n\n\n\n\n\n\n\n\n\nfunction MapIterator(map,kind){_classCallCheck(this,MapIterator);\nif(!(isObject(map) && map['_mapData'])){\nthrow new TypeError('Object is not a map.');}\n\n\nif([KIND_KEY,KIND_KEY_VALUE,KIND_VALUE].indexOf(kind) === -1){\nthrow new Error('Invalid iteration kind.');}\n\n\nthis._map = map;\nthis._nextIndex = 0;\nthis._kind = kind;}_createClass(MapIterator,[{key:'next',value:\n\n\n\n\n\n\n\n\nfunction next(){\nif(!this instanceof Map){\nthrow new TypeError('Expected to be called on a MapIterator.');}\n\n\nvar map=this._map;\nvar index=this._nextIndex;\nvar kind=this._kind;\n\nif(map == null){\nreturn createIterResultObject(undefined,true);}\n\n\nvar entries=map['_mapData'];\n\nwhile(index < entries.length) {\nvar record=entries[index];\n\nindex += 1;\nthis._nextIndex = index;\n\nif(record){\nif(kind === KIND_KEY){\nreturn createIterResultObject(record[0],false);}else \nif(kind === KIND_VALUE){\nreturn createIterResultObject(record[1],false);}else \nif(kind){\nreturn createIterResultObject(record,false);}}}\n\n\n\n\nthis._map = undefined;\n\nreturn createIterResultObject(undefined,true);}}]);return MapIterator;})();\n\n\n\n\n\n\nMapIterator.prototype[toIterator.ITERATOR_SYMBOL] = function(){\nreturn this;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getIndex(map,key){\nif(isObject(key)){\nvar hash=getHash(key);\nreturn map._objectIndex[hash];}else \n{\nvar prefixedKey=KEY_PREFIX + key;\nif(typeof key === 'string'){\nreturn map._stringIndex[prefixedKey];}else \n{\nreturn map._otherIndex[prefixedKey];}}}\n\n\n\n\n\n\n\n\n\n\nfunction setIndex(map,key,index){\nvar shouldDelete=index == null;\n\nif(isObject(key)){\nvar hash=getHash(key);\nif(shouldDelete){\ndelete map._objectIndex[hash];}else \n{\nmap._objectIndex[hash] = index;}}else \n\n{\nvar prefixedKey=KEY_PREFIX + key;\nif(typeof key === 'string'){\nif(shouldDelete){\ndelete map._stringIndex[prefixedKey];}else \n{\nmap._stringIndex[prefixedKey] = index;}}else \n\n{\nif(shouldDelete){\ndelete map._otherIndex[prefixedKey];}else \n{\nmap._otherIndex[prefixedKey] = index;}}}}\n\n\n\n\n\n\n\n\n\n\nfunction initMap(map){\n\n\n\n\n\n\nmap._mapData = [];\n\n\n\n\n\n\n\nmap._objectIndex = {};\n\n\nmap._stringIndex = {};\n\n\nmap._otherIndex = {};\n\n\n\n\n\n\n\nif(__DEV__){\nif(isES5){\n\n\n\nif(map.hasOwnProperty(SECRET_SIZE_PROP)){\nmap[SECRET_SIZE_PROP] = 0;}else \n{\nObject.defineProperty(map,SECRET_SIZE_PROP,{\nvalue:0,\nwritable:true});\n\nObject.defineProperty(map,'size',{\nset:function(v){\nconsole.error(\n'PLEASE FIX ME: You are changing the map size property which ' + \n'should not be writable and will break in production.');\n\nthrow new Error('The map size property is not writable.');},\n\nget:function(){return map[SECRET_SIZE_PROP];}});}\n\n\n\n\nreturn;}}\n\n\n\n\n\nmap.size = 0;}\n\n\n\n\n\n\n\n\nfunction isObject(o){\nreturn o != null && (typeof o === 'object' || typeof o === 'function');}\n\n\n\n\n\n\n\n\n\nfunction createIterResultObject(value,done){\nreturn {value:value,done:done};}\n\n\n\nvar isES5=(function(){\ntry{\nObject.defineProperty({},'x',{});\nreturn true;}\ncatch(e) {\nreturn false;}})();\n\n\n\n\n\n\n\n\n\nfunction isExtensible(o){\nif(!isES5){\nreturn true;}else \n{\nreturn Object.isExtensible(o);}}\n\n\n\n\n\n\n\n\n\n\n\nfunction getIENodeHash(node){\nvar uniqueID;\nswitch(node.nodeType){\ncase 1:\nuniqueID = node.uniqueID;\nbreak;\ncase 9:\nuniqueID = node.documentElement.uniqueID;\nbreak;\ndefault:\nreturn null;}\n\n\nif(uniqueID){\nreturn OLD_IE_HASH_PREFIX + uniqueID;}else \n{\nreturn null;}}\n\n\n\nvar getHash=(function(){\nvar propIsEnumerable=Object.prototype.propertyIsEnumerable;\nvar hashProperty=guid();\nvar hashCounter=0;\n\n\n\n\n\n\n\nreturn function getHash(o){\nif(o[hashProperty]){\nreturn o[hashProperty];}else \nif(!isES5 && \no.propertyIsEnumerable && \no.propertyIsEnumerable[hashProperty]){\nreturn o.propertyIsEnumerable[hashProperty];}else \nif(!isES5 && \nisNode(o) && \ngetIENodeHash(o)){\nreturn getIENodeHash(o);}else \nif(!isES5 && o[hashProperty]){\nreturn o[hashProperty];}\n\n\nif(isExtensible(o)){\nhashCounter += 1;\nif(isES5){\nObject.defineProperty(o,hashProperty,{\nenumerable:false,\nwritable:false,\nconfigurable:false,\nvalue:hashCounter});}else \n\nif(o.propertyIsEnumerable){\n\n\n\n\no.propertyIsEnumerable = function(){\nreturn propIsEnumerable.apply(this,arguments);};\n\no.propertyIsEnumerable[hashProperty] = hashCounter;}else \nif(isNode(o)){\n\n\n\n\no[hashProperty] = hashCounter;}else \n{\nthrow new Error('Unable to set a non-enumerable property on object.');}\n\nreturn hashCounter;}else \n{\nthrow new Error('Non-extensible objects are not allowed as keys.');}};})();\n\n\n\n\nreturn Map;})(\nFunction('return this')());","sourceCode":"/**\n * @generated SignedSource<<375749f44ce7c0f681fc1297943eaf74>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n * @providesModule Map\n * @preventMunge\n * @typechecks\n */\n\nvar guid = require('guid');\nvar isNode = require('isNode');\nvar toIterator = require('toIterator');\nvar _shouldPolyfillES6Collection = require('_shouldPolyfillES6Collection');\n\nmodule.exports = (function(global, undefined) {\n // Since our implementation is spec-compliant for the most part we can safely\n // delegate to a built-in version if exists and is implemented correctly.\n // Firefox had gotten a few implementation details wrong across different\n // versions so we guard against that.\n if (!_shouldPolyfillES6Collection('Map')) {\n return global.Map;\n }\n\n /**\n * == ES6 Map Collection ==\n *\n * This module is meant to implement a Map collection as described in chapter\n * 23.1 of the ES6 specification.\n *\n * Map objects are collections of key/value pairs where both the keys and\n * values may be arbitrary ECMAScript language values. A distinct key value\n * may only occur in one key/value pair within the Map's collection.\n *\n * https://people.mozilla.org/~jorendorff/es6-draft.html#sec-map-objects\n *\n * There only two -- rather small -- diviations from the spec:\n *\n * 1. The use of frozen objects as keys.\n * We decided not to allow and simply throw an error. The reason being is\n * we store a \"hash\" on the object for fast access to it's place in the\n * internal map entries.\n * If this turns out to be a popular use case it's possible to implement by\n * overiding `Object.freeze` to store a \"hash\" property on the object\n * for later use with the map.\n *\n * 2. The `size` property on a map object is a regular property and not a\n * computed property on the prototype as described by the spec.\n * The reason being is that we simply want to support ES3 environments\n * which doesn't implement computed properties.\n *\n * == Usage ==\n *\n * var map = new Map(iterable);\n *\n * map.set(key, value);\n * map.get(key); // value\n * map.has(key); // true\n * map.delete(key); // true\n *\n * var iterator = map.keys();\n * iterator.next(); // {value: key, done: false}\n *\n * var iterator = map.values();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = map.entries();\n * iterator.next(); // {value: [key, value], done: false}\n *\n * map.forEach(function(value, key){ this === thisArg }, thisArg);\n *\n * map.clear(); // resets map.\n */\n\n /**\n * Constants\n */\n\n // Kinds of map iterations 23.1.5.3\n var KIND_KEY = 'key';\n var KIND_VALUE = 'value';\n var KIND_KEY_VALUE = 'key+value';\n\n // In older browsers we can't create a null-prototype object so we have to\n // defend against key collisions with built-in methods.\n var KEY_PREFIX = '$map_';\n\n // This property will be used as the internal size variable to disallow\n // writing and to issue warnings for writings in development.\n var SECRET_SIZE_PROP;\n if (__DEV__) {\n SECRET_SIZE_PROP = '$size' + guid();\n }\n\n // In oldIE we use the DOM Node `uniqueID` property to get create the hash.\n var OLD_IE_HASH_PREFIX = 'IE_HASH_';\n\n class Map {\n\n /**\n * 23.1.1.1\n * Takes an `iterable` which is basically any object that implements a\n * Symbol.iterator (@@iterator) method. The iterable is expected to be a\n * collection of pairs. Each pair is a key/value pair that will be used\n * to instantiate the map.\n *\n * @param {*} iterable\n */\n constructor(iterable) {\n if (!isObject(this)) {\n throw new TypeError('Wrong map object type.');\n }\n\n initMap(this);\n\n if (iterable != null) {\n var it = toIterator(iterable);\n var next;\n while (!(next = it.next()).done) {\n if (!isObject(next.value)) {\n throw new TypeError('Expected iterable items to be pair objects.');\n }\n this.set(next.value[0], next.value[1]);\n }\n }\n }\n\n /**\n * 23.1.3.1\n * Clears the map from all keys and values.\n */\n clear() {\n initMap(this);\n }\n\n /**\n * 23.1.3.7\n * Check if a key exists in the collection.\n *\n * @param {*} key\n * @return {boolean}\n */\n has(key) {\n var index = getIndex(this, key);\n return !!(index != null && this._mapData[index]);\n }\n\n /**\n * 23.1.3.9\n * Adds a key/value pair to the collection.\n *\n * @param {*} key\n * @param {*} value\n * @return {map}\n */\n set(key, value) {\n var index = getIndex(this, key);\n\n if (index != null && this._mapData[index]) {\n this._mapData[index][1] = value;\n } else {\n index = this._mapData.push([\n key,\n value\n ]) - 1;\n setIndex(this, key, index);\n if (__DEV__) {\n this[SECRET_SIZE_PROP] += 1;\n } else {\n this.size += 1;\n }\n }\n\n return this;\n }\n\n /**\n * 23.1.3.6\n * Gets a value associated with a key in the collection.\n *\n * @param {*} key\n * @return {*}\n */\n get(key) {\n var index = getIndex(this, key);\n if (index == null) {\n return undefined;\n } else {\n return this._mapData[index][1];\n }\n }\n\n\n /**\n * 23.1.3.3\n * Delete a key/value from the collection.\n *\n * @param {*} key\n * @return {boolean} Whether the key was found and deleted.\n */\n delete(key) {\n var index = getIndex(this, key);\n if (index != null && this._mapData[index]) {\n setIndex(this, key, undefined);\n this._mapData[index] = undefined;\n if (__DEV__) {\n this[SECRET_SIZE_PROP] -= 1;\n } else {\n this.size -= 1;\n }\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * 23.1.3.4\n * Returns an iterator over the key/value pairs (in the form of an Array) in\n * the collection.\n *\n * @return {MapIterator}\n */\n entries() {\n return new MapIterator(this, KIND_KEY_VALUE);\n }\n\n /**\n * 23.1.3.8\n * Returns an iterator over the keys in the collection.\n *\n * @return {MapIterator}\n */\n keys() {\n return new MapIterator(this, KIND_KEY);\n }\n\n /**\n * 23.1.3.11\n * Returns an iterator over the values pairs in the collection.\n *\n * @return {MapIterator}\n */\n values() {\n return new MapIterator(this, KIND_VALUE);\n }\n\n /**\n * 23.1.3.5\n * Iterates over the key/value pairs in the collection calling `callback`\n * with [value, key, map]. An optional `thisArg` can be passed to set the\n * context when `callback` is called.\n *\n * @param {function} callback\n * @param {?object} thisArg\n */\n forEach(callback, thisArg) {\n if (typeof callback !== 'function') {\n throw new TypeError('Callback must be callable.');\n }\n\n var boundCallback = callback.bind(thisArg || undefined);\n var mapData = this._mapData;\n\n // Note that `mapData.length` should be computed on each iteration to\n // support iterating over new items in the map that were added after the\n // start of the iteration.\n for (var i = 0; i < mapData.length; i++) {\n var entry = mapData[i];\n if (entry != null) {\n boundCallback(entry[1], entry[0], this);\n }\n }\n }\n }\n\n // 23.1.3.12\n Map.prototype[toIterator.ITERATOR_SYMBOL] = Map.prototype.entries;\n\n class MapIterator {\n\n /**\n * 23.1.5.1\n * Create a `MapIterator` for a given `map`. While this class is private it\n * will create objects that will be passed around publicily.\n *\n * @param {map} map\n * @param {string} kind\n */\n constructor(map, kind) {\n if (!(isObject(map) && map['_mapData'])) {\n throw new TypeError('Object is not a map.');\n }\n\n if ([KIND_KEY, KIND_KEY_VALUE, KIND_VALUE].indexOf(kind) === -1) {\n throw new Error('Invalid iteration kind.');\n }\n\n this._map = map;\n this._nextIndex = 0;\n this._kind = kind;\n }\n\n /**\n * 23.1.5.2.1\n * Get the next iteration.\n *\n * @return {object}\n */\n next() {\n if (!this instanceof Map) {\n throw new TypeError('Expected to be called on a MapIterator.');\n }\n\n var map = this._map;\n var index = this._nextIndex;\n var kind = this._kind;\n\n if (map == null) {\n return createIterResultObject(undefined, true);\n }\n\n var entries = map['_mapData'];\n\n while (index < entries.length) {\n var record = entries[index];\n\n index += 1;\n this._nextIndex = index;\n\n if (record) {\n if (kind === KIND_KEY) {\n return createIterResultObject(record[0], false);\n } else if (kind === KIND_VALUE) {\n return createIterResultObject(record[1], false);\n } else if (kind) {\n return createIterResultObject(record, false);\n }\n }\n }\n\n this._map = undefined;\n\n return createIterResultObject(undefined, true);\n }\n }\n\n // We can put this in the class definition once we have computed props\n // transform.\n // 23.1.5.2.2\n MapIterator.prototype[toIterator.ITERATOR_SYMBOL] = function() {\n return this;\n }\n\n /**\n * Helper Functions.\n */\n\n /**\n * Return an index to map.[[MapData]] array for a given Key.\n *\n * @param {map} map\n * @param {*} key\n * @return {?number}\n */\n function getIndex(map, key) {\n if (isObject(key)) {\n var hash = getHash(key);\n return map._objectIndex[hash];\n } else {\n var prefixedKey = KEY_PREFIX + key;\n if (typeof key === 'string') {\n return map._stringIndex[prefixedKey];\n } else {\n return map._otherIndex[prefixedKey];\n }\n }\n }\n\n /**\n * Setup an index that refer to the key's location in map.[[MapData]].\n *\n * @param {map} map\n * @param {*} key\n */\n function setIndex(map, key, index) {\n var shouldDelete = index == null;\n\n if (isObject(key)) {\n var hash = getHash(key);\n if (shouldDelete) {\n delete map._objectIndex[hash];\n } else {\n map._objectIndex[hash] = index;\n }\n } else {\n var prefixedKey = KEY_PREFIX + key;\n if (typeof key === 'string') {\n if (shouldDelete) {\n delete map._stringIndex[prefixedKey];\n } else {\n map._stringIndex[prefixedKey] = index;\n }\n } else {\n if (shouldDelete) {\n delete map._otherIndex[prefixedKey];\n } else {\n map._otherIndex[prefixedKey] = index;\n }\n }\n }\n }\n\n /**\n * Instantiate a map with internal slots.\n *\n * @param {map} map\n */\n function initMap(map) {\n // Data structure design inspired by Traceur's Map implementation.\n // We maintain an internal array for all the entries. The array is needed\n // to remember order. However, to have a reasonable HashMap performance\n // i.e. O(1) for insertion, deletion, and retrieval. We maintain indices\n // in objects for fast look ups. Indices are split up according to data\n // types to avoid collisions.\n map._mapData = [];\n\n // Object index maps from an object \"hash\" to index. The hash being a unique\n // property of our choosing that we associate with the object. Association\n // is done by ways of keeping a non-enumerable property on the object.\n // Ideally these would be `Object.create(null)` objects but since we're\n // trying to support ES3 we'll have to gaurd against collisions using\n // prefixes on the keys rather than rely on null prototype objects.\n map._objectIndex = {};\n\n // String index maps from strings to index.\n map._stringIndex = {};\n\n // Numbers, booleans, undefined, and null.\n map._otherIndex = {};\n\n // Unfortunately we have to support ES3 and cannot have `Map.prototype.size`\n // be a getter method but just a regular method. The biggest problem with\n // this is safety. Clients can change the size property easily and possibly\n // without noticing (e.g. `if (map.size = 1) {..}` kind of typo). What we\n // can do to mitigate use getters and setters in development to disallow\n // and issue a warning for changing the `size` property.\n if (__DEV__) {\n if (isES5) {\n // If the `SECRET_SIZE_PROP` property is already defined then we're not\n // in the first call to `initMap` (e.g. coming from `map.clear()`) so\n // all we need to do is reset the size without defining the properties.\n if (map.hasOwnProperty(SECRET_SIZE_PROP)) {\n map[SECRET_SIZE_PROP] = 0;\n } else {\n Object.defineProperty(map, SECRET_SIZE_PROP, {\n value: 0,\n writable: true\n });\n Object.defineProperty(map, 'size', {\n set: (v) => {\n console.error(\n 'PLEASE FIX ME: You are changing the map size property which ' +\n 'should not be writable and will break in production.'\n );\n throw new Error('The map size property is not writable.');\n },\n get: () => map[SECRET_SIZE_PROP]\n });\n }\n\n // NOTE: Early return to implement immutable `.size` in DEV.\n return;\n }\n }\n\n // This is a diviation from the spec. `size` should be a getter on\n // `Map.prototype`. However, we have to support IE8.\n map.size = 0;\n }\n\n /**\n * Check if something is an object.\n *\n * @param {*} o\n * @return {boolean}\n */\n function isObject(o) {\n return o != null && (typeof o === 'object' || typeof o === 'function');\n }\n\n /**\n * Create an iteration object.\n *\n * @param {*} value\n * @param {boolean} done\n * @return {object}\n */\n function createIterResultObject(value, done) {\n return {value, done};\n }\n\n // Are we in a legit ES5 environment. Spoiler alert: that doesn't include IE8.\n var isES5 = (function() {\n try {\n Object.defineProperty({}, 'x', {});\n return true;\n } catch(e) {\n return false;\n }\n })();\n\n /**\n * Check if an object can be extended.\n *\n * @param {object|array|function|regexp} o\n * @return {boolean}\n */\n function isExtensible(o) {\n if (!isES5) {\n return true;\n } else {\n return Object.isExtensible(o);\n }\n }\n\n /**\n * IE has a `uniqueID` set on every DOM node. So we construct the hash from\n * this uniqueID to avoid memory leaks and the IE cloneNode bug where it\n * clones properties in addition to the attributes.\n *\n * @param {object} node\n * @return {?string}\n */\n function getIENodeHash(node) {\n var uniqueID;\n switch (node.nodeType) {\n case 1: // Element\n uniqueID = node.uniqueID;\n break;\n case 9: // Document\n uniqueID = node.documentElement.uniqueID;\n break;\n default:\n return null;\n }\n\n if (uniqueID) {\n return OLD_IE_HASH_PREFIX + uniqueID;\n } else {\n return null;\n }\n }\n\n var getHash = (function() {\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n var hashProperty = guid();\n var hashCounter = 0;\n\n /**\n * Get the \"hash\" associated with an object.\n *\n * @param {object|array|function|regexp} o\n * @return {number}\n */\n return function getHash(o) {\n if (o[hashProperty]) {\n return o[hashProperty];\n } else if (!isES5 &&\n o.propertyIsEnumerable &&\n o.propertyIsEnumerable[hashProperty]) {\n return o.propertyIsEnumerable[hashProperty];\n } else if (!isES5 &&\n isNode(o) &&\n getIENodeHash(o)) {\n return getIENodeHash(o);\n } else if (!isES5 && o[hashProperty]) {\n return o[hashProperty];\n }\n\n if (isExtensible(o)) {\n hashCounter += 1;\n if (isES5) {\n Object.defineProperty(o, hashProperty, {\n enumerable: false,\n writable: false,\n configurable: false,\n value: hashCounter\n });\n } else if (o.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Addiotionally, since this is a function it\n // will not show up in `JSON.stringify` which is what we want.\n o.propertyIsEnumerable = function() {\n return propIsEnumerable.apply(this, arguments);\n };\n o.propertyIsEnumerable[hashProperty] = hashCounter;\n } else if (isNode(o)) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `hashProperty` on the node\n // itself.\n o[hashProperty] = hashCounter;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n return hashCounter;\n } else {\n throw new Error('Non-extensible objects are not allowed as keys.');\n }\n };\n })();\n\n return Map;\n})(/* jslint evil: true */ Function('return this')());\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/Map.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/guid.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nguid(){\nreturn 'f' + (Math.random() * (1 << 30)).toString(16).replace('.','');}\n\n\nmodule.exports = guid;","sourceCode":"/**\n * @generated SignedSource<<4425c6f5a34b56ee4707e090f43fd075>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * Module that provides a function for creating a unique identifier.\n * The returned value does not conform to the GUID standard, but should\n * be globally unique in the context of the browser.\n *\n * @providesModule guid\n *\n */\n\n/*jshint bitwise: false*/\n\nfunction guid() {\n return 'f' + (Math.random() * (1 << 30)).toString(16).replace('.', '');\n}\n\nmodule.exports = guid;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/guid.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/isNode.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nisNode(object){\nreturn !!(object && (\ntypeof Node === 'function'?object instanceof Node:\ntypeof object === 'object' && \ntypeof object.nodeType === 'number' && \ntypeof object.nodeName === 'string'));}\n\n\n\nmodule.exports = isNode;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isNode\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n return !!(object && (\n typeof Node === 'function' ? object instanceof Node :\n typeof object === 'object' &&\n typeof object.nodeType === 'number' &&\n typeof object.nodeName === 'string'\n ));\n}\n\nmodule.exports = isNode;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/isNode.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/toIterator.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar KIND_KEY='key';\nvar KIND_VALUE='value';\nvar KIND_KEY_VAL='key+value';\n\nvar ITERATOR_SYMBOL=typeof Symbol === 'function'?\nSymbol.iterator:\n'@@iterator';\n\nvar toIterator=(function(){\nif(!(Array.prototype[ITERATOR_SYMBOL] && \nString.prototype[ITERATOR_SYMBOL])){\n\nreturn (function(){var \nArrayIterator=(function(){\n\nfunction ArrayIterator(array,kind){_classCallCheck(this,ArrayIterator);\nif(!Array.isArray(array)){\nthrow new TypeError('Object is not an Array');}\n\nthis._iteratedObject = array;\nthis._kind = kind;\nthis._nextIndex = 0;}_createClass(ArrayIterator,[{key:'next',value:\n\n\n\nfunction next(){\nif(!this instanceof ArrayIterator){\nthrow new TypeError('Object is not an ArrayIterator');}\n\n\nif(this._iteratedObject == null){\nreturn createIterResultObject(undefined,true);}\n\n\nvar array=this._iteratedObject;\nvar len=this._iteratedObject.length;\nvar index=this._nextIndex;\nvar kind=this._kind;\n\nif(index >= len){\nthis._iteratedObject = undefined;\nreturn createIterResultObject(undefined,true);}\n\n\nthis._nextIndex = index + 1;\n\nif(kind === KIND_KEY){\nreturn createIterResultObject(index,false);}else \nif(kind === KIND_VALUE){\nreturn createIterResultObject(array[index],false);}else \nif(kind === KIND_KEY_VAL){\nreturn createIterResultObject([index,array[index]],false);}}},{key:\n\n\n\n\n'@@iterator',value:function iterator(){\nreturn this;}}]);return ArrayIterator;})();var \n\n\n\nStringIterator=(function(){\n\nfunction StringIterator(string){_classCallCheck(this,StringIterator);\nif(typeof string !== 'string'){\nthrow new TypeError('Object is not a string');}\n\nthis._iteratedString = string;\nthis._nextIndex = 0;}_createClass(StringIterator,[{key:'next',value:\n\n\n\nfunction next(){\nif(!this instanceof StringIterator){\nthrow new TypeError('Object is not a StringIterator');}\n\n\nif(this._iteratedString == null){\nreturn createIterResultObject(undefined,true);}\n\n\nvar index=this._nextIndex;\nvar s=this._iteratedString;\nvar len=s.length;\n\nif(index >= len){\nthis._iteratedString = undefined;\nreturn createIterResultObject(undefined,true);}\n\n\nvar ret;\nvar first=s.charCodeAt(index);\n\nif(first < 0xD800 || first > 0xDBFF || index + 1 === len){\nret = s[index];}else \n{\nvar second=s.charCodeAt(index + 1);\nif(second < 0xDC00 || second > 0xDFFF){\nret = s[index];}else \n{\nret = s[index] + s[index + 1];}}\n\n\n\nthis._nextIndex = index + ret.length;\n\nreturn createIterResultObject(ret,false);}},{key:\n\n\n\n'@@iterator',value:function iterator(){\nreturn this;}}]);return StringIterator;})();\n\n\n\n\nfunction createIterResultObject(value,done){\nreturn {value:value,done:done};}\n\n\nreturn function(object,kind){\nif(typeof object === 'string'){\nreturn new StringIterator(object);}else \nif(Array.isArray(object)){\nreturn new ArrayIterator(object,kind || KIND_VALUE);}else \n{\nreturn object[ITERATOR_SYMBOL]();}};})();}else \n\n\n\n{\nreturn function(object){\nreturn object[ITERATOR_SYMBOL]();};}})();\n\n\n\n\n\n\n\n\nObject.assign(toIterator,{\nKIND_KEY:KIND_KEY,\nKIND_VALUE:KIND_VALUE,\nKIND_KEY_VAL:KIND_KEY_VAL,\nITERATOR_SYMBOL:ITERATOR_SYMBOL});\n\n\nmodule.exports = toIterator;","sourceCode":"/**\n * @generated SignedSource<<32241616e13b8a54d1a7baadce8eae5d>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule toIterator\n *\n */\n\n\n/**\n * Given an object `toIterator` will return the itrator for that object. If the\n * object has a `Symbol.iterator` method we just call that. Otherwise we\n * implement the ES6 `Array` and `String` Iterator.\n */\n\n/**\n * Constants\n */\n\nvar KIND_KEY = 'key';\nvar KIND_VALUE = 'value';\nvar KIND_KEY_VAL = 'key+value';\n/*global Symbol: true*/\nvar ITERATOR_SYMBOL = (typeof Symbol === 'function')\n ? Symbol.iterator\n : '@@iterator';\n\nvar toIterator = (function() {\n if (!(Array.prototype[ITERATOR_SYMBOL] &&\n String.prototype[ITERATOR_SYMBOL])) {\n // IIFE to avoid creating classes for no reason because of hoisting.\n return (function() {\n class ArrayIterator {\n // 22.1.5.1 CreateArrayIterator Abstract Operation\n constructor(array, kind) {\n if (!Array.isArray(array)) {\n throw new TypeError('Object is not an Array');\n }\n this._iteratedObject = array;\n this._kind = kind;\n this._nextIndex = 0;\n }\n\n // 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n next() {\n if (!this instanceof ArrayIterator) {\n throw new TypeError('Object is not an ArrayIterator');\n }\n\n if (this._iteratedObject == null) {\n return createIterResultObject(undefined, true);\n }\n\n var array = this._iteratedObject;\n var len = this._iteratedObject.length;\n var index = this._nextIndex;\n var kind = this._kind;\n\n if (index >= len) {\n this._iteratedObject = undefined;\n return createIterResultObject(undefined, true);\n }\n\n this._nextIndex = index + 1;\n\n if (kind === KIND_KEY) {\n return createIterResultObject(index, false);\n } else if (kind === KIND_VALUE) {\n return createIterResultObject(array[index], false);\n } else if (kind === KIND_KEY_VAL) {\n return createIterResultObject([index, array[index]], false);\n }\n }\n\n // 22.1.5.2.2 %ArrayIteratorPrototype%[@@iterator]()\n '@@iterator'() {\n return this;\n }\n }\n\n class StringIterator {\n // 21.1.5.1 CreateStringIterator Abstract Operation\n constructor(string) {\n if (typeof string !== 'string') {\n throw new TypeError('Object is not a string');\n }\n this._iteratedString = string;\n this._nextIndex = 0;\n }\n\n // 21.1.5.2.1 %StringIteratorPrototype%.next()\n next() {\n if (!this instanceof StringIterator) {\n throw new TypeError('Object is not a StringIterator');\n }\n\n if (this._iteratedString == null) {\n return createIterResultObject(undefined, true);\n }\n\n var index = this._nextIndex;\n var s = this._iteratedString;\n var len = s.length;\n\n if (index >= len) {\n this._iteratedString = undefined;\n return createIterResultObject(undefined, true);\n }\n\n var ret;\n var first = s.charCodeAt(index);\n\n if (first < 0xD800 || first > 0xDBFF || index + 1 === len) {\n ret = s[index];\n } else {\n var second = s.charCodeAt(index + 1);\n if (second < 0xDC00 || second > 0xDFFF) {\n ret = s[index];\n } else {\n ret = s[index] + s[index + 1];\n }\n }\n\n this._nextIndex = index + ret.length;\n\n return createIterResultObject(ret, false);\n }\n\n // 21.1.5.2.2 %StringIteratorPrototype%[@@ITERATOR_SYMBOL]()\n '@@iterator'() {\n return this;\n }\n }\n\n // 7.4.7 createIterResultObject(value, done)\n function createIterResultObject(value, done) {\n return {value: value, done: done};\n }\n\n return function(object, kind) {\n if (typeof object === 'string') {\n return new StringIterator(object);\n } else if (Array.isArray(object)) {\n return new ArrayIterator(object, kind || KIND_VALUE);\n } else {\n return object[ITERATOR_SYMBOL]();\n }\n };\n })();\n } else {\n return function(object) {\n return object[ITERATOR_SYMBOL]();\n };\n }\n})();\n\n/**\n * Export constants\n */\n\nObject.assign(toIterator, {\n KIND_KEY,\n KIND_VALUE,\n KIND_KEY_VAL,\n ITERATOR_SYMBOL\n});\n\nmodule.exports = toIterator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/toIterator.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/_shouldPolyfillES6Collection.js":{"data":{"code":"var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction shouldPolyfillES6Collection(collectionName){\nvar Collection=global[collectionName];\nif(Collection == null){\nreturn true;}\n\n\nvar proto=Collection.prototype;\n\n\nreturn Collection == null || \ntypeof Collection !== 'function' || \ntypeof proto.clear !== 'function' || \nnew Collection().size !== 0 || \ntypeof proto.keys !== 'function' || \ntypeof proto.forEach !== 'function' || \nisCallableWithoutNew(Collection) || \n!supportsSubclassing(Collection);}\n\n\n\n\n\n\n\nfunction supportsSubclassing(Collection){var \nSubCollection=(function(_Collection){_inherits(SubCollection,_Collection);function SubCollection(){_classCallCheck(this,SubCollection);_get(Object.getPrototypeOf(SubCollection.prototype),'constructor',this).apply(this,arguments);}return SubCollection;})(Collection);\ntry{\nvar s=new SubCollection([]);\n\n\ns.size;\nreturn s instanceof Collection;}\ncatch(e) {\nreturn false;}}\n\n\n\n\n\n\n\n\nfunction isCallableWithoutNew(Collection){\ntry{\nCollection();}\ncatch(e) {\nreturn false;}\n\nreturn true;}\n\n\nmodule.exports = shouldPolyfillES6Collection;","sourceCode":"/**\n * @generated SignedSource<<6c1a82d2f5918f03f3f0e5825e1f32f3>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n * @providesModule _shouldPolyfillES6Collection\n * @preventMunge\n * @typechecks\n */\n\n/**\n * Given a collection class name (Map or Set) return whether it's safe to use\n * the native polyfill.\n *\n * @param {string} collectionName\n */\nfunction shouldPolyfillES6Collection(collectionName) {\n var Collection = global[collectionName];\n if (Collection == null) {\n return true;\n }\n\n var proto = Collection.prototype;\n\n // These checks are adapted from es6-shim https://fburl.com/34437854\n return Collection == null ||\n typeof Collection !== 'function' ||\n typeof proto.clear !== 'function' ||\n new Collection().size !== 0 ||\n typeof proto.keys !== 'function' ||\n typeof proto.forEach !== 'function' ||\n isCallableWithoutNew(Collection) ||\n !supportsSubclassing(Collection);\n}\n\n/**\n * Given a class can we subclass it?\n *\n * @param {function} Collection\n */\nfunction supportsSubclassing(Collection) {\n class SubCollection extends Collection {}\n try {\n var s = (new SubCollection([]));\n // Firefox 32 will throw a type error when any operation is called on a\n // subclass.\n s.size;\n return s instanceof Collection;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Given a constructor can we call it without `new`?\n *\n * @param {function} Collection\n */\nfunction isCallableWithoutNew(Collection) {\n try {\n Collection();\n } catch (e) {\n return false;\n }\n return true;\n}\n\nmodule.exports = shouldPolyfillES6Collection;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/_shouldPolyfillES6Collection.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeGlobalResponderHandler.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTUIManager=require('NativeModules').UIManager;\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\n\nvar ReactNativeGlobalResponderHandler={\nonChange:function(from,to,blockNativeResponder){\nif(to !== null){\nRCTUIManager.setJSResponder(\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(to),\nblockNativeResponder);}else \n\n{\nRCTUIManager.clearJSResponder();}}};\n\n\n\n\nmodule.exports = ReactNativeGlobalResponderHandler;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeGlobalResponderHandler\n * @flow\n */\n'use strict';\n\nvar RCTUIManager = require('NativeModules').UIManager;\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nvar ReactNativeGlobalResponderHandler = {\n onChange: function(from: string, to: string, blockNativeResponder: boolean) {\n if (to !== null) {\n RCTUIManager.setJSResponder(\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(to),\n blockNativeResponder\n );\n } else {\n RCTUIManager.clearJSResponder();\n }\n }\n};\n\nmodule.exports = ReactNativeGlobalResponderHandler;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeGlobalResponderHandler.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeTextComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar assign=require('Object.assign');\n\nvar ReactNativeTextComponent=function(props){};\n\n\n\nassign(ReactNativeTextComponent.prototype,{\n\nconstruct:function(text){\n\nthis._currentElement = text;\nthis._stringText = '' + text;\nthis._rootNodeID = null;},\n\n\nmountComponent:function(rootID,transaction,context){\nthis._rootNodeID = rootID;\nvar tag=ReactNativeTagHandles.allocateTag();\nvar nativeTopRootID=ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootID);\nRCTUIManager.createView(\ntag,\n'RCTRawText',\nnativeTopRootID?ReactNativeTagHandles.rootNodeIDToTag[nativeTopRootID]:null,\n{text:this._stringText});\n\nreturn {\nrootNodeID:rootID,\ntag:tag};},\n\n\n\nreceiveComponent:function(nextText,transaction,context){\nif(nextText !== this._currentElement){\nthis._currentElement = nextText;\nvar nextStringText='' + nextText;\nif(nextStringText !== this._stringText){\nthis._stringText = nextStringText;\nRCTUIManager.updateView(\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(\nthis._rootNodeID),\n\n'RCTRawText',\n{text:this._stringText});}}},\n\n\n\n\n\nunmountComponent:function(){\nthis._currentElement = null;\nthis._stringText = null;\nthis._rootNodeID = null;}});\n\n\n\n\nmodule.exports = ReactNativeTextComponent;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeTextComponent\n */\n\n'use strict';\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar assign = require('Object.assign');\n\nvar ReactNativeTextComponent = function(props) {\n // This constructor and its argument is currently used by mocks.\n};\n\nassign(ReactNativeTextComponent.prototype, {\n\n construct: function(text) {\n // This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n this._rootNodeID = null;\n },\n\n mountComponent: function(rootID, transaction, context) {\n this._rootNodeID = rootID;\n var tag = ReactNativeTagHandles.allocateTag();\n var nativeTopRootID = ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootID);\n RCTUIManager.createView(\n tag,\n 'RCTRawText',\n nativeTopRootID ? ReactNativeTagHandles.rootNodeIDToTag[nativeTopRootID] : null,\n {text: this._stringText}\n );\n return {\n rootNodeID: rootID,\n tag: tag,\n };\n },\n\n receiveComponent: function(nextText, transaction, context) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n this._stringText = nextStringText;\n RCTUIManager.updateView(\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(\n this._rootNodeID\n ),\n 'RCTRawText',\n {text: this._stringText}\n );\n }\n }\n },\n\n unmountComponent: function() {\n this._currentElement = null;\n this._stringText = null;\n this._rootNodeID = null;\n }\n\n});\n\nmodule.exports = ReactNativeTextComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeTextComponent.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderEventPlugin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventConstants=require('EventConstants');\nvar EventPluginUtils=require('EventPluginUtils');\nvar EventPropagators=require('EventPropagators');\nvar NodeHandle=require('NodeHandle');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ResponderSyntheticEvent=require('ResponderSyntheticEvent');\nvar ResponderTouchHistoryStore=require('ResponderTouchHistoryStore');\n\nvar accumulate=require('accumulate');\nvar invariant=require('invariant');\nvar keyOf=require('keyOf');\n\nvar isStartish=EventPluginUtils.isStartish;\nvar isMoveish=EventPluginUtils.isMoveish;\nvar isEndish=EventPluginUtils.isEndish;\nvar executeDirectDispatch=EventPluginUtils.executeDirectDispatch;\nvar hasDispatches=EventPluginUtils.hasDispatches;\nvar executeDispatchesInOrderStopAtTrue=\nEventPluginUtils.executeDispatchesInOrderStopAtTrue;\n\n\n\n\n\nvar responderID=null;\n\n\n\n\n\nvar trackedTouchCount=0;\n\n\n\n\nvar previousActiveTouches=0;\n\nvar changeResponder=function(nextResponderID,blockNativeResponder){\nvar oldResponderID=responderID;\nresponderID = nextResponderID;\nif(ResponderEventPlugin.GlobalResponderHandler !== null){\nResponderEventPlugin.GlobalResponderHandler.onChange(\noldResponderID,\nnextResponderID,\nblockNativeResponder);}};\n\n\n\n\nvar eventTypes={\n\n\n\n\nstartShouldSetResponder:{\nphasedRegistrationNames:{\nbubbled:keyOf({onStartShouldSetResponder:null}),\ncaptured:keyOf({onStartShouldSetResponderCapture:null})}},\n\n\n\n\n\n\n\n\n\n\n\n\nscrollShouldSetResponder:{\nphasedRegistrationNames:{\nbubbled:keyOf({onScrollShouldSetResponder:null}),\ncaptured:keyOf({onScrollShouldSetResponderCapture:null})}},\n\n\n\n\n\n\n\n\n\n\nselectionChangeShouldSetResponder:{\nphasedRegistrationNames:{\nbubbled:keyOf({onSelectionChangeShouldSetResponder:null}),\ncaptured:keyOf({onSelectionChangeShouldSetResponderCapture:null})}},\n\n\n\n\n\n\n\nmoveShouldSetResponder:{\nphasedRegistrationNames:{\nbubbled:keyOf({onMoveShouldSetResponder:null}),\ncaptured:keyOf({onMoveShouldSetResponderCapture:null})}},\n\n\n\n\n\n\nresponderStart:{registrationName:keyOf({onResponderStart:null})},\nresponderMove:{registrationName:keyOf({onResponderMove:null})},\nresponderEnd:{registrationName:keyOf({onResponderEnd:null})},\nresponderRelease:{registrationName:keyOf({onResponderRelease:null})},\nresponderTerminationRequest:{\nregistrationName:keyOf({onResponderTerminationRequest:null})},\n\nresponderGrant:{registrationName:keyOf({onResponderGrant:null})},\nresponderReject:{registrationName:keyOf({onResponderReject:null})},\nresponderTerminate:{registrationName:keyOf({onResponderTerminate:null})}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction setResponderAndExtractTransfer(\ntopLevelType,\ntopLevelTargetID,\nnativeEvent){\nvar shouldSetEventType=\nisStartish(topLevelType)?eventTypes.startShouldSetResponder:\nisMoveish(topLevelType)?eventTypes.moveShouldSetResponder:\ntopLevelType === EventConstants.topLevelTypes.topSelectionChange?\neventTypes.selectionChangeShouldSetResponder:\neventTypes.scrollShouldSetResponder;\n\n\nvar bubbleShouldSetFrom=!responderID?\ntopLevelTargetID:\nReactInstanceHandles._getFirstCommonAncestorID(responderID,topLevelTargetID);\n\n\n\n\n\nvar skipOverBubbleShouldSetFrom=bubbleShouldSetFrom === responderID;\nvar shouldSetEvent=ResponderSyntheticEvent.getPooled(\nshouldSetEventType,\nbubbleShouldSetFrom,\nnativeEvent);\n\nshouldSetEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\nif(skipOverBubbleShouldSetFrom){\nEventPropagators.accumulateTwoPhaseDispatchesSkipTarget(shouldSetEvent);}else \n{\nEventPropagators.accumulateTwoPhaseDispatches(shouldSetEvent);}\n\nvar wantsResponderID=executeDispatchesInOrderStopAtTrue(shouldSetEvent);\nif(!shouldSetEvent.isPersistent()){\nshouldSetEvent.constructor.release(shouldSetEvent);}\n\n\nif(!wantsResponderID || wantsResponderID === responderID){\nreturn null;}\n\nvar extracted;\nvar grantEvent=ResponderSyntheticEvent.getPooled(\neventTypes.responderGrant,\nwantsResponderID,\nnativeEvent);\n\ngrantEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n\nEventPropagators.accumulateDirectDispatches(grantEvent);\nvar blockNativeResponder=executeDirectDispatch(grantEvent) === true;\nif(responderID){\n\nvar terminationRequestEvent=ResponderSyntheticEvent.getPooled(\neventTypes.responderTerminationRequest,\nresponderID,\nnativeEvent);\n\nterminationRequestEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\nEventPropagators.accumulateDirectDispatches(terminationRequestEvent);\nvar shouldSwitch=!hasDispatches(terminationRequestEvent) || \nexecuteDirectDispatch(terminationRequestEvent);\nif(!terminationRequestEvent.isPersistent()){\nterminationRequestEvent.constructor.release(terminationRequestEvent);}\n\n\nif(shouldSwitch){\nvar terminateType=eventTypes.responderTerminate;\nvar terminateEvent=ResponderSyntheticEvent.getPooled(\nterminateType,\nresponderID,\nnativeEvent);\n\nterminateEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\nEventPropagators.accumulateDirectDispatches(terminateEvent);\nextracted = accumulate(extracted,[grantEvent,terminateEvent]);\nchangeResponder(wantsResponderID,blockNativeResponder);}else \n{\nvar rejectEvent=ResponderSyntheticEvent.getPooled(\neventTypes.responderReject,\nwantsResponderID,\nnativeEvent);\n\nrejectEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\nEventPropagators.accumulateDirectDispatches(rejectEvent);\nextracted = accumulate(extracted,rejectEvent);}}else \n\n{\nextracted = accumulate(extracted,grantEvent);\nchangeResponder(wantsResponderID,blockNativeResponder);}\n\nreturn extracted;}\n\n\n\n\n\n\n\n\n\n\nfunction canTriggerTransfer(topLevelType,topLevelTargetID){\nreturn topLevelTargetID && (\ntopLevelType === EventConstants.topLevelTypes.topScroll || \ntrackedTouchCount > 0 && \ntopLevelType === EventConstants.topLevelTypes.topSelectionChange || \nisStartish(topLevelType) || \nisMoveish(topLevelType));}\n\n\n\n\n\n\n\n\n\n\nfunction noResponderTouches(nativeEvent){\nvar touches=nativeEvent.touches;\nif(!touches || touches.length === 0){\nreturn true;}\n\nfor(var i=0;i < touches.length;i++) {\nvar activeTouch=touches[i];\nvar target=activeTouch.target;\nif(target !== null && target !== undefined && target !== 0){\n\nvar commonAncestor=\nReactInstanceHandles._getFirstCommonAncestorID(\nresponderID,\nNodeHandle.getRootNodeID(target));\n\nif(commonAncestor === responderID){\nreturn false;}}}\n\n\n\nreturn true;}\n\n\n\nvar ResponderEventPlugin={\n\ngetResponderID:function(){\nreturn responderID;},\n\n\neventTypes:eventTypes,\n\n\n\n\n\n\n\n\n\n\n\n\n\nextractEvents:function(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent){\n\nif(isStartish(topLevelType)){\ntrackedTouchCount += 1;}else \nif(isEndish(topLevelType)){\ntrackedTouchCount -= 1;\ninvariant(\ntrackedTouchCount >= 0,\n'Ended a touch event which was not counted in trackedTouchCount.');}\n\n\n\nResponderTouchHistoryStore.recordTouchTrack(topLevelType,nativeEvent);\n\nvar extracted=canTriggerTransfer(topLevelType,topLevelTargetID)?\nsetResponderAndExtractTransfer(topLevelType,topLevelTargetID,nativeEvent):\nnull;\n\n\n\n\n\n\n\n\n\n\nvar isResponderTouchStart=responderID && isStartish(topLevelType);\nvar isResponderTouchMove=responderID && isMoveish(topLevelType);\nvar isResponderTouchEnd=responderID && isEndish(topLevelType);\nvar incrementalTouch=\nisResponderTouchStart?eventTypes.responderStart:\nisResponderTouchMove?eventTypes.responderMove:\nisResponderTouchEnd?eventTypes.responderEnd:\nnull;\n\nif(incrementalTouch){\nvar gesture=\nResponderSyntheticEvent.getPooled(incrementalTouch,responderID,nativeEvent);\ngesture.touchHistory = ResponderTouchHistoryStore.touchHistory;\nEventPropagators.accumulateDirectDispatches(gesture);\nextracted = accumulate(extracted,gesture);}\n\n\nvar isResponderTerminate=\nresponderID && \ntopLevelType === EventConstants.topLevelTypes.topTouchCancel;\nvar isResponderRelease=\nresponderID && \n!isResponderTerminate && \nisEndish(topLevelType) && \nnoResponderTouches(nativeEvent);\nvar finalTouch=\nisResponderTerminate?eventTypes.responderTerminate:\nisResponderRelease?eventTypes.responderRelease:\nnull;\nif(finalTouch){\nvar finalEvent=\nResponderSyntheticEvent.getPooled(finalTouch,responderID,nativeEvent);\nfinalEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\nEventPropagators.accumulateDirectDispatches(finalEvent);\nextracted = accumulate(extracted,finalEvent);\nchangeResponder(null);}\n\n\nvar numberActiveTouches=\nResponderTouchHistoryStore.touchHistory.numberActiveTouches;\nif(ResponderEventPlugin.GlobalInteractionHandler && \nnumberActiveTouches !== previousActiveTouches){\nResponderEventPlugin.GlobalInteractionHandler.onChange(\nnumberActiveTouches);}\n\n\npreviousActiveTouches = numberActiveTouches;\n\nreturn extracted;},\n\n\nGlobalResponderHandler:null,\nGlobalInteractionHandler:null,\n\ninjection:{\n\n\n\n\n\ninjectGlobalResponderHandler:function(GlobalResponderHandler){\nResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler;},\n\n\n\n\n\n\ninjectGlobalInteractionHandler:function(GlobalInteractionHandler){\nResponderEventPlugin.GlobalInteractionHandler = GlobalInteractionHandler;}}};\n\n\n\n\nmodule.exports = ResponderEventPlugin;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule ResponderEventPlugin\n */\n\n'use strict';\n\nvar EventConstants = require('EventConstants');\nvar EventPluginUtils = require('EventPluginUtils');\nvar EventPropagators = require('EventPropagators');\nvar NodeHandle = require('NodeHandle');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ResponderSyntheticEvent = require('ResponderSyntheticEvent');\nvar ResponderTouchHistoryStore = require('ResponderTouchHistoryStore');\n\nvar accumulate = require('accumulate');\nvar invariant = require('invariant');\nvar keyOf = require('keyOf');\n\nvar isStartish = EventPluginUtils.isStartish;\nvar isMoveish = EventPluginUtils.isMoveish;\nvar isEndish = EventPluginUtils.isEndish;\nvar executeDirectDispatch = EventPluginUtils.executeDirectDispatch;\nvar hasDispatches = EventPluginUtils.hasDispatches;\nvar executeDispatchesInOrderStopAtTrue =\n EventPluginUtils.executeDispatchesInOrderStopAtTrue;\n\n/**\n * ID of element that should respond to touch/move types of interactions, as\n * indicated explicitly by relevant callbacks.\n */\nvar responderID = null;\n\n/**\n * Count of current touches. A textInput should become responder iff the\n * the selection changes while there is a touch on the screen.\n */\nvar trackedTouchCount = 0;\n\n/**\n * Last reported number of active touches.\n */\nvar previousActiveTouches = 0;\n\nvar changeResponder = function(nextResponderID, blockNativeResponder) {\n var oldResponderID = responderID;\n responderID = nextResponderID;\n if (ResponderEventPlugin.GlobalResponderHandler !== null) {\n ResponderEventPlugin.GlobalResponderHandler.onChange(\n oldResponderID,\n nextResponderID,\n blockNativeResponder\n );\n }\n};\n\nvar eventTypes = {\n /**\n * On a `touchStart`/`mouseDown`, is it desired that this element become the\n * responder?\n */\n startShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: keyOf({onStartShouldSetResponder: null}),\n captured: keyOf({onStartShouldSetResponderCapture: null})\n }\n },\n\n /**\n * On a `scroll`, is it desired that this element become the responder? This\n * is usually not needed, but should be used to retroactively infer that a\n * `touchStart` had occured during momentum scroll. During a momentum scroll,\n * a touch start will be immediately followed by a scroll event if the view is\n * currently scrolling.\n *\n * TODO: This shouldn't bubble.\n */\n scrollShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: keyOf({onScrollShouldSetResponder: null}),\n captured: keyOf({onScrollShouldSetResponderCapture: null})\n }\n },\n\n /**\n * On text selection change, should this element become the responder? This\n * is needed for text inputs or other views with native selection, so the\n * JS view can claim the responder.\n *\n * TODO: This shouldn't bubble.\n */\n selectionChangeShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: keyOf({onSelectionChangeShouldSetResponder: null}),\n captured: keyOf({onSelectionChangeShouldSetResponderCapture: null})\n }\n },\n\n /**\n * On a `touchMove`/`mouseMove`, is it desired that this element become the\n * responder?\n */\n moveShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: keyOf({onMoveShouldSetResponder: null}),\n captured: keyOf({onMoveShouldSetResponderCapture: null})\n }\n },\n\n /**\n * Direct responder events dispatched directly to responder. Do not bubble.\n */\n responderStart: {registrationName: keyOf({onResponderStart: null})},\n responderMove: {registrationName: keyOf({onResponderMove: null})},\n responderEnd: {registrationName: keyOf({onResponderEnd: null})},\n responderRelease: {registrationName: keyOf({onResponderRelease: null})},\n responderTerminationRequest: {\n registrationName: keyOf({onResponderTerminationRequest: null})\n },\n responderGrant: {registrationName: keyOf({onResponderGrant: null})},\n responderReject: {registrationName: keyOf({onResponderReject: null})},\n responderTerminate: {registrationName: keyOf({onResponderTerminate: null})}\n};\n\n/**\n *\n * Responder System:\n * ----------------\n *\n * - A global, solitary \"interaction lock\" on a view.\n * - If a `NodeHandle` becomes the responder, it should convey visual feedback\n * immediately to indicate so, either by highlighting or moving accordingly.\n * - To be the responder means, that touches are exclusively important to that\n * responder view, and no other view.\n * - While touches are still occuring, the responder lock can be transfered to\n * a new view, but only to increasingly \"higher\" views (meaning ancestors of\n * the current responder).\n *\n * Responder being granted:\n * ------------------------\n *\n * - Touch starts, moves, and scrolls can cause an ID to become the responder.\n * - We capture/bubble `startShouldSetResponder`/`moveShouldSetResponder` to\n * the \"appropriate place\".\n * - If nothing is currently the responder, the \"appropriate place\" is the\n * initiating event's `targetID`.\n * - If something *is* already the responder, the \"appropriate place\" is the\n * first common ancestor of the event target and the current `responderID`.\n * - Some negotiation happens: See the timing diagram below.\n * - Scrolled views automatically become responder. The reasoning is that a\n * platform scroll view that isn't built on top of the responder system has\n * began scrolling, and the active responder must now be notified that the\n * interaction is no longer locked to it - the system has taken over.\n *\n * - Responder being released:\n * As soon as no more touches that *started* inside of descendents of the\n * *current* responderID, an `onResponderRelease` event is dispatched to the\n * current responder, and the responder lock is released.\n *\n * TODO:\n * - on \"end\", a callback hook for `onResponderEndShouldRemainResponder` that\n * determines if the responder lock should remain.\n * - If a view shouldn't \"remain\" the responder, any active touches should by\n * default be considered \"dead\" and do not influence future negotiations or\n * bubble paths. It should be as if those touches do not exist.\n * -- For multitouch: Usually a translate-z will choose to \"remain\" responder\n * after one out of many touches ended. For translate-y, usually the view\n * doesn't wish to \"remain\" responder after one of many touches end.\n * - Consider building this on top of a `stopPropagation` model similar to\n * `W3C` events.\n * - Ensure that `onResponderTerminate` is called on touch cancels, whether or\n * not `onResponderTerminationRequest` returns `true` or `false`.\n *\n */\n\n/* Negotiation Performed\n +-----------------------+\n / \\\nProcess low level events to + Current Responder + wantsResponderID\ndetermine who to perform negot-| (if any exists at all) |\niation/transition | Otherwise just pass through|\n-------------------------------+----------------------------+------------------+\nBubble to find first ID | |\nto return true:wantsResponderID| |\n | |\n +-------------+ | |\n | onTouchStart| | |\n +------+------+ none | |\n | return| |\n+-----------v-------------+true| +------------------------+ |\n|onStartShouldSetResponder|----->|onResponderStart (cur) |<-----------+\n+-----------+-------------+ | +------------------------+ | |\n | | | +--------+-------+\n | returned true for| false:REJECT +-------->|onResponderReject\n | wantsResponderID | | | +----------------+\n | (now attempt | +------------------+-----+ |\n | handoff) | | onResponder | |\n +------------------->| TerminationRequest| |\n | +------------------+-----+ |\n | | | +----------------+\n | true:GRANT +-------->|onResponderGrant|\n | | +--------+-------+\n | +------------------------+ | |\n | | onResponderTerminate |<-----------+\n | +------------------+-----+ |\n | | | +----------------+\n | +-------->|onResponderStart|\n | | +----------------+\nBubble to find first ID | |\nto return true:wantsResponderID| |\n | |\n +-------------+ | |\n | onTouchMove | | |\n +------+------+ none | |\n | return| |\n+-----------v-------------+true| +------------------------+ |\n|onMoveShouldSetResponder |----->|onResponderMove (cur) |<-----------+\n+-----------+-------------+ | +------------------------+ | |\n | | | +--------+-------+\n | returned true for| false:REJECT +-------->|onResponderRejec|\n | wantsResponderID | | | +----------------+\n | (now attempt | +------------------+-----+ |\n | handoff) | | onResponder | |\n +------------------->| TerminationRequest| |\n | +------------------+-----+ |\n | | | +----------------+\n | true:GRANT +-------->|onResponderGrant|\n | | +--------+-------+\n | +------------------------+ | |\n | | onResponderTerminate |<-----------+\n | +------------------+-----+ |\n | | | +----------------+\n | +-------->|onResponderMove |\n | | +----------------+\n | |\n | |\n Some active touch started| |\n inside current responder | +------------------------+ |\n +------------------------->| onResponderEnd | |\n | | +------------------------+ |\n +---+---------+ | |\n | onTouchEnd | | |\n +---+---------+ | |\n | | +------------------------+ |\n +------------------------->| onResponderEnd | |\n No active touches started| +-----------+------------+ |\n inside current responder | | |\n | v |\n | +------------------------+ |\n | | onResponderRelease | |\n | +------------------------+ |\n | |\n + + */\n\n\n\n/**\n * A note about event ordering in the `EventPluginHub`.\n *\n * Suppose plugins are injected in the following order:\n *\n * `[R, S, C]`\n *\n * To help illustrate the example, assume `S` is `SimpleEventPlugin` (for\n * `onClick` etc) and `R` is `ResponderEventPlugin`.\n *\n * \"Deferred-Dispatched Events\":\n *\n * - The current event plugin system will traverse the list of injected plugins,\n * in order, and extract events by collecting the plugin's return value of\n * `extractEvents()`.\n * - These events that are returned from `extractEvents` are \"deferred\n * dispatched events\".\n * - When returned from `extractEvents`, deferred-dispatched events contain an\n * \"accumulation\" of deferred dispatches.\n * - These deferred dispatches are accumulated/collected before they are\n * returned, but processed at a later time by the `EventPluginHub` (hence the\n * name deferred).\n *\n * In the process of returning their deferred-dispatched events, event plugins\n * themselves can dispatch events on-demand without returning them from\n * `extractEvents`. Plugins might want to do this, so that they can use event\n * dispatching as a tool that helps them decide which events should be extracted\n * in the first place.\n *\n * \"On-Demand-Dispatched Events\":\n *\n * - On-demand-dispatched events are not returned from `extractEvents`.\n * - On-demand-dispatched events are dispatched during the process of returning\n * the deferred-dispatched events.\n * - They should not have side effects.\n * - They should be avoided, and/or eventually be replaced with another\n * abstraction that allows event plugins to perform multiple \"rounds\" of event\n * extraction.\n *\n * Therefore, the sequence of event dispatches becomes:\n *\n * - `R`s on-demand events (if any) (dispatched by `R` on-demand)\n * - `S`s on-demand events (if any) (dispatched by `S` on-demand)\n * - `C`s on-demand events (if any) (dispatched by `C` on-demand)\n * - `R`s extracted events (if any) (dispatched by `EventPluginHub`)\n * - `S`s extracted events (if any) (dispatched by `EventPluginHub`)\n * - `C`s extracted events (if any) (dispatched by `EventPluginHub`)\n *\n * In the case of `ResponderEventPlugin`: If the `startShouldSetResponder`\n * on-demand dispatch returns `true` (and some other details are satisfied) the\n * `onResponderGrant` deferred dispatched event is returned from\n * `extractEvents`. The sequence of dispatch executions in this case\n * will appear as follows:\n *\n * - `startShouldSetResponder` (`ResponderEventPlugin` dispatches on-demand)\n * - `touchStartCapture` (`EventPluginHub` dispatches as usual)\n * - `touchStart` (`EventPluginHub` dispatches as usual)\n * - `responderGrant/Reject` (`EventPluginHub` dispatches as usual)\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} topLevelTargetID ID of deepest React rendered element.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n */\nfunction setResponderAndExtractTransfer(\n topLevelType,\n topLevelTargetID,\n nativeEvent) {\n var shouldSetEventType =\n isStartish(topLevelType) ? eventTypes.startShouldSetResponder :\n isMoveish(topLevelType) ? eventTypes.moveShouldSetResponder :\n topLevelType === EventConstants.topLevelTypes.topSelectionChange ?\n eventTypes.selectionChangeShouldSetResponder :\n eventTypes.scrollShouldSetResponder;\n\n // TODO: stop one short of the the current responder.\n var bubbleShouldSetFrom = !responderID ?\n topLevelTargetID :\n ReactInstanceHandles._getFirstCommonAncestorID(responderID, topLevelTargetID);\n\n // When capturing/bubbling the \"shouldSet\" event, we want to skip the target\n // (deepest ID) if it happens to be the current responder. The reasoning:\n // It's strange to get an `onMoveShouldSetResponder` when you're *already*\n // the responder.\n var skipOverBubbleShouldSetFrom = bubbleShouldSetFrom === responderID;\n var shouldSetEvent = ResponderSyntheticEvent.getPooled(\n shouldSetEventType,\n bubbleShouldSetFrom,\n nativeEvent\n );\n shouldSetEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n if (skipOverBubbleShouldSetFrom) {\n EventPropagators.accumulateTwoPhaseDispatchesSkipTarget(shouldSetEvent);\n } else {\n EventPropagators.accumulateTwoPhaseDispatches(shouldSetEvent);\n }\n var wantsResponderID = executeDispatchesInOrderStopAtTrue(shouldSetEvent);\n if (!shouldSetEvent.isPersistent()) {\n shouldSetEvent.constructor.release(shouldSetEvent);\n }\n\n if (!wantsResponderID || wantsResponderID === responderID) {\n return null;\n }\n var extracted;\n var grantEvent = ResponderSyntheticEvent.getPooled(\n eventTypes.responderGrant,\n wantsResponderID,\n nativeEvent\n );\n grantEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n\n EventPropagators.accumulateDirectDispatches(grantEvent);\n var blockNativeResponder = executeDirectDispatch(grantEvent) === true;\n if (responderID) {\n\n var terminationRequestEvent = ResponderSyntheticEvent.getPooled(\n eventTypes.responderTerminationRequest,\n responderID,\n nativeEvent\n );\n terminationRequestEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n EventPropagators.accumulateDirectDispatches(terminationRequestEvent);\n var shouldSwitch = !hasDispatches(terminationRequestEvent) ||\n executeDirectDispatch(terminationRequestEvent);\n if (!terminationRequestEvent.isPersistent()) {\n terminationRequestEvent.constructor.release(terminationRequestEvent);\n }\n\n if (shouldSwitch) {\n var terminateType = eventTypes.responderTerminate;\n var terminateEvent = ResponderSyntheticEvent.getPooled(\n terminateType,\n responderID,\n nativeEvent\n );\n terminateEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n EventPropagators.accumulateDirectDispatches(terminateEvent);\n extracted = accumulate(extracted, [grantEvent, terminateEvent]);\n changeResponder(wantsResponderID, blockNativeResponder);\n } else {\n var rejectEvent = ResponderSyntheticEvent.getPooled(\n eventTypes.responderReject,\n wantsResponderID,\n nativeEvent\n );\n rejectEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n EventPropagators.accumulateDirectDispatches(rejectEvent);\n extracted = accumulate(extracted, rejectEvent);\n }\n } else {\n extracted = accumulate(extracted, grantEvent);\n changeResponder(wantsResponderID, blockNativeResponder);\n }\n return extracted;\n}\n\n/**\n * A transfer is a negotiation between a currently set responder and the next\n * element to claim responder status. Any start event could trigger a transfer\n * of responderID. Any move event could trigger a transfer.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @return {boolean} True if a transfer of responder could possibly occur.\n */\nfunction canTriggerTransfer(topLevelType, topLevelTargetID) {\n return topLevelTargetID && (\n topLevelType === EventConstants.topLevelTypes.topScroll ||\n (trackedTouchCount > 0 &&\n topLevelType === EventConstants.topLevelTypes.topSelectionChange) ||\n isStartish(topLevelType) ||\n isMoveish(topLevelType)\n );\n}\n\n/**\n * Returns whether or not this touch end event makes it such that there are no\n * longer any touches that started inside of the current `responderID`.\n *\n * @param {NativeEvent} nativeEvent Native touch end event.\n * @return {bool} Whether or not this touch end event ends the responder.\n */\nfunction noResponderTouches(nativeEvent) {\n var touches = nativeEvent.touches;\n if (!touches || touches.length === 0) {\n return true;\n }\n for (var i = 0; i < touches.length; i++) {\n var activeTouch = touches[i];\n var target = activeTouch.target;\n if (target !== null && target !== undefined && target !== 0) {\n // Is the original touch location inside of the current responder?\n var commonAncestor =\n ReactInstanceHandles._getFirstCommonAncestorID(\n responderID,\n NodeHandle.getRootNodeID(target)\n );\n if (commonAncestor === responderID) {\n return false;\n }\n }\n }\n return true;\n}\n\n\nvar ResponderEventPlugin = {\n\n getResponderID: function() {\n return responderID;\n },\n\n eventTypes: eventTypes,\n\n /**\n * We must be resilient to `topLevelTargetID` being `undefined` on\n * `touchMove`, or `touchEnd`. On certain platforms, this means that a native\n * scroll has assumed control and the original touch targets are destroyed.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n\n if (isStartish(topLevelType)) {\n trackedTouchCount += 1;\n } else if (isEndish(topLevelType)) {\n trackedTouchCount -= 1;\n invariant(\n trackedTouchCount >= 0,\n 'Ended a touch event which was not counted in trackedTouchCount.'\n );\n }\n\n ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent);\n\n var extracted = canTriggerTransfer(topLevelType, topLevelTargetID) ?\n setResponderAndExtractTransfer(topLevelType, topLevelTargetID, nativeEvent) :\n null;\n // Responder may or may not have transfered on a new touch start/move.\n // Regardless, whoever is the responder after any potential transfer, we\n // direct all touch start/move/ends to them in the form of\n // `onResponderMove/Start/End`. These will be called for *every* additional\n // finger that move/start/end, dispatched directly to whoever is the\n // current responder at that moment, until the responder is \"released\".\n //\n // These multiple individual change touch events are are always bookended\n // by `onResponderGrant`, and one of\n // (`onResponderRelease/onResponderTerminate`).\n var isResponderTouchStart = responderID && isStartish(topLevelType);\n var isResponderTouchMove = responderID && isMoveish(topLevelType);\n var isResponderTouchEnd = responderID && isEndish(topLevelType);\n var incrementalTouch =\n isResponderTouchStart ? eventTypes.responderStart :\n isResponderTouchMove ? eventTypes.responderMove :\n isResponderTouchEnd ? eventTypes.responderEnd :\n null;\n\n if (incrementalTouch) {\n var gesture =\n ResponderSyntheticEvent.getPooled(incrementalTouch, responderID, nativeEvent);\n gesture.touchHistory = ResponderTouchHistoryStore.touchHistory;\n EventPropagators.accumulateDirectDispatches(gesture);\n extracted = accumulate(extracted, gesture);\n }\n\n var isResponderTerminate =\n responderID &&\n topLevelType === EventConstants.topLevelTypes.topTouchCancel;\n var isResponderRelease =\n responderID &&\n !isResponderTerminate &&\n isEndish(topLevelType) &&\n noResponderTouches(nativeEvent);\n var finalTouch =\n isResponderTerminate ? eventTypes.responderTerminate :\n isResponderRelease ? eventTypes.responderRelease :\n null;\n if (finalTouch) {\n var finalEvent =\n ResponderSyntheticEvent.getPooled(finalTouch, responderID, nativeEvent);\n finalEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n EventPropagators.accumulateDirectDispatches(finalEvent);\n extracted = accumulate(extracted, finalEvent);\n changeResponder(null);\n }\n\n var numberActiveTouches =\n ResponderTouchHistoryStore.touchHistory.numberActiveTouches;\n if (ResponderEventPlugin.GlobalInteractionHandler &&\n numberActiveTouches !== previousActiveTouches) {\n ResponderEventPlugin.GlobalInteractionHandler.onChange(\n numberActiveTouches\n );\n }\n previousActiveTouches = numberActiveTouches;\n\n return extracted;\n },\n\n GlobalResponderHandler: null,\n GlobalInteractionHandler: null,\n\n injection: {\n /**\n * @param {{onChange: (ReactID, ReactID) => void} GlobalResponderHandler\n * Object that handles any change in responder. Use this to inject\n * integration with an existing touch handling system etc.\n */\n injectGlobalResponderHandler: function(GlobalResponderHandler) {\n ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler;\n },\n\n /**\n * @param {{onChange: (numberActiveTouches) => void} GlobalInteractionHandler\n * Object that handles any change in the number of active touches.\n */\n injectGlobalInteractionHandler: function(GlobalInteractionHandler) {\n ResponderEventPlugin.GlobalInteractionHandler = GlobalInteractionHandler;\n },\n }\n};\n\nmodule.exports = ResponderEventPlugin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderEventPlugin.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderSyntheticEvent.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SyntheticEvent=require('SyntheticEvent');\n\n\n\n\n\n\nvar ResponderEventInterface={\ntouchHistory:function(nativeEvent){\nreturn null;}};\n\n\n\n\n\n\n\n\n\nfunction ResponderSyntheticEvent(dispatchConfig,dispatchMarker,nativeEvent){\nSyntheticEvent.call(this,dispatchConfig,dispatchMarker,nativeEvent);}\n\n\nSyntheticEvent.augmentClass(ResponderSyntheticEvent,ResponderEventInterface);\n\nmodule.exports = ResponderSyntheticEvent;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule ResponderSyntheticEvent\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar SyntheticEvent = require('SyntheticEvent');\n\n/**\n * `touchHistory` isn't actually on the native event, but putting it in the\n * interface will ensure that it is cleaned up when pooled/destroyed. The\n * `ResponderEventPlugin` will populate it appropriately.\n */\nvar ResponderEventInterface = {\n touchHistory: function(nativeEvent) {\n return null; // Actually doesn't even look at the native event.\n },\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native event.\n * @extends {SyntheticEvent}\n */\nfunction ResponderSyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticEvent.augmentClass(ResponderSyntheticEvent, ResponderEventInterface);\n\nmodule.exports = ResponderSyntheticEvent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderSyntheticEvent.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderTouchHistoryStore.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar EventPluginUtils=require('EventPluginUtils');\n\nvar invariant=require('invariant');\n\nvar isMoveish=EventPluginUtils.isMoveish;\nvar isStartish=EventPluginUtils.isStartish;\nvar isEndish=EventPluginUtils.isEndish;\n\nvar MAX_TOUCH_BANK=20;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar touchHistory={\ntouchBank:[],\nnumberActiveTouches:0,\n\n\n\nindexOfSingleActiveTouch:-1,\nmostRecentTimeStamp:0};\n\n\nvar timestampForTouch=function(touch){\n\n\n\nreturn touch.timeStamp || touch.timestamp;};\n\n\n\n\n\n\n\nvar initializeTouchData=function(touch){\nreturn {\ntouchActive:true,\nstartTimeStamp:timestampForTouch(touch),\nstartPageX:touch.pageX,\nstartPageY:touch.pageY,\ncurrentPageX:touch.pageX,\ncurrentPageY:touch.pageY,\ncurrentTimeStamp:timestampForTouch(touch),\npreviousPageX:touch.pageX,\npreviousPageY:touch.pageY,\npreviousTimeStamp:timestampForTouch(touch)};};\n\n\n\nvar reinitializeTouchTrack=function(touchTrack,touch){\ntouchTrack.touchActive = true;\ntouchTrack.startTimeStamp = timestampForTouch(touch);\ntouchTrack.startPageX = touch.pageX;\ntouchTrack.startPageY = touch.pageY;\ntouchTrack.currentPageX = touch.pageX;\ntouchTrack.currentPageY = touch.pageY;\ntouchTrack.currentTimeStamp = timestampForTouch(touch);\ntouchTrack.previousPageX = touch.pageX;\ntouchTrack.previousPageY = touch.pageY;\ntouchTrack.previousTimeStamp = timestampForTouch(touch);};\n\n\nvar validateTouch=function(touch){\nvar identifier=touch.identifier;\ninvariant(identifier != null,'Touch object is missing identifier');\nif(identifier > MAX_TOUCH_BANK){\nconsole.warn(\n'Touch identifier ' + identifier + ' is greater than maximum ' + \n'supported ' + MAX_TOUCH_BANK + ' which causes performance issues ' + \n'backfilling array locations for all of the indices.');}};\n\n\n\n\nvar recordStartTouchData=function(touch){\nvar touchBank=touchHistory.touchBank;\nvar identifier=touch.identifier;\nvar touchTrack=touchBank[identifier];\nif(__DEV__){\nvalidateTouch(touch);}\n\nif(!touchTrack){\ntouchBank[touch.identifier] = initializeTouchData(touch);}else \n{\nreinitializeTouchTrack(touchTrack,touch);}\n\ntouchHistory.mostRecentTimeStamp = timestampForTouch(touch);};\n\n\nvar recordMoveTouchData=function(touch){\nvar touchBank=touchHistory.touchBank;\nvar touchTrack=touchBank[touch.identifier];\nif(__DEV__){\nvalidateTouch(touch);\ninvariant(touchTrack,'Touch data should have been recorded on start');}\n\ntouchTrack.touchActive = true;\ntouchTrack.previousPageX = touchTrack.currentPageX;\ntouchTrack.previousPageY = touchTrack.currentPageY;\ntouchTrack.previousTimeStamp = touchTrack.currentTimeStamp;\ntouchTrack.currentPageX = touch.pageX;\ntouchTrack.currentPageY = touch.pageY;\ntouchTrack.currentTimeStamp = timestampForTouch(touch);\ntouchHistory.mostRecentTimeStamp = timestampForTouch(touch);};\n\n\nvar recordEndTouchData=function(touch){\nvar touchBank=touchHistory.touchBank;\nvar touchTrack=touchBank[touch.identifier];\nif(__DEV__){\nvalidateTouch(touch);\ninvariant(touchTrack,'Touch data should have been recorded on start');}\n\ntouchTrack.previousPageX = touchTrack.currentPageX;\ntouchTrack.previousPageY = touchTrack.currentPageY;\ntouchTrack.previousTimeStamp = touchTrack.currentTimeStamp;\ntouchTrack.currentPageX = touch.pageX;\ntouchTrack.currentPageY = touch.pageY;\ntouchTrack.currentTimeStamp = timestampForTouch(touch);\ntouchTrack.touchActive = false;\ntouchHistory.mostRecentTimeStamp = timestampForTouch(touch);};\n\n\nvar ResponderTouchHistoryStore={\nrecordTouchTrack:function(topLevelType,nativeEvent){\nvar touchBank=touchHistory.touchBank;\nif(isMoveish(topLevelType)){\nnativeEvent.changedTouches.forEach(recordMoveTouchData);}else \nif(isStartish(topLevelType)){\nnativeEvent.changedTouches.forEach(recordStartTouchData);\ntouchHistory.numberActiveTouches = nativeEvent.touches.length;\nif(touchHistory.numberActiveTouches === 1){\ntouchHistory.indexOfSingleActiveTouch = nativeEvent.touches[0].identifier;}}else \n\nif(isEndish(topLevelType)){\nnativeEvent.changedTouches.forEach(recordEndTouchData);\ntouchHistory.numberActiveTouches = nativeEvent.touches.length;\nif(touchHistory.numberActiveTouches === 1){\nfor(var i=0;i < touchBank.length;i++) {\nvar touchTrackToCheck=touchBank[i];\nif(touchTrackToCheck != null && touchTrackToCheck.touchActive){\ntouchHistory.indexOfSingleActiveTouch = i;\nbreak;}}\n\n\nif(__DEV__){\nvar activeTouchData=touchBank[touchHistory.indexOfSingleActiveTouch];\nvar foundActive=activeTouchData != null && !!activeTouchData.touchActive;\ninvariant(foundActive,'Cannot find single active touch');}}}},\n\n\n\n\n\ntouchHistory:touchHistory};\n\n\n\nmodule.exports = ResponderTouchHistoryStore;","sourceCode":"/**\n * @providesModule ResponderTouchHistoryStore\n */\n\n\"use strict\";\n\nvar EventPluginUtils = require('EventPluginUtils');\n\nvar invariant = require('invariant');\n\nvar isMoveish = EventPluginUtils.isMoveish;\nvar isStartish = EventPluginUtils.isStartish;\nvar isEndish = EventPluginUtils.isEndish;\n\nvar MAX_TOUCH_BANK = 20;\n\n/**\n * Touch position/time tracking information by touchID. Typically, we'll only\n * see IDs with a range of 1-20 (they are recycled when touches end and then\n * start again). This data is commonly needed by many different interaction\n * logic modules so precomputing it is very helpful to do once.\n * Each touch object in `touchBank` is of the following form:\n * { touchActive: boolean,\n * startTimeStamp: number,\n * startPageX: number,\n * startPageY: number,\n * currentPageX: number,\n * currentPageY: number,\n * currentTimeStamp: number\n * }\n */\nvar touchHistory = {\n touchBank: [ ],\n numberActiveTouches: 0,\n // If there is only one active touch, we remember its location. This prevents\n // us having to loop through all of the touches all the time in the most\n // common case.\n indexOfSingleActiveTouch: -1,\n mostRecentTimeStamp: 0,\n};\n\nvar timestampForTouch = function(touch) {\n // The legacy internal implementation provides \"timeStamp\", which has been\n // renamed to \"timestamp\". Let both work for now while we iron it out\n // TODO (evv): rename timeStamp to timestamp in internal code\n return touch.timeStamp || touch.timestamp;\n};\n\n/**\n * TODO: Instead of making gestures recompute filtered velocity, we could\n * include a built in velocity computation that can be reused globally.\n * @param {Touch} touch Native touch object.\n */\nvar initializeTouchData = function(touch) {\n return {\n touchActive: true,\n startTimeStamp: timestampForTouch(touch),\n startPageX: touch.pageX,\n startPageY: touch.pageY,\n currentPageX: touch.pageX,\n currentPageY: touch.pageY,\n currentTimeStamp: timestampForTouch(touch),\n previousPageX: touch.pageX,\n previousPageY: touch.pageY,\n previousTimeStamp: timestampForTouch(touch),\n };\n};\n\nvar reinitializeTouchTrack = function(touchTrack, touch) {\n touchTrack.touchActive = true;\n touchTrack.startTimeStamp = timestampForTouch(touch);\n touchTrack.startPageX = touch.pageX;\n touchTrack.startPageY = touch.pageY;\n touchTrack.currentPageX = touch.pageX;\n touchTrack.currentPageY = touch.pageY;\n touchTrack.currentTimeStamp = timestampForTouch(touch);\n touchTrack.previousPageX = touch.pageX;\n touchTrack.previousPageY = touch.pageY;\n touchTrack.previousTimeStamp = timestampForTouch(touch);\n};\n\nvar validateTouch = function(touch) {\n var identifier = touch.identifier;\n invariant(identifier != null, 'Touch object is missing identifier');\n if (identifier > MAX_TOUCH_BANK) {\n console.warn(\n 'Touch identifier ' + identifier + ' is greater than maximum ' +\n 'supported ' + MAX_TOUCH_BANK + ' which causes performance issues ' +\n 'backfilling array locations for all of the indices.'\n );\n }\n};\n\nvar recordStartTouchData = function(touch) {\n var touchBank = touchHistory.touchBank;\n var identifier = touch.identifier;\n var touchTrack = touchBank[identifier];\n if (__DEV__) {\n validateTouch(touch);\n }\n if (!touchTrack) {\n touchBank[touch.identifier] = initializeTouchData(touch);\n } else {\n reinitializeTouchTrack(touchTrack, touch);\n }\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n};\n\nvar recordMoveTouchData = function(touch) {\n var touchBank = touchHistory.touchBank;\n var touchTrack = touchBank[touch.identifier];\n if (__DEV__) {\n validateTouch(touch);\n invariant(touchTrack, 'Touch data should have been recorded on start');\n }\n touchTrack.touchActive = true;\n touchTrack.previousPageX = touchTrack.currentPageX;\n touchTrack.previousPageY = touchTrack.currentPageY;\n touchTrack.previousTimeStamp = touchTrack.currentTimeStamp;\n touchTrack.currentPageX = touch.pageX;\n touchTrack.currentPageY = touch.pageY;\n touchTrack.currentTimeStamp = timestampForTouch(touch);\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n};\n\nvar recordEndTouchData = function(touch) {\n var touchBank = touchHistory.touchBank;\n var touchTrack = touchBank[touch.identifier];\n if (__DEV__) {\n validateTouch(touch);\n invariant(touchTrack, 'Touch data should have been recorded on start');\n }\n touchTrack.previousPageX = touchTrack.currentPageX;\n touchTrack.previousPageY = touchTrack.currentPageY;\n touchTrack.previousTimeStamp = touchTrack.currentTimeStamp;\n touchTrack.currentPageX = touch.pageX;\n touchTrack.currentPageY = touch.pageY;\n touchTrack.currentTimeStamp = timestampForTouch(touch);\n touchTrack.touchActive = false;\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n};\n\nvar ResponderTouchHistoryStore = {\n recordTouchTrack: function(topLevelType, nativeEvent) {\n var touchBank = touchHistory.touchBank;\n if (isMoveish(topLevelType)) {\n nativeEvent.changedTouches.forEach(recordMoveTouchData);\n } else if (isStartish(topLevelType)) {\n nativeEvent.changedTouches.forEach(recordStartTouchData);\n touchHistory.numberActiveTouches = nativeEvent.touches.length;\n if (touchHistory.numberActiveTouches === 1) {\n touchHistory.indexOfSingleActiveTouch = nativeEvent.touches[0].identifier;\n }\n } else if (isEndish(topLevelType)) {\n nativeEvent.changedTouches.forEach(recordEndTouchData);\n touchHistory.numberActiveTouches = nativeEvent.touches.length;\n if (touchHistory.numberActiveTouches === 1) {\n for (var i = 0; i < touchBank.length; i++) {\n var touchTrackToCheck = touchBank[i];\n if (touchTrackToCheck != null && touchTrackToCheck.touchActive) {\n touchHistory.indexOfSingleActiveTouch = i;\n break;\n }\n }\n if (__DEV__) {\n var activeTouchData = touchBank[touchHistory.indexOfSingleActiveTouch];\n var foundActive = activeTouchData != null && !!activeTouchData.touchActive;\n invariant(foundActive, 'Cannot find single active touch');\n }\n }\n }\n },\n\n touchHistory: touchHistory,\n};\n\n\nmodule.exports = ResponderTouchHistoryStore;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderTouchHistoryStore.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/accumulate.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\nfunction accumulate(current,next){\ninvariant(\nnext != null,\n'accumulate(...): Accumulated items must be not be null or undefined.');\n\nif(current == null){\nreturn next;}else \n{\n\n\nvar currentIsArray=Array.isArray(current);\nvar nextIsArray=Array.isArray(next);\nif(currentIsArray){\nreturn current.concat(next);}else \n{\nif(nextIsArray){\nreturn [current].concat(next);}else \n{\nreturn [current,next];}}}}\n\n\n\n\n\nmodule.exports = accumulate;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule accumulate\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Accumulates items that must not be null or undefined.\n *\n * This is used to conserve memory by avoiding array allocations.\n *\n * @return {*|array<*>} An accumulation of items.\n */\nfunction accumulate(current, next) {\n invariant(\n next != null,\n 'accumulate(...): Accumulated items must be not be null or undefined.'\n );\n if (current == null) {\n return next;\n } else {\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n var currentIsArray = Array.isArray(current);\n var nextIsArray = Array.isArray(next);\n if (currentIsArray) {\n return current.concat(next);\n } else {\n if (nextIsArray) {\n return [current].concat(next);\n } else {\n return [current, next];\n }\n }\n }\n}\n\nmodule.exports = accumulate;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/accumulate.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/platformImplementations/universal/worker/UniversalWorkerNodeHandle.js":{"data":{"code":"var \n\n\n\nReactNativeTagHandles=require('ReactNativeTagHandles');\n\nvar invariant=require('invariant');\n\nvar UniversalWorkerNodeHandle={\ngetRootNodeID:function(nodeHandle){\ninvariant(\nnodeHandle !== undefined && nodeHandle !== null && nodeHandle !== 0,\n'No node handle defined');\n\nreturn ReactNativeTagHandles.tagToRootNodeID[nodeHandle];}};\n\n\n\nmodule.exports = UniversalWorkerNodeHandle;","sourceCode":"/**\n * @providesModule UniversalWorkerNodeHandle\n */\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nvar invariant = require('invariant');\n\nvar UniversalWorkerNodeHandle = {\n getRootNodeID: function(nodeHandle) {\n invariant(\n nodeHandle !== undefined && nodeHandle !== null && nodeHandle !== 0,\n 'No node handle defined'\n );\n return ReactNativeTagHandles.tagToRootNodeID[nodeHandle];\n }\n};\n\nmodule.exports = UniversalWorkerNodeHandle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/platformImplementations/universal/worker/UniversalWorkerNodeHandle.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/createReactNativeComponentClass.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeBaseComponent=require('ReactNativeBaseComponent');\n\n\n\n\n\n\n\n\n\n\n\nvar createReactNativeComponentClass=function(\nviewConfig)\n{\nvar Constructor=function(element){\nthis._currentElement = element;\n\nthis._rootNodeID = null;\nthis._renderedChildren = null;\nthis.previousFlattenedStyle = null;};\n\nConstructor.displayName = viewConfig.uiViewClassName;\nConstructor.viewConfig = viewConfig;\nConstructor.prototype = new ReactNativeBaseComponent(viewConfig);\nConstructor.prototype.constructor = Constructor;\n\nreturn Constructor;};\n\n\nmodule.exports = createReactNativeComponentClass;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule createReactNativeComponentClass\n * @flow\n */\n\n'use strict';\n\nvar ReactNativeBaseComponent = require('ReactNativeBaseComponent');\n\n// See also ReactNativeBaseComponent\ntype ReactNativeBaseComponentViewConfig = {\n validAttributes: Object;\n uiViewClassName: string;\n}\n\n/**\n * @param {string} config iOS View configuration.\n * @private\n */\nvar createReactNativeComponentClass = function(\n viewConfig: ReactNativeBaseComponentViewConfig\n): ReactClass<any, any, any> {\n var Constructor = function(element) {\n this._currentElement = element;\n\n this._rootNodeID = null;\n this._renderedChildren = null;\n this.previousFlattenedStyle = null;\n };\n Constructor.displayName = viewConfig.uiViewClassName;\n Constructor.viewConfig = viewConfig;\n Constructor.prototype = new ReactNativeBaseComponent(viewConfig);\n Constructor.prototype.constructor = Constructor;\n\n return ((Constructor: any): ReactClass);\n};\n\nmodule.exports = createReactNativeComponentClass;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/createReactNativeComponentClass.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeBaseComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar ReactNativeEventEmitter=require('ReactNativeEventEmitter');\nvar ReactNativeStyleAttributes=require('ReactNativeStyleAttributes');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar ReactMultiChild=require('ReactMultiChild');\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar styleDiffer=require('styleDiffer');\nvar deepFreezeAndThrowOnMutationInDev=require('deepFreezeAndThrowOnMutationInDev');\nvar diffRawProperties=require('diffRawProperties');\nvar flattenStyle=require('flattenStyle');\nvar precomputeStyle=require('precomputeStyle');\nvar warning=require('warning');\n\nvar registrationNames=ReactNativeEventEmitter.registrationNames;\nvar putListener=ReactNativeEventEmitter.putListener;\nvar deleteAllListeners=ReactNativeEventEmitter.deleteAllListeners;\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeBaseComponent=function(\nviewConfig)\n{\nthis.viewConfig = viewConfig;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar cachedIndexArray=function(size){\nvar cachedResult=cachedIndexArray._cache[size];\nif(!cachedResult){\nvar arr=[];\nfor(var i=0;i < size;i++) {\narr[i] = i;}\n\ncachedIndexArray._cache[size] = arr;\nreturn arr;}else \n{\nreturn cachedResult;}};\n\n\ncachedIndexArray._cache = {};\n\n\n\n\n\nReactNativeBaseComponent.Mixin = {\ngetPublicInstance:function(){\n\nreturn this;},\n\n\nconstruct:function(element){\nthis._currentElement = element;},\n\n\nunmountComponent:function(){\ndeleteAllListeners(this._rootNodeID);\nthis.unmountChildren();\nthis._rootNodeID = null;},\n\n\n\n\n\n\n\n\n\n\ninitializeChildren:function(children,containerTag,transaction,context){\nvar mountImages=this.mountChildren(children,transaction,context);\n\n\n\nif(mountImages.length){\nvar indexes=cachedIndexArray(mountImages.length);\n\n\nvar createdTags=[];\nfor(var i=0;i < mountImages.length;i++) {\nvar mountImage=mountImages[i];\nvar childTag=mountImage.tag;\nvar childID=mountImage.rootNodeID;\nwarning(\nmountImage && mountImage.rootNodeID && mountImage.tag,\n'Mount image returned does not have required data');\n\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\nchildID,\nchildTag);\n\ncreatedTags[i] = mountImage.tag;}\n\nRCTUIManager.\nmanageChildren(containerTag,null,null,createdTags,indexes,null);}},\n\n\n\n\n\n\n\n\n\n\n\n\ncomputeUpdatedProperties:function(prevProps,nextProps,validAttributes){\nif(__DEV__){\nfor(var key in nextProps) {\nif(nextProps.hasOwnProperty(key) && \nnextProps[key] && \nvalidAttributes[key]){\ndeepFreezeAndThrowOnMutationInDev(nextProps[key]);}}}\n\n\n\n\nvar updatePayload=diffRawProperties(\nnull,\nprevProps,\nnextProps,\nvalidAttributes);\n\n\n\n\n\n\n\nif(styleDiffer(nextProps.style,prevProps.style)){\nvar nextFlattenedStyle=precomputeStyle(flattenStyle(nextProps.style));\nupdatePayload = diffRawProperties(\nupdatePayload,\nthis.previousFlattenedStyle,\nnextFlattenedStyle,\nReactNativeStyleAttributes);\n\nthis.previousFlattenedStyle = nextFlattenedStyle;}\n\n\nreturn updatePayload;},\n\n\n\n\n\n\n\n\n\n\n\nreceiveComponent:function(nextElement,transaction,context){\nvar prevElement=this._currentElement;\nthis._currentElement = nextElement;\n\nvar updatePayload=this.computeUpdatedProperties(\nprevElement.props,\nnextElement.props,\nthis.viewConfig.validAttributes);\n\n\nif(updatePayload){\nRCTUIManager.updateView(\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(this._rootNodeID),\nthis.viewConfig.uiViewClassName,\nupdatePayload);}\n\n\n\nthis._reconcileListenersUponUpdate(\nprevElement.props,\nnextElement.props);\n\nthis.updateChildren(nextElement.props.children,transaction,context);},\n\n\n\n\n\n_registerListenersUponCreation:function(initialProps){\nfor(var key in initialProps) {\n\n\nif(registrationNames[key] && initialProps[key]){\nvar listener=initialProps[key];\nputListener(this._rootNodeID,key,listener);}}},\n\n\n\n\n\n\n\n\n\n_reconcileListenersUponUpdate:function(prevProps,nextProps){\nfor(var key in nextProps) {\nif(registrationNames[key] && nextProps[key] !== prevProps[key]){\nputListener(this._rootNodeID,key,nextProps[key]);}}},\n\n\n\n\n\n\n\n\n\nmountComponent:function(rootID,transaction,context){\nthis._rootNodeID = rootID;\n\nvar tag=ReactNativeTagHandles.allocateTag();\n\nthis.previousFlattenedStyle = {};\nvar updatePayload=this.computeUpdatedProperties(\n{},\nthis._currentElement.props,\nthis.viewConfig.validAttributes);\n\n\nvar nativeTopRootID=ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootID);\nRCTUIManager.createView(\ntag,\nthis.viewConfig.uiViewClassName,\nnativeTopRootID?ReactNativeTagHandles.rootNodeIDToTag[nativeTopRootID]:null,\nupdatePayload);\n\n\nthis._registerListenersUponCreation(this._currentElement.props);\nthis.initializeChildren(\nthis._currentElement.props.children,\ntag,\ntransaction,\ncontext);\n\nreturn {\nrootNodeID:rootID,\ntag:tag};}};\n\n\n\n\n\n\n\n\nObject.assign(\nReactNativeBaseComponent.prototype,\nReactMultiChild.Mixin,\nReactNativeBaseComponent.Mixin,\nNativeMethodsMixin);\n\n\nmodule.exports = ReactNativeBaseComponent;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeBaseComponent\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar ReactNativeEventEmitter = require('ReactNativeEventEmitter');\nvar ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar ReactMultiChild = require('ReactMultiChild');\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar styleDiffer = require('styleDiffer');\nvar deepFreezeAndThrowOnMutationInDev = require('deepFreezeAndThrowOnMutationInDev');\nvar diffRawProperties = require('diffRawProperties');\nvar flattenStyle = require('flattenStyle');\nvar precomputeStyle = require('precomputeStyle');\nvar warning = require('warning');\n\nvar registrationNames = ReactNativeEventEmitter.registrationNames;\nvar putListener = ReactNativeEventEmitter.putListener;\nvar deleteAllListeners = ReactNativeEventEmitter.deleteAllListeners;\n\ntype ReactNativeBaseComponentViewConfig = {\n validAttributes: Object;\n uiViewClassName: string;\n}\n\n/**\n * @constructor ReactNativeBaseComponent\n * @extends ReactComponent\n * @extends ReactMultiChild\n * @param {!object} UIKit View Configuration.\n */\nvar ReactNativeBaseComponent = function(\n viewConfig: ReactNativeBaseComponentViewConfig\n) {\n this.viewConfig = viewConfig;\n};\n\n/**\n * Generates and caches arrays of the form:\n *\n * [0, 1, 2, 3]\n * [0, 1, 2, 3, 4]\n * [0, 1]\n *\n * @param {number} size Size of array to generate.\n * @return {Array<number>} Array with values that mirror the index.\n */\nvar cachedIndexArray = function(size) {\n var cachedResult = cachedIndexArray._cache[size];\n if (!cachedResult) {\n var arr = [];\n for (var i = 0; i < size; i++) {\n arr[i] = i;\n }\n cachedIndexArray._cache[size] = arr;\n return arr;\n } else {\n return cachedResult;\n }\n};\ncachedIndexArray._cache = {};\n\n/**\n * Mixin for containers that contain UIViews. NOTE: markup is rendered markup\n * which is a `viewID` ... see the return value for `mountComponent` !\n */\nReactNativeBaseComponent.Mixin = {\n getPublicInstance: function() {\n // TODO: This should probably use a composite wrapper\n return this;\n },\n\n construct: function(element) {\n this._currentElement = element;\n },\n\n unmountComponent: function() {\n deleteAllListeners(this._rootNodeID);\n this.unmountChildren();\n this._rootNodeID = null;\n },\n\n /**\n * Every native component is responsible for allocating its own `tag`, and\n * issuing the native `createView` command. But it is not responsible for\n * recording the fact that its own `rootNodeID` is associated with a\n * `nodeHandle`. Only the code that actually adds its `nodeHandle` (`tag`) as\n * a child of a container can confidently record that in\n * `ReactNativeTagHandles`.\n */\n initializeChildren: function(children, containerTag, transaction, context) {\n var mountImages = this.mountChildren(children, transaction, context);\n // In a well balanced tree, half of the nodes are in the bottom row and have\n // no children - let's avoid calling out to the native bridge for a large\n // portion of the children.\n if (mountImages.length) {\n var indexes = cachedIndexArray(mountImages.length);\n // TODO: Pool these per platform view class. Reusing the `mountImages`\n // array would likely be a jit deopt.\n var createdTags = [];\n for (var i = 0; i < mountImages.length; i++) {\n var mountImage = mountImages[i];\n var childTag = mountImage.tag;\n var childID = mountImage.rootNodeID;\n warning(\n mountImage && mountImage.rootNodeID && mountImage.tag,\n 'Mount image returned does not have required data'\n );\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\n childID,\n childTag\n );\n createdTags[i] = mountImage.tag;\n }\n RCTUIManager\n .manageChildren(containerTag, null, null, createdTags, indexes, null);\n }\n },\n\n\n /**\n * Beware, this function has side effect to store this.previousFlattenedStyle!\n *\n * @param {!object} prevProps Previous properties\n * @param {!object} nextProps Next properties\n * @param {!object} validAttributes Set of valid attributes and how they\n * should be diffed\n */\n computeUpdatedProperties: function(prevProps, nextProps, validAttributes) {\n if (__DEV__) {\n for (var key in nextProps) {\n if (nextProps.hasOwnProperty(key) &&\n nextProps[key] &&\n validAttributes[key]) {\n deepFreezeAndThrowOnMutationInDev(nextProps[key]);\n }\n }\n }\n\n var updatePayload = diffRawProperties(\n null, // updatePayload\n prevProps,\n nextProps,\n validAttributes\n );\n\n // The style property is a deeply nested element which includes numbers\n // to represent static objects. Most of the time, it doesn't change across\n // renders, so it's faster to spend the time checking if it is different\n // before actually doing the expensive flattening operation in order to\n // compute the diff.\n if (styleDiffer(nextProps.style, prevProps.style)) {\n var nextFlattenedStyle = precomputeStyle(flattenStyle(nextProps.style));\n updatePayload = diffRawProperties(\n updatePayload,\n this.previousFlattenedStyle,\n nextFlattenedStyle,\n ReactNativeStyleAttributes\n );\n this.previousFlattenedStyle = nextFlattenedStyle;\n }\n\n return updatePayload;\n },\n\n\n /**\n * Updates the component's currently mounted representation.\n *\n * @param {object} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function(nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n\n var updatePayload = this.computeUpdatedProperties(\n prevElement.props,\n nextElement.props,\n this.viewConfig.validAttributes\n );\n\n if (updatePayload) {\n RCTUIManager.updateView(\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(this._rootNodeID),\n this.viewConfig.uiViewClassName,\n updatePayload\n );\n }\n\n this._reconcileListenersUponUpdate(\n prevElement.props,\n nextElement.props\n );\n this.updateChildren(nextElement.props.children, transaction, context);\n },\n\n /**\n * @param {object} initialProps Native component props.\n */\n _registerListenersUponCreation: function(initialProps) {\n for (var key in initialProps) {\n // NOTE: The check for `!props[key]`, is only possible because this method\n // registers listeners the *first* time a component is created.\n if (registrationNames[key] && initialProps[key]) {\n var listener = initialProps[key];\n putListener(this._rootNodeID, key, listener);\n }\n }\n },\n\n /**\n * Reconciles event listeners, adding or removing if necessary.\n * @param {object} prevProps Native component props including events.\n * @param {object} nextProps Next native component props including events.\n */\n _reconcileListenersUponUpdate: function(prevProps, nextProps) {\n for (var key in nextProps) {\n if (registrationNames[key] && (nextProps[key] !== prevProps[key])) {\n putListener(this._rootNodeID, key, nextProps[key]);\n }\n }\n },\n\n /**\n * @param {string} rootID Root ID of this subtree.\n * @param {Transaction} transaction For creating/updating.\n * @return {string} Unique iOS view tag.\n */\n mountComponent: function(rootID, transaction, context) {\n this._rootNodeID = rootID;\n\n var tag = ReactNativeTagHandles.allocateTag();\n\n this.previousFlattenedStyle = {};\n var updatePayload = this.computeUpdatedProperties(\n {}, // previous props\n this._currentElement.props, // next props\n this.viewConfig.validAttributes\n );\n\n var nativeTopRootID = ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootID);\n RCTUIManager.createView(\n tag,\n this.viewConfig.uiViewClassName,\n nativeTopRootID ? ReactNativeTagHandles.rootNodeIDToTag[nativeTopRootID] : null,\n updatePayload\n );\n\n this._registerListenersUponCreation(this._currentElement.props);\n this.initializeChildren(\n this._currentElement.props.children,\n tag,\n transaction,\n context\n );\n return {\n rootNodeID: rootID,\n tag: tag\n };\n }\n};\n\n/**\n * Order of mixins is important. ReactNativeBaseComponent overrides methods in\n * ReactMultiChild.\n */\nObject.assign(\n ReactNativeBaseComponent.prototype,\n ReactMultiChild.Mixin,\n ReactNativeBaseComponent.Mixin,\n NativeMethodsMixin\n);\n\nmodule.exports = ReactNativeBaseComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeBaseComponent.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/NativeMethodsMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('NativeModules');\nvar RCTPOPAnimationManager=NativeModules.POPAnimationManager;\nvar RCTUIManager=NativeModules.UIManager;\nvar TextInputState=require('TextInputState');\n\nvar findNodeHandle=require('findNodeHandle');\nvar flattenStyle=require('flattenStyle');\nvar invariant=require('invariant');\nvar mergeFast=require('mergeFast');\nvar precomputeStyle=require('precomputeStyle');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar animationIDInvariant=function(\nfuncName,\nanim)\n{\ninvariant(\nanim,\nfuncName + ' must be called with a valid animation ID returned from' + \n' POPAnimation.createAnimation, received: \"' + anim + '\"');};\n\n\n\nvar NativeMethodsMixin={\naddAnimation:function(anim,callback){\nanimationIDInvariant('addAnimation',anim);\nRCTPOPAnimationManager.addAnimation(\nfindNodeHandle(this),\nanim,\nmountSafeCallback(this,callback));},\n\n\n\nremoveAnimation:function(anim){\nanimationIDInvariant('removeAnimation',anim);\nRCTPOPAnimationManager.removeAnimation(findNodeHandle(this),anim);},\n\n\nmeasure:function(callback){\nRCTUIManager.measure(\nfindNodeHandle(this),\nmountSafeCallback(this,callback));},\n\n\n\nmeasureLayout:function(\nrelativeToNativeNode,\nonSuccess,\nonFail)\n{\nRCTUIManager.measureLayout(\nfindNodeHandle(this),\nrelativeToNativeNode,\nmountSafeCallback(this,onFail),\nmountSafeCallback(this,onSuccess));},\n\n\n\n\n\n\n\n\nsetNativeProps:function(nativeProps){\n\n\n\n\n\nvar hasOnlyStyle=true;\nfor(var key in nativeProps) {\nif(key !== 'style'){\nhasOnlyStyle = false;\nbreak;}}\n\n\nvar style=precomputeStyle(flattenStyle(nativeProps.style));\n\nvar props=null;\nif(hasOnlyStyle){\nprops = style;}else \nif(!style){\nprops = nativeProps;}else \n{\nprops = mergeFast(nativeProps,style);}\n\n\nRCTUIManager.updateView(\nfindNodeHandle(this),\nthis.viewConfig.uiViewClassName,\nprops);},\n\n\n\nfocus:function(){\nTextInputState.focusTextInput(findNodeHandle(this));},\n\n\nblur:function(){\nTextInputState.blurTextInput(findNodeHandle(this));}};\n\n\n\nfunction throwOnStylesProp(component,props){\nif(props.styles !== undefined){\nvar owner=component._owner || null;\nvar name=component.constructor.displayName;\nvar msg='`styles` is not a supported property of `' + name + '`, did ' + \n'you mean `style` (singular)?';\nif(owner && owner.constructor && owner.constructor.displayName){\nmsg += '\\n\\nCheck the `' + owner.constructor.displayName + '` parent ' + \n' component.';}\n\nthrow new Error(msg);}}\n\n\nif(__DEV__){\n\n\n\nvar NativeMethodsMixin_DEV=NativeMethodsMixin;\ninvariant(\n!NativeMethodsMixin_DEV.componentWillMount && \n!NativeMethodsMixin_DEV.componentWillReceiveProps,\n'Do not override existing functions.');\n\nNativeMethodsMixin_DEV.componentWillMount = function(){\nthrowOnStylesProp(this,this.props);};\n\nNativeMethodsMixin_DEV.componentWillReceiveProps = function(newProps){\nthrowOnStylesProp(this,newProps);};}\n\n\n\n\n\n\n\nvar mountSafeCallback=function(context,callback){\nreturn function(){\nif(!callback || context.isMounted && !context.isMounted()){\nreturn;}\n\nreturn callback.apply(context,arguments);};};\n\n\n\nmodule.exports = NativeMethodsMixin;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule NativeMethodsMixin\n * @flow\n */\n'use strict';\n\nvar NativeModules = require('NativeModules');\nvar RCTPOPAnimationManager = NativeModules.POPAnimationManager;\nvar RCTUIManager = NativeModules.UIManager;\nvar TextInputState = require('TextInputState');\n\nvar findNodeHandle = require('findNodeHandle');\nvar flattenStyle = require('flattenStyle');\nvar invariant = require('invariant');\nvar mergeFast = require('mergeFast');\nvar precomputeStyle = require('precomputeStyle');\n\ntype MeasureOnSuccessCallback = (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n) => void\n\ntype MeasureLayoutOnSuccessCallback = (\n left: number,\n top: number,\n width: number,\n height: number\n) => void\n\nvar animationIDInvariant = function(\n funcName: string,\n anim: number\n) {\n invariant(\n anim,\n funcName + ' must be called with a valid animation ID returned from' +\n ' POPAnimation.createAnimation, received: \"' + anim + '\"'\n );\n};\n\nvar NativeMethodsMixin = {\n addAnimation: function(anim: number, callback?: (finished: bool) => void) {\n animationIDInvariant('addAnimation', anim);\n RCTPOPAnimationManager.addAnimation(\n findNodeHandle(this),\n anim,\n mountSafeCallback(this, callback)\n );\n },\n\n removeAnimation: function(anim: number) {\n animationIDInvariant('removeAnimation', anim);\n RCTPOPAnimationManager.removeAnimation(findNodeHandle(this), anim);\n },\n\n measure: function(callback: MeasureOnSuccessCallback) {\n RCTUIManager.measure(\n findNodeHandle(this),\n mountSafeCallback(this, callback)\n );\n },\n\n measureLayout: function(\n relativeToNativeNode: number,\n onSuccess: MeasureLayoutOnSuccessCallback,\n onFail: () => void /* currently unused */\n ) {\n RCTUIManager.measureLayout(\n findNodeHandle(this),\n relativeToNativeNode,\n mountSafeCallback(this, onFail),\n mountSafeCallback(this, onSuccess)\n );\n },\n\n /**\n * This function sends props straight to native. They will not participate\n * in future diff process, this means that if you do not include them in the\n * next render, they will remain active.\n */\n setNativeProps: function(nativeProps: Object) {\n // nativeProps contains a style attribute that's going to be flattened\n // and all the attributes expanded in place. In order to make this\n // process do as few allocations and copies as possible, we return\n // one if the other is empty. Only if both have values then we create\n // a new object and merge.\n var hasOnlyStyle = true;\n for (var key in nativeProps) {\n if (key !== 'style') {\n hasOnlyStyle = false;\n break;\n }\n }\n var style = precomputeStyle(flattenStyle(nativeProps.style));\n\n var props = null;\n if (hasOnlyStyle) {\n props = style;\n } else if (!style) {\n props = nativeProps;\n } else {\n props = mergeFast(nativeProps, style);\n }\n\n RCTUIManager.updateView(\n findNodeHandle(this),\n this.viewConfig.uiViewClassName,\n props\n );\n },\n\n focus: function() {\n TextInputState.focusTextInput(findNodeHandle(this));\n },\n\n blur: function() {\n TextInputState.blurTextInput(findNodeHandle(this));\n }\n};\n\nfunction throwOnStylesProp(component, props) {\n if (props.styles !== undefined) {\n var owner = component._owner || null;\n var name = component.constructor.displayName;\n var msg = '`styles` is not a supported property of `' + name + '`, did ' +\n 'you mean `style` (singular)?';\n if (owner && owner.constructor && owner.constructor.displayName) {\n msg += '\\n\\nCheck the `' + owner.constructor.displayName + '` parent ' +\n ' component.';\n }\n throw new Error(msg);\n }\n}\nif (__DEV__) {\n // hide this from Flow since we can't define these properties outside of\n // __DEV__ without actually implementing them (setting them to undefined\n // isn't allowed by ReactClass)\n var NativeMethodsMixin_DEV = (NativeMethodsMixin: any);\n invariant(\n !NativeMethodsMixin_DEV.componentWillMount &&\n !NativeMethodsMixin_DEV.componentWillReceiveProps,\n 'Do not override existing functions.'\n );\n NativeMethodsMixin_DEV.componentWillMount = function () {\n throwOnStylesProp(this, this.props);\n };\n NativeMethodsMixin_DEV.componentWillReceiveProps = function (newProps) {\n throwOnStylesProp(this, newProps);\n };\n}\n\n/**\n * In the future, we should cleanup callbacks by cancelling them instead of\n * using this.\n */\nvar mountSafeCallback = function(context: ReactComponent, callback: ?Function): any {\n return function() {\n if (!callback || (context.isMounted && !context.isMounted())) {\n return;\n }\n return callback.apply(context, arguments);\n };\n};\n\nmodule.exports = NativeMethodsMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/NativeMethodsMixin.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TextInput/TextInputState.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar TextInputState={\n\n\n\n_currentlyFocusedID:null,\n\n\n\n\n\ncurrentlyFocusedField:function(){\nreturn this._currentlyFocusedID;},\n\n\n\n\n\n\n\nfocusTextInput:function(textFieldID){\nif(this._currentlyFocusedID !== textFieldID && textFieldID !== null){\nthis._currentlyFocusedID = textFieldID;\nRCTUIManager.focus(textFieldID);}},\n\n\n\n\n\n\n\n\nblurTextInput:function(textFieldID){\nif(this._currentlyFocusedID === textFieldID && textFieldID !== null){\nthis._currentlyFocusedID = null;\nRCTUIManager.blur(textFieldID);}}};\n\n\n\n\nmodule.exports = TextInputState;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TextInputState\n * @flow\n *\n * This class is responsible for coordinating the \"focused\"\n * state for TextInputs. All calls relating to the keyboard\n * should be funneled through here\n */\n'use strict';\n\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar TextInputState = {\n /**\n * Internal state\n */\n _currentlyFocusedID: (null: ?number),\n\n /**\n * Returns the ID of the currently focused text field, if one exists\n * If no text field is focused it returns null\n */\n currentlyFocusedField: function(): ?number {\n return this._currentlyFocusedID;\n },\n\n /**\n * @param {number} TextInputID id of the text field to focus\n * Focuses the specified text field\n * noop if the text field was already focused\n */\n focusTextInput: function(textFieldID: ?number) {\n if (this._currentlyFocusedID !== textFieldID && textFieldID !== null) {\n this._currentlyFocusedID = textFieldID;\n RCTUIManager.focus(textFieldID);\n }\n },\n\n /**\n * @param {number} textFieldID id of the text field to focus\n * Unfocuses the specified text field\n * noop if it wasn't focused\n */\n blurTextInput: function(textFieldID: ?number) {\n if (this._currentlyFocusedID === textFieldID && textFieldID !== null) {\n this._currentlyFocusedID = null;\n RCTUIManager.blur(textFieldID);\n }\n }\n};\n\nmodule.exports = TextInputState;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TextInput/TextInputState.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/findNodeHandle.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction findNodeHandle(componentOrHandle){\nif(__DEV__){\nvar owner=ReactCurrentOwner.current;\nif(owner !== null){\nwarning(\nowner._warnedAboutRefsInRender,\n'%s is accessing findNodeHandle inside its render(). ' + \n'render() should be a pure function of props and state. It should ' + \n'never access something that requires stale data from the previous ' + \n'render, such as refs. Move this logic to componentDidMount and ' + \n'componentDidUpdate instead.',\nowner.getName() || 'A component');\n\nowner._warnedAboutRefsInRender = true;}}\n\n\nif(componentOrHandle == null){\nreturn null;}\n\nif(typeof componentOrHandle === 'number'){\n\nreturn componentOrHandle;}\n\n\nvar component=componentOrHandle;\n\n\n\nvar internalInstance=ReactInstanceMap.get(component);\nif(internalInstance){\nreturn ReactNativeTagHandles.rootNodeIDToTag[internalInstance._rootNodeID];}else \n{\nvar rootNodeID=component._rootNodeID;\nif(rootNodeID){\nreturn ReactNativeTagHandles.rootNodeIDToTag[rootNodeID];}else \n{\ninvariant(\n\n\ntypeof component === 'object' && \n'_rootNodeID' in component || \n\n\ncomponent.render != null && \ntypeof component.render === 'function',\n\n'findNodeHandle(...): Argument is not a component ' + \n'(type: %s, keys: %s)',\ntypeof component,\nObject.keys(component));\n\ninvariant(\nfalse,\n'findNodeHandle(...): Unable to find node handle for unmounted ' + \n'component.');}}}\n\n\n\n\n\nmodule.exports = findNodeHandle;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule findNodeHandle\n * @flow\n */\n\n'use strict';\n\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n/**\n * ReactNative vs ReactWeb\n * -----------------------\n * React treats some pieces of data opaquely. This means that the information\n * is first class (it can be passed around), but cannot be inspected. This\n * allows us to build infrastructure that reasons about resources, without\n * making assumptions about the nature of those resources, and this allows that\n * infra to be shared across multiple platforms, where the resources are very\n * different. General infra (such as `ReactMultiChild`) reasons opaquely about\n * the data, but platform specific code (such as `ReactNativeBaseComponent`) can\n * make assumptions about the data.\n *\n *\n * `rootNodeID`, uniquely identifies a position in the generated native view\n * tree. Many layers of composite components (created with `React.createClass`)\n * can all share the same `rootNodeID`.\n *\n * `nodeHandle`: A sufficiently unambiguous way to refer to a lower level\n * resource (dom node, native view etc). The `rootNodeID` is sufficient for web\n * `nodeHandle`s, because the position in a tree is always enough to uniquely\n * identify a DOM node (we never have nodes in some bank outside of the\n * document). The same would be true for `ReactNative`, but we must maintain a\n * mapping that we can send efficiently serializable\n * strings across native boundaries.\n *\n * Opaque name TodaysWebReact FutureWebWorkerReact ReactNative\n * ----------------------------------------------------------------------------\n * nodeHandle N/A rootNodeID tag\n */\n\nfunction findNodeHandle(componentOrHandle: any): ?number {\n if (__DEV__) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n warning(\n owner._warnedAboutRefsInRender,\n '%s is accessing findNodeHandle inside its render(). ' +\n 'render() should be a pure function of props and state. It should ' +\n 'never access something that requires stale data from the previous ' +\n 'render, such as refs. Move this logic to componentDidMount and ' +\n 'componentDidUpdate instead.',\n owner.getName() || 'A component'\n );\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrHandle == null) {\n return null;\n }\n if (typeof componentOrHandle === 'number') {\n // Already a node handle\n return componentOrHandle;\n }\n\n var component = componentOrHandle;\n\n // TODO (balpert): Wrap iOS native components in a composite wrapper, then\n // ReactInstanceMap.get here will always succeed for mounted components\n var internalInstance = ReactInstanceMap.get(component);\n if (internalInstance) {\n return ReactNativeTagHandles.rootNodeIDToTag[internalInstance._rootNodeID];\n } else {\n var rootNodeID = component._rootNodeID;\n if (rootNodeID) {\n return ReactNativeTagHandles.rootNodeIDToTag[rootNodeID];\n } else {\n invariant(\n (\n // Native\n typeof component === 'object' &&\n '_rootNodeID' in component\n ) || (\n // Composite\n component.render != null &&\n typeof component.render === 'function'\n ),\n 'findNodeHandle(...): Argument is not a component ' +\n '(type: %s, keys: %s)',\n typeof component,\n Object.keys(component)\n );\n invariant(\n false,\n 'findNodeHandle(...): Unable to find node handle for unmounted ' +\n 'component.'\n );\n }\n }\n}\n\nmodule.exports = findNodeHandle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/findNodeHandle.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/flattenStyle.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar StyleSheetRegistry=require('StyleSheetRegistry');\nvar invariant=require('invariant');\n\n\n\n\nfunction getStyle(style){\nif(typeof style === 'number'){\nreturn StyleSheetRegistry.getStyleByID(style);}\n\nreturn style;}\n\n\nfunction flattenStyle(style){\nif(!style){\nreturn undefined;}\n\ninvariant(style !== true,'style may be false but not true');\n\nif(!Array.isArray(style)){\nreturn getStyle(style);}\n\n\nvar result={};\nfor(var i=0;i < style.length;++i) {\nvar computedStyle=flattenStyle(style[i]);\nif(computedStyle){\nfor(var key in computedStyle) {\nresult[key] = computedStyle[key];\n\nif(__DEV__){\nvar value=computedStyle[key];}}}}\n\n\n\n\nreturn result;}\n\n\nmodule.exports = flattenStyle;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule flattenStyle\n * @flow\n */\n'use strict';\n\nvar StyleSheetRegistry = require('StyleSheetRegistry');\nvar invariant = require('invariant');\n\ntype Atom = number | bool | Object | Array<?Atom>\ntype StyleObj = Atom | Array<?StyleObj>\n\nfunction getStyle(style) {\n if (typeof style === 'number') {\n return StyleSheetRegistry.getStyleByID(style);\n }\n return style;\n}\n\nfunction flattenStyle(style: ?StyleObj): ?Object {\n if (!style) {\n return undefined;\n }\n invariant(style !== true, 'style may be false but not true');\n\n if (!Array.isArray(style)) {\n return getStyle(style);\n }\n\n var result = {};\n for (var i = 0; i < style.length; ++i) {\n var computedStyle = flattenStyle(style[i]);\n if (computedStyle) {\n for (var key in computedStyle) {\n result[key] = computedStyle[key];\n\n if (__DEV__) {\n var value = computedStyle[key];\n }\n }\n }\n }\n return result;\n}\n\nmodule.exports = flattenStyle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/flattenStyle.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetRegistry.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles={};\nvar uniqueID=1;\nvar emptyStyle={};var \n\nStyleSheetRegistry=(function(){function StyleSheetRegistry(){_classCallCheck(this,StyleSheetRegistry);}_createClass(StyleSheetRegistry,null,[{key:'registerStyle',value:\nfunction registerStyle(style){\nvar id=++uniqueID;\nif(__DEV__){\nObject.freeze(style);}\n\nstyles[id] = style;\nreturn id;}},{key:'getStyleByID',value:\n\n\nfunction getStyleByID(id){\nif(!id){\n\n\nreturn emptyStyle;}\n\n\nvar style=styles[id];\nif(!style){\nconsole.warn('Invalid style with id `' + id + '`. Skipping ...');\nreturn emptyStyle;}\n\nreturn style;}}]);return StyleSheetRegistry;})();\n\n\n\nmodule.exports = StyleSheetRegistry;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StyleSheetRegistry\n * @flow\n */\n'use strict';\n\nvar styles = {};\nvar uniqueID = 1;\nvar emptyStyle = {};\n\nclass StyleSheetRegistry {\n static registerStyle(style: Object): number {\n var id = ++uniqueID;\n if (__DEV__) {\n Object.freeze(style);\n }\n styles[id] = style;\n return id;\n }\n\n static getStyleByID(id: number): Object {\n if (!id) {\n // Used in the style={[condition && id]} pattern,\n // we want it to be a no-op when the value is false or null\n return emptyStyle;\n }\n\n var style = styles[id];\n if (!style) {\n console.warn('Invalid style with id `' + id + '`. Skipping ...');\n return emptyStyle;\n }\n return style;\n }\n}\n\nmodule.exports = StyleSheetRegistry;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetRegistry.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/mergeFast.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mergeFast=function(one,two){\nvar ret={};\nfor(var keyOne in one) {\nret[keyOne] = one[keyOne];}\n\nfor(var keyTwo in two) {\nret[keyTwo] = two[keyTwo];}\n\nreturn ret;};\n\n\nmodule.exports = mergeFast;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule mergeFast\n * @flow\n */\n'use strict';\n\n/**\n * Faster version of `merge` that doesn't check its arguments and\n * also merges prototye inherited properties.\n *\n * @param {object} one Any non-null object.\n * @param {object} two Any non-null object.\n * @return {object} Merging of two objects, including prototype\n * inherited properties.\n */\nvar mergeFast = function(one: Object, two: Object): Object {\n var ret = {};\n for (var keyOne in one) {\n ret[keyOne] = one[keyOne];\n }\n for (var keyTwo in two) {\n ret[keyTwo] = two[keyTwo];\n }\n return ret;\n};\n\nmodule.exports = mergeFast;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/mergeFast.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/precomputeStyle.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar MatrixMath=require('MatrixMath');\nvar Platform=require('Platform');\n\nvar deepFreezeAndThrowOnMutationInDev=require('deepFreezeAndThrowOnMutationInDev');\nvar invariant=require('invariant');\nvar stringifySafe=require('stringifySafe');\n\n\n\n\n\nfunction precomputeStyle(style){\nif(!style || !style.transform){\nreturn style;}\n\ninvariant(\n!style.transformMatrix,\n'transformMatrix and transform styles cannot be used on the same component');\n\nvar newStyle=_precomputeTransforms(_extends({},style));\ndeepFreezeAndThrowOnMutationInDev(newStyle);\nreturn newStyle;}\n\n\n\n\n\n\n\n\n\n\nfunction _precomputeTransforms(style){var \ntransform=style.transform;\nvar result=MatrixMath.createIdentityMatrix();\n\ntransform.forEach(function(transformation){\nvar key=Object.keys(transformation)[0];\nvar value=transformation[key];\nif(__DEV__){\n_validateTransform(key,value,transformation);}\n\n\nswitch(key){\ncase 'matrix':\nMatrixMath.multiplyInto(result,result,value);\nbreak;\ncase 'rotate':\n_multiplyTransform(result,MatrixMath.reuseRotateZCommand,[_convertToRadians(value)]);\nbreak;\ncase 'scale':\n_multiplyTransform(result,MatrixMath.reuseScaleCommand,[value]);\nbreak;\ncase 'scaleX':\n_multiplyTransform(result,MatrixMath.reuseScaleXCommand,[value]);\nbreak;\ncase 'scaleY':\n_multiplyTransform(result,MatrixMath.reuseScaleYCommand,[value]);\nbreak;\ncase 'translate':\n_multiplyTransform(result,MatrixMath.reuseTranslate3dCommand,[value[0],value[1],value[2] || 0]);\nbreak;\ncase 'translateX':\n_multiplyTransform(result,MatrixMath.reuseTranslate2dCommand,[value,0]);\nbreak;\ncase 'translateY':\n_multiplyTransform(result,MatrixMath.reuseTranslate2dCommand,[0,value]);\nbreak;\ndefault:\nthrow new Error('Invalid transform name: ' + key);}});\n\n\n\n\n\n\n\nif(Platform.OS === 'android'){\nreturn _extends({},\nstyle,{\ntransformMatrix:result,\ndecomposedMatrix:MatrixMath.decomposeMatrix(result)});}\n\n\nreturn _extends({},\nstyle,{\ntransformMatrix:result});}\n\n\n\n\n\n\nfunction _multiplyTransform(\nresult,\nmatrixMathFunction,\nargs)\n{\nvar matrixToApply=MatrixMath.createIdentityMatrix();\nvar argsWithIdentity=[matrixToApply].concat(args);\nmatrixMathFunction.apply(this,argsWithIdentity);\nMatrixMath.multiplyInto(result,result,matrixToApply);}\n\n\n\n\n\n\nfunction _convertToRadians(value){\nvar floatValue=parseFloat(value,10);\nreturn value.indexOf('rad') > -1?floatValue:floatValue * Math.PI / 180;}\n\n\nfunction _validateTransform(key,value,transformation){\ninvariant(\n!value.getValue,\n'You passed an Animated.Value to a normal component. ' + \n'You need to wrap that component in an Animated. For example, ' + \n'replace <View /> by <Animated.View />.');\n\n\nvar multivalueTransforms=[\n'matrix',\n'translate'];\n\nif(multivalueTransforms.indexOf(key) !== -1){\ninvariant(\nArray.isArray(value),\n'Transform with key of %s must have an array as the value: %s',\nkey,\nstringifySafe(transformation));}\n\n\nswitch(key){\ncase 'matrix':\ninvariant(\nvalue.length === 9 || value.length === 16,\n'Matrix transform must have a length of 9 (2d) or 16 (3d). ' + \n'Provided matrix has a length of %s: %s',\nvalue.length,\nstringifySafe(transformation));\n\nbreak;\ncase 'translate':\nbreak;\ncase 'rotate':\ninvariant(\ntypeof value === 'string',\n'Transform with key of \"%s\" must be a string: %s',\nkey,\nstringifySafe(transformation));\n\ninvariant(\nvalue.indexOf('deg') > -1 || value.indexOf('rad') > -1,\n'Rotate transform must be expressed in degrees (deg) or radians ' + \n'(rad): %s',\nstringifySafe(transformation));\n\nbreak;\ndefault:\ninvariant(\ntypeof value === 'number',\n'Transform with key of \"%s\" must be a number: %s',\nkey,\nstringifySafe(transformation));}}\n\n\n\n\nmodule.exports = precomputeStyle;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule precomputeStyle\n * @flow\n */\n'use strict';\n\nvar MatrixMath = require('MatrixMath');\nvar Platform = require('Platform');\n\nvar deepFreezeAndThrowOnMutationInDev = require('deepFreezeAndThrowOnMutationInDev');\nvar invariant = require('invariant');\nvar stringifySafe = require('stringifySafe');\n\n/**\n * This method provides a hook where flattened styles may be precomputed or\n * otherwise prepared to become better input data for native code.\n */\nfunction precomputeStyle(style: ?Object): ?Object {\n if (!style || !style.transform) {\n return style;\n }\n invariant(\n !style.transformMatrix,\n 'transformMatrix and transform styles cannot be used on the same component'\n );\n var newStyle = _precomputeTransforms({...style});\n deepFreezeAndThrowOnMutationInDev(newStyle);\n return newStyle;\n}\n\n/**\n * Generate a transform matrix based on the provided transforms, and use that\n * within the style object instead.\n *\n * This allows us to provide an API that is similar to CSS, where transforms may\n * be applied in an arbitrary order, and yet have a universal, singular\n * interface to native code.\n */\nfunction _precomputeTransforms(style: Object): Object {\n var {transform} = style;\n var result = MatrixMath.createIdentityMatrix();\n\n transform.forEach(transformation => {\n var key = Object.keys(transformation)[0];\n var value = transformation[key];\n if (__DEV__) {\n _validateTransform(key, value, transformation);\n }\n\n switch (key) {\n case 'matrix':\n MatrixMath.multiplyInto(result, result, value);\n break;\n case 'rotate':\n _multiplyTransform(result, MatrixMath.reuseRotateZCommand, [_convertToRadians(value)]);\n break;\n case 'scale':\n _multiplyTransform(result, MatrixMath.reuseScaleCommand, [value]);\n break;\n case 'scaleX':\n _multiplyTransform(result, MatrixMath.reuseScaleXCommand, [value]);\n break;\n case 'scaleY':\n _multiplyTransform(result, MatrixMath.reuseScaleYCommand, [value]);\n break;\n case 'translate':\n _multiplyTransform(result, MatrixMath.reuseTranslate3dCommand, [value[0], value[1], value[2] || 0]);\n break;\n case 'translateX':\n _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [value, 0]);\n break;\n case 'translateY':\n _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [0, value]);\n break;\n default:\n throw new Error('Invalid transform name: ' + key);\n }\n });\n\n // Android does not support the direct application of a transform matrix to\n // a view, so we need to decompose the result matrix into transforms that can\n // get applied in the specific order of (1) translate (2) scale (3) rotate.\n // Once we can directly apply a matrix, we can remove this decomposition.\n if (Platform.OS === 'android') {\n return {\n ...style,\n transformMatrix: result,\n decomposedMatrix: MatrixMath.decomposeMatrix(result),\n };\n }\n return {\n ...style,\n transformMatrix: result,\n };\n}\n\n/**\n * Performs a destructive operation on a transform matrix.\n */\nfunction _multiplyTransform(\n result: Array<number>,\n matrixMathFunction: Function,\n args: Array<number>\n): void {\n var matrixToApply = MatrixMath.createIdentityMatrix();\n var argsWithIdentity = [matrixToApply].concat(args);\n matrixMathFunction.apply(this, argsWithIdentity);\n MatrixMath.multiplyInto(result, result, matrixToApply);\n}\n\n/**\n * Parses a string like '0.5rad' or '60deg' into radians expressed in a float.\n * Note that validation on the string is done in `_validateTransform()`.\n */\nfunction _convertToRadians(value: string): number {\n var floatValue = parseFloat(value, 10);\n return value.indexOf('rad') > -1 ? floatValue : floatValue * Math.PI / 180;\n}\n\nfunction _validateTransform(key, value, transformation) {\n invariant(\n !value.getValue,\n 'You passed an Animated.Value to a normal component. ' +\n 'You need to wrap that component in an Animated. For example, ' +\n 'replace <View /> by <Animated.View />.'\n );\n\n var multivalueTransforms = [\n 'matrix',\n 'translate',\n ];\n if (multivalueTransforms.indexOf(key) !== -1) {\n invariant(\n Array.isArray(value),\n 'Transform with key of %s must have an array as the value: %s',\n key,\n stringifySafe(transformation),\n );\n }\n switch (key) {\n case 'matrix':\n invariant(\n value.length === 9 || value.length === 16,\n 'Matrix transform must have a length of 9 (2d) or 16 (3d). ' +\n 'Provided matrix has a length of %s: %s',\n value.length,\n stringifySafe(transformation),\n );\n break;\n case 'translate':\n break;\n case 'rotate':\n invariant(\n typeof value === 'string',\n 'Transform with key of \"%s\" must be a string: %s',\n key,\n stringifySafe(transformation),\n );\n invariant(\n value.indexOf('deg') > -1 || value.indexOf('rad') > -1,\n 'Rotate transform must be expressed in degrees (deg) or radians ' +\n '(rad): %s',\n stringifySafe(transformation),\n );\n break;\n default:\n invariant(\n typeof value === 'number',\n 'Transform with key of \"%s\" must be a number: %s',\n key,\n stringifySafe(transformation),\n );\n }\n}\n\nmodule.exports = precomputeStyle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/precomputeStyle.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/MatrixMath.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\nvar MatrixMath={\ncreateIdentityMatrix:function(){\nreturn [\n1,0,0,0,\n0,1,0,0,\n0,0,1,0,\n0,0,0,1];},\n\n\n\ncreateCopy:function(m){\nreturn [\nm[0],m[1],m[2],m[3],\nm[4],m[5],m[6],m[7],\nm[8],m[9],m[10],m[11],\nm[12],m[13],m[14],m[15]];},\n\n\n\ncreateTranslate2d:function(x,y){\nvar mat=MatrixMath.createIdentityMatrix();\nMatrixMath.reuseTranslate2dCommand(mat,x,y);\nreturn mat;},\n\n\nreuseTranslate2dCommand:function(matrixCommand,x,y){\nmatrixCommand[12] = x;\nmatrixCommand[13] = y;},\n\n\nreuseTranslate3dCommand:function(matrixCommand,x,y,z){\nmatrixCommand[12] = x;\nmatrixCommand[13] = y;\nmatrixCommand[14] = z;},\n\n\ncreateScale:function(factor){\nvar mat=MatrixMath.createIdentityMatrix();\nMatrixMath.reuseScaleCommand(mat,factor);\nreturn mat;},\n\n\nreuseScaleCommand:function(matrixCommand,factor){\nmatrixCommand[0] = factor;\nmatrixCommand[5] = factor;},\n\n\nreuseScale3dCommand:function(matrixCommand,x,y,z){\nmatrixCommand[0] = x;\nmatrixCommand[5] = y;\nmatrixCommand[10] = z;},\n\n\nreuseScaleXCommand:function(matrixCommand,factor){\nmatrixCommand[0] = factor;},\n\n\nreuseScaleYCommand:function(matrixCommand,factor){\nmatrixCommand[5] = factor;},\n\n\nreuseScaleZCommand:function(matrixCommand,factor){\nmatrixCommand[10] = factor;},\n\n\nreuseRotateXCommand:function(matrixCommand,radians){\nmatrixCommand[5] = Math.cos(radians);\nmatrixCommand[6] = Math.sin(radians);\nmatrixCommand[9] = -Math.sin(radians);\nmatrixCommand[10] = Math.cos(radians);},\n\n\nreuseRotateYCommand:function(matrixCommand,amount){\nmatrixCommand[0] = Math.cos(amount);\nmatrixCommand[2] = -Math.sin(amount);\nmatrixCommand[8] = Math.sin(amount);\nmatrixCommand[10] = Math.cos(amount);},\n\n\n\nreuseRotateZCommand:function(matrixCommand,radians){\nmatrixCommand[0] = Math.cos(radians);\nmatrixCommand[1] = Math.sin(radians);\nmatrixCommand[4] = -Math.sin(radians);\nmatrixCommand[5] = Math.cos(radians);},\n\n\ncreateRotateZ:function(radians){\nvar mat=MatrixMath.createIdentityMatrix();\nMatrixMath.reuseRotateZCommand(mat,radians);\nreturn mat;},\n\n\nmultiplyInto:function(out,a,b){\nvar a00=a[0],a01=a[1],a02=a[2],a03=a[3],\na10=a[4],a11=a[5],a12=a[6],a13=a[7],\na20=a[8],a21=a[9],a22=a[10],a23=a[11],\na30=a[12],a31=a[13],a32=a[14],a33=a[15];\n\nvar b0=b[0],b1=b[1],b2=b[2],b3=b[3];\nout[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\nout[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\nout[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\nout[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\nb0 = b[4];b1 = b[5];b2 = b[6];b3 = b[7];\nout[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\nout[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\nout[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\nout[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\nb0 = b[8];b1 = b[9];b2 = b[10];b3 = b[11];\nout[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\nout[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\nout[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\nout[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\nb0 = b[12];b1 = b[13];b2 = b[14];b3 = b[15];\nout[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\nout[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\nout[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\nout[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;},\n\n\ndeterminant:function(matrix){var \n\nm00=\n\n\n\nmatrix[0];var m01=matrix[1];var m02=matrix[2];var m03=matrix[3];var m10=matrix[4];var m11=matrix[5];var m12=matrix[6];var m13=matrix[7];var m20=matrix[8];var m21=matrix[9];var m22=matrix[10];var m23=matrix[11];var m30=matrix[12];var m31=matrix[13];var m32=matrix[14];var m33=matrix[15];\nreturn (\nm03 * m12 * m21 * m30 - m02 * m13 * m21 * m30 - \nm03 * m11 * m22 * m30 + m01 * m13 * m22 * m30 + \nm02 * m11 * m23 * m30 - m01 * m12 * m23 * m30 - \nm03 * m12 * m20 * m31 + m02 * m13 * m20 * m31 + \nm03 * m10 * m22 * m31 - m00 * m13 * m22 * m31 - \nm02 * m10 * m23 * m31 + m00 * m12 * m23 * m31 + \nm03 * m11 * m20 * m32 - m01 * m13 * m20 * m32 - \nm03 * m10 * m21 * m32 + m00 * m13 * m21 * m32 + \nm01 * m10 * m23 * m32 - m00 * m11 * m23 * m32 - \nm02 * m11 * m20 * m33 + m01 * m12 * m20 * m33 + \nm02 * m10 * m21 * m33 - m00 * m12 * m21 * m33 - \nm01 * m10 * m22 * m33 + m00 * m11 * m22 * m33);},\n\n\n\n\n\n\n\n\n\n\ninverse:function(matrix){\nvar det=MatrixMath.determinant(matrix);\nif(!det){\nreturn matrix;}var \n\n\nm00=\n\n\n\nmatrix[0];var m01=matrix[1];var m02=matrix[2];var m03=matrix[3];var m10=matrix[4];var m11=matrix[5];var m12=matrix[6];var m13=matrix[7];var m20=matrix[8];var m21=matrix[9];var m22=matrix[10];var m23=matrix[11];var m30=matrix[12];var m31=matrix[13];var m32=matrix[14];var m33=matrix[15];\nreturn [\n(m12 * m23 * m31 - m13 * m22 * m31 + m13 * m21 * m32 - m11 * m23 * m32 - m12 * m21 * m33 + m11 * m22 * m33) / det,\n(m03 * m22 * m31 - m02 * m23 * m31 - m03 * m21 * m32 + m01 * m23 * m32 + m02 * m21 * m33 - m01 * m22 * m33) / det,\n(m02 * m13 * m31 - m03 * m12 * m31 + m03 * m11 * m32 - m01 * m13 * m32 - m02 * m11 * m33 + m01 * m12 * m33) / det,\n(m03 * m12 * m21 - m02 * m13 * m21 - m03 * m11 * m22 + m01 * m13 * m22 + m02 * m11 * m23 - m01 * m12 * m23) / det,\n(m13 * m22 * m30 - m12 * m23 * m30 - m13 * m20 * m32 + m10 * m23 * m32 + m12 * m20 * m33 - m10 * m22 * m33) / det,\n(m02 * m23 * m30 - m03 * m22 * m30 + m03 * m20 * m32 - m00 * m23 * m32 - m02 * m20 * m33 + m00 * m22 * m33) / det,\n(m03 * m12 * m30 - m02 * m13 * m30 - m03 * m10 * m32 + m00 * m13 * m32 + m02 * m10 * m33 - m00 * m12 * m33) / det,\n(m02 * m13 * m20 - m03 * m12 * m20 + m03 * m10 * m22 - m00 * m13 * m22 - m02 * m10 * m23 + m00 * m12 * m23) / det,\n(m11 * m23 * m30 - m13 * m21 * m30 + m13 * m20 * m31 - m10 * m23 * m31 - m11 * m20 * m33 + m10 * m21 * m33) / det,\n(m03 * m21 * m30 - m01 * m23 * m30 - m03 * m20 * m31 + m00 * m23 * m31 + m01 * m20 * m33 - m00 * m21 * m33) / det,\n(m01 * m13 * m30 - m03 * m11 * m30 + m03 * m10 * m31 - m00 * m13 * m31 - m01 * m10 * m33 + m00 * m11 * m33) / det,\n(m03 * m11 * m20 - m01 * m13 * m20 - m03 * m10 * m21 + m00 * m13 * m21 + m01 * m10 * m23 - m00 * m11 * m23) / det,\n(m12 * m21 * m30 - m11 * m22 * m30 - m12 * m20 * m31 + m10 * m22 * m31 + m11 * m20 * m32 - m10 * m21 * m32) / det,\n(m01 * m22 * m30 - m02 * m21 * m30 + m02 * m20 * m31 - m00 * m22 * m31 - m01 * m20 * m32 + m00 * m21 * m32) / det,\n(m02 * m11 * m30 - m01 * m12 * m30 - m02 * m10 * m31 + m00 * m12 * m31 + m01 * m10 * m32 - m00 * m11 * m32) / det,\n(m01 * m12 * m20 - m02 * m11 * m20 + m02 * m10 * m21 - m00 * m12 * m21 - m01 * m10 * m22 + m00 * m11 * m22) / det];},\n\n\n\n\n\n\ntranspose:function(m){\nreturn [\nm[0],m[4],m[8],m[12],\nm[1],m[5],m[9],m[13],\nm[2],m[6],m[10],m[14],\nm[3],m[7],m[11],m[15]];},\n\n\n\n\n\n\nmultiplyVectorByMatrix:function(\nv,\nm)\n{var \nvx=v[0];var vy=v[1];var vz=v[2];var vw=v[3];\nreturn [\nvx * m[0] + vy * m[4] + vz * m[8] + vw * m[12],\nvx * m[1] + vy * m[5] + vz * m[9] + vw * m[13],\nvx * m[2] + vy * m[6] + vz * m[10] + vw * m[14],\nvx * m[3] + vy * m[7] + vz * m[11] + vw * m[15]];},\n\n\n\n\n\n\nv3Length:function(a){\nreturn Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);},\n\n\n\n\n\nv3Normalize:function(\nvector,\nv3Length)\n{\nvar im=1 / (v3Length || MatrixMath.v3Length(vector));\nreturn [\nvector[0] * im,\nvector[1] * im,\nvector[2] * im];},\n\n\n\n\n\n\n\nv3Dot:function(a,b){\nreturn a[0] * b[0] + \na[1] * b[1] + \na[2] * b[2];},\n\n\n\n\n\n\nv3Combine:function(\na,\nb,\naScale,\nbScale)\n{\nreturn [\naScale * a[0] + bScale * b[0],\naScale * a[1] + bScale * b[1],\naScale * a[2] + bScale * b[2]];},\n\n\n\n\n\n\n\nv3Cross:function(a,b){\nreturn [\na[1] * b[2] - a[2] * b[1],\na[2] * b[0] - a[0] * b[2],\na[0] * b[1] - a[1] * b[0]];},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nquaternionToDegreesXYZ:function(q,matrix,row){var \nqx=q[0];var qy=q[1];var qz=q[2];var qw=q[3];\nvar qw2=qw * qw;\nvar qx2=qx * qx;\nvar qy2=qy * qy;\nvar qz2=qz * qz;\nvar test=qx * qy + qz * qw;\nvar unit=qw2 + qx2 + qy2 + qz2;\nvar conv=180 / Math.PI;\n\nif(test > 0.49999 * unit){\nreturn [0,2 * Math.atan2(qx,qw) * conv,90];}\n\nif(test < -0.49999 * unit){\nreturn [0,-2 * Math.atan2(qx,qw) * conv,-90];}\n\n\nreturn [\nMatrixMath.roundTo3Places(\nMath.atan2(2 * qx * qw - 2 * qy * qz,1 - 2 * qx2 - 2 * qz2) * conv),\n\nMatrixMath.roundTo3Places(\nMath.atan2(2 * qy * qw - 2 * qx * qz,1 - 2 * qy2 - 2 * qz2) * conv),\n\nMatrixMath.roundTo3Places(\nMath.asin(2 * qx * qy + 2 * qz * qw) * conv)];},\n\n\n\n\n\n\n\n\nroundTo3Places:function(n){\nvar arr=n.toString().split('e');\nreturn Math.round(arr[0] + 'e' + (arr[1]?+arr[1] - 3:3)) * 0.001;},\n\n\n\n\n\n\n\n\n\n\n\n\n\ndecomposeMatrix:function(transformMatrix){\n\ninvariant(\ntransformMatrix.length === 16,\n'Matrix decomposition needs a list of 3d matrix values, received %s',\ntransformMatrix);\n\n\n\nvar perspective=[];\nvar quaternion=[];\nvar scale=[];\nvar skew=[];\nvar translation=[];\n\n\n\nif(!transformMatrix[15]){\nreturn;}\n\nvar matrix=[];\nvar perspectiveMatrix=[];\nfor(var i=0;i < 4;i++) {\nmatrix.push([]);\nfor(var j=0;j < 4;j++) {\nvar value=transformMatrix[i * 4 + j] / transformMatrix[15];\nmatrix[i].push(value);\nperspectiveMatrix.push(j === 3?0:value);}}\n\n\nperspectiveMatrix[15] = 1;\n\n\nif(!MatrixMath.determinant(perspectiveMatrix)){\nreturn;}\n\n\n\nif(matrix[0][3] !== 0 || matrix[1][3] !== 0 || matrix[2][3] !== 0){\n\n\nvar rightHandSide=[\nmatrix[0][3],\nmatrix[1][3],\nmatrix[2][3],\nmatrix[3][3]];\n\n\n\n\nvar inversePerspectiveMatrix=MatrixMath.inverse3x3(\nperspectiveMatrix);\n\nvar transposedInversePerspectiveMatrix=MatrixMath.transpose4x4(\ninversePerspectiveMatrix);\n\nvar perspective=MatrixMath.multiplyVectorByMatrix(\nrightHandSide,\ntransposedInversePerspectiveMatrix);}else \n\n{\n\nperspective[0] = perspective[1] = perspective[2] = 0;\nperspective[3] = 1;}\n\n\n\nfor(var i=0;i < 3;i++) {\ntranslation[i] = matrix[3][i];}\n\n\n\n\nvar row=[];\nfor(i = 0;i < 3;i++) {\nrow[i] = [\nmatrix[i][0],\nmatrix[i][1],\nmatrix[i][2]];}\n\n\n\n\nscale[0] = MatrixMath.v3Length(row[0]);\nrow[0] = MatrixMath.v3Normalize(row[0],scale[0]);\n\n\nskew[0] = MatrixMath.v3Dot(row[0],row[1]);\nrow[1] = MatrixMath.v3Combine(row[1],row[0],1.0,-skew[0]);\n\n\nskew[0] = MatrixMath.v3Dot(row[0],row[1]);\nrow[1] = MatrixMath.v3Combine(row[1],row[0],1.0,-skew[0]);\n\n\nscale[1] = MatrixMath.v3Length(row[1]);\nrow[1] = MatrixMath.v3Normalize(row[1],scale[1]);\nskew[0] /= scale[1];\n\n\nskew[1] = MatrixMath.v3Dot(row[0],row[2]);\nrow[2] = MatrixMath.v3Combine(row[2],row[0],1.0,-skew[1]);\nskew[2] = MatrixMath.v3Dot(row[1],row[2]);\nrow[2] = MatrixMath.v3Combine(row[2],row[1],1.0,-skew[2]);\n\n\nscale[2] = MatrixMath.v3Length(row[2]);\nrow[2] = MatrixMath.v3Normalize(row[2],scale[2]);\nskew[1] /= scale[2];\nskew[2] /= scale[2];\n\n\n\n\nvar pdum3=MatrixMath.v3Cross(row[1],row[2]);\nif(MatrixMath.v3Dot(row[0],pdum3) < 0){\nfor(i = 0;i < 3;i++) {\nscale[i] *= -1;\nrow[i][0] *= -1;\nrow[i][1] *= -1;\nrow[i][2] *= -1;}}\n\n\n\n\nquaternion[0] = \n0.5 * Math.sqrt(Math.max(1 + row[0][0] - row[1][1] - row[2][2],0));\nquaternion[1] = \n0.5 * Math.sqrt(Math.max(1 - row[0][0] + row[1][1] - row[2][2],0));\nquaternion[2] = \n0.5 * Math.sqrt(Math.max(1 - row[0][0] - row[1][1] + row[2][2],0));\nquaternion[3] = \n0.5 * Math.sqrt(Math.max(1 + row[0][0] + row[1][1] + row[2][2],0));\n\nif(row[2][1] > row[1][2]){\nquaternion[0] = -quaternion[0];}\n\nif(row[0][2] > row[2][0]){\nquaternion[1] = -quaternion[1];}\n\nif(row[1][0] > row[0][1]){\nquaternion[2] = -quaternion[2];}\n\n\n\nvar rotationDegrees;\nif(\nquaternion[0] < 0.001 && quaternion[0] >= 0 && \nquaternion[1] < 0.001 && quaternion[1] >= 0)\n{\n\nrotationDegrees = [0,0,MatrixMath.roundTo3Places(\nMath.atan2(row[0][1],row[0][0]) * 180 / Math.PI)];}else \n\n{\nrotationDegrees = MatrixMath.quaternionToDegreesXYZ(quaternion,matrix,row);}\n\n\n\nreturn {\nrotationDegrees:rotationDegrees,\nperspective:perspective,\nquaternion:quaternion,\nscale:scale,\nskew:skew,\ntranslation:translation,\n\nrotate:rotationDegrees[2],\nscaleX:scale[0],\nscaleY:scale[1],\ntranslateX:translation[0],\ntranslateY:translation[1]};}};\n\n\n\n\n\nmodule.exports = MatrixMath;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule MatrixMath\n */\n/* eslint-disable space-infix-ops */\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Memory conservative (mutative) matrix math utilities. Uses \"command\"\n * matrices, which are reusable.\n */\nvar MatrixMath = {\n createIdentityMatrix: function() {\n return [\n 1,0,0,0,\n 0,1,0,0,\n 0,0,1,0,\n 0,0,0,1\n ];\n },\n\n createCopy: function(m) {\n return [\n m[0], m[1], m[2], m[3],\n m[4], m[5], m[6], m[7],\n m[8], m[9], m[10], m[11],\n m[12], m[13], m[14], m[15],\n ];\n },\n\n createTranslate2d: function(x, y) {\n var mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseTranslate2dCommand(mat, x, y);\n return mat;\n },\n\n reuseTranslate2dCommand: function(matrixCommand, x, y) {\n matrixCommand[12] = x;\n matrixCommand[13] = y;\n },\n\n reuseTranslate3dCommand: function(matrixCommand, x, y, z) {\n matrixCommand[12] = x;\n matrixCommand[13] = y;\n matrixCommand[14] = z;\n },\n\n createScale: function(factor) {\n var mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseScaleCommand(mat, factor);\n return mat;\n },\n\n reuseScaleCommand: function(matrixCommand, factor) {\n matrixCommand[0] = factor;\n matrixCommand[5] = factor;\n },\n\n reuseScale3dCommand: function(matrixCommand, x, y, z) {\n matrixCommand[0] = x;\n matrixCommand[5] = y;\n matrixCommand[10] = z;\n },\n\n reuseScaleXCommand(matrixCommand, factor) {\n matrixCommand[0] = factor;\n },\n\n reuseScaleYCommand(matrixCommand, factor) {\n matrixCommand[5] = factor;\n },\n\n reuseScaleZCommand(matrixCommand, factor) {\n matrixCommand[10] = factor;\n },\n\n reuseRotateXCommand: function(matrixCommand, radians) {\n matrixCommand[5] = Math.cos(radians);\n matrixCommand[6] = Math.sin(radians);\n matrixCommand[9] = -Math.sin(radians);\n matrixCommand[10] = Math.cos(radians);\n },\n\n reuseRotateYCommand: function(matrixCommand, amount) {\n matrixCommand[0] = Math.cos(amount);\n matrixCommand[2] = -Math.sin(amount);\n matrixCommand[8] = Math.sin(amount);\n matrixCommand[10] = Math.cos(amount);\n },\n\n // http://www.w3.org/TR/css3-transforms/#recomposing-to-a-2d-matrix\n reuseRotateZCommand: function(matrixCommand, radians) {\n matrixCommand[0] = Math.cos(radians);\n matrixCommand[1] = Math.sin(radians);\n matrixCommand[4] = -Math.sin(radians);\n matrixCommand[5] = Math.cos(radians);\n },\n\n createRotateZ: function(radians) {\n var mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseRotateZCommand(mat, radians);\n return mat;\n },\n\n multiplyInto: function(out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7];\n out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11];\n out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15];\n out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n },\n\n determinant(matrix: Array<number>): number {\n var [\n m00, m01, m02, m03,\n m10, m11, m12, m13,\n m20, m21, m22, m23,\n m30, m31, m32, m33\n ] = matrix;\n return (\n m03 * m12 * m21 * m30 - m02 * m13 * m21 * m30 -\n m03 * m11 * m22 * m30 + m01 * m13 * m22 * m30 +\n m02 * m11 * m23 * m30 - m01 * m12 * m23 * m30 -\n m03 * m12 * m20 * m31 + m02 * m13 * m20 * m31 +\n m03 * m10 * m22 * m31 - m00 * m13 * m22 * m31 -\n m02 * m10 * m23 * m31 + m00 * m12 * m23 * m31 +\n m03 * m11 * m20 * m32 - m01 * m13 * m20 * m32 -\n m03 * m10 * m21 * m32 + m00 * m13 * m21 * m32 +\n m01 * m10 * m23 * m32 - m00 * m11 * m23 * m32 -\n m02 * m11 * m20 * m33 + m01 * m12 * m20 * m33 +\n m02 * m10 * m21 * m33 - m00 * m12 * m21 * m33 -\n m01 * m10 * m22 * m33 + m00 * m11 * m22 * m33\n );\n },\n\n /**\n * Inverse of a matrix. Multiplying by the inverse is used in matrix math\n * instead of division.\n *\n * Formula from:\n * http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n */\n inverse(matrix: Array<number>): Array<number> {\n var det = MatrixMath.determinant(matrix);\n if (!det) {\n return matrix;\n }\n var [\n m00, m01, m02, m03,\n m10, m11, m12, m13,\n m20, m21, m22, m23,\n m30, m31, m32, m33\n ] = matrix;\n return [\n (m12*m23*m31 - m13*m22*m31 + m13*m21*m32 - m11*m23*m32 - m12*m21*m33 + m11*m22*m33) / det,\n (m03*m22*m31 - m02*m23*m31 - m03*m21*m32 + m01*m23*m32 + m02*m21*m33 - m01*m22*m33) / det,\n (m02*m13*m31 - m03*m12*m31 + m03*m11*m32 - m01*m13*m32 - m02*m11*m33 + m01*m12*m33) / det,\n (m03*m12*m21 - m02*m13*m21 - m03*m11*m22 + m01*m13*m22 + m02*m11*m23 - m01*m12*m23) / det,\n (m13*m22*m30 - m12*m23*m30 - m13*m20*m32 + m10*m23*m32 + m12*m20*m33 - m10*m22*m33) / det,\n (m02*m23*m30 - m03*m22*m30 + m03*m20*m32 - m00*m23*m32 - m02*m20*m33 + m00*m22*m33) / det,\n (m03*m12*m30 - m02*m13*m30 - m03*m10*m32 + m00*m13*m32 + m02*m10*m33 - m00*m12*m33) / det,\n (m02*m13*m20 - m03*m12*m20 + m03*m10*m22 - m00*m13*m22 - m02*m10*m23 + m00*m12*m23) / det,\n (m11*m23*m30 - m13*m21*m30 + m13*m20*m31 - m10*m23*m31 - m11*m20*m33 + m10*m21*m33) / det,\n (m03*m21*m30 - m01*m23*m30 - m03*m20*m31 + m00*m23*m31 + m01*m20*m33 - m00*m21*m33) / det,\n (m01*m13*m30 - m03*m11*m30 + m03*m10*m31 - m00*m13*m31 - m01*m10*m33 + m00*m11*m33) / det,\n (m03*m11*m20 - m01*m13*m20 - m03*m10*m21 + m00*m13*m21 + m01*m10*m23 - m00*m11*m23) / det,\n (m12*m21*m30 - m11*m22*m30 - m12*m20*m31 + m10*m22*m31 + m11*m20*m32 - m10*m21*m32) / det,\n (m01*m22*m30 - m02*m21*m30 + m02*m20*m31 - m00*m22*m31 - m01*m20*m32 + m00*m21*m32) / det,\n (m02*m11*m30 - m01*m12*m30 - m02*m10*m31 + m00*m12*m31 + m01*m10*m32 - m00*m11*m32) / det,\n (m01*m12*m20 - m02*m11*m20 + m02*m10*m21 - m00*m12*m21 - m01*m10*m22 + m00*m11*m22) / det\n ];\n },\n\n /**\n * Turns columns into rows and rows into columns.\n */\n transpose(m: Array<number>): Array<number> {\n return [\n m[0], m[4], m[8], m[12],\n m[1], m[5], m[9], m[13],\n m[2], m[6], m[10], m[14],\n m[3], m[7], m[11], m[15]\n ];\n },\n\n /**\n * Based on: http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c\n */\n multiplyVectorByMatrix(\n v: Array<number>,\n m: Array<number>\n ): Array<number> {\n var [vx, vy, vz, vw] = v;\n return [\n vx * m[0] + vy * m[4] + vz * m[8] + vw * m[12],\n vx * m[1] + vy * m[5] + vz * m[9] + vw * m[13],\n vx * m[2] + vy * m[6] + vz * m[10] + vw * m[14],\n vx * m[3] + vy * m[7] + vz * m[11] + vw * m[15]\n ];\n },\n\n /**\n * From: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Length(a: Array<number>): number {\n return Math.sqrt(a[0]*a[0] + a[1]*a[1] + a[2]*a[2]);\n },\n\n /**\n * Based on: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Normalize(\n vector: Array<number>,\n v3Length: number\n ): Array<number> {\n var im = 1 / (v3Length || MatrixMath.v3Length(vector));\n return [\n vector[0] * im,\n vector[1] * im,\n vector[2] * im\n ];\n },\n\n /**\n * The dot product of a and b, two 3-element vectors.\n * From: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Dot(a, b) {\n return a[0] * b[0] +\n a[1] * b[1] +\n a[2] * b[2];\n },\n\n /**\n * From:\n * http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n */\n v3Combine(\n a: Array<number>,\n b: Array<number>,\n aScale: number,\n bScale: number\n ): Array<number> {\n return [\n aScale * a[0] + bScale * b[0],\n aScale * a[1] + bScale * b[1],\n aScale * a[2] + bScale * b[2]\n ];\n },\n\n /**\n * From:\n * http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n */\n v3Cross(a: Array<number>, b: Array<number>): Array<number> {\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0]\n ];\n },\n\n /**\n * Based on:\n * http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/\n * and:\n * http://quat.zachbennett.com/\n *\n * Note that this rounds degrees to the thousandth of a degree, due to\n * floating point errors in the creation of the quaternion.\n *\n * Also note that this expects the qw value to be last, not first.\n *\n * Also, when researching this, remember that:\n * yaw === heading === z-axis\n * pitch === elevation/attitude === y-axis\n * roll === bank === x-axis\n */\n quaternionToDegreesXYZ(q: Array<number>, matrix, row): Array<number> {\n var [qx, qy, qz, qw] = q;\n var qw2 = qw * qw;\n var qx2 = qx * qx;\n var qy2 = qy * qy;\n var qz2 = qz * qz;\n var test = qx * qy + qz * qw;\n var unit = qw2 + qx2 + qy2 + qz2;\n var conv = 180 / Math.PI;\n\n if (test > 0.49999 * unit) {\n return [0, 2 * Math.atan2(qx, qw) * conv, 90];\n }\n if (test < -0.49999 * unit) {\n return [0, -2 * Math.atan2(qx, qw) * conv, -90];\n }\n\n return [\n MatrixMath.roundTo3Places(\n Math.atan2(2*qx*qw-2*qy*qz,1-2*qx2-2*qz2) * conv\n ),\n MatrixMath.roundTo3Places(\n Math.atan2(2*qy*qw-2*qx*qz,1-2*qy2-2*qz2) * conv\n ),\n MatrixMath.roundTo3Places(\n Math.asin(2*qx*qy+2*qz*qw) * conv\n )\n ];\n },\n\n /**\n * Based on:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n */\n roundTo3Places(n: number): number {\n var arr = n.toString().split('e');\n return Math.round(arr[0] + 'e' + (arr[1] ? (+arr[1] - 3) : 3)) * 0.001;\n },\n\n /**\n * Decompose a matrix into separate transform values, for use on platforms\n * where applying a precomposed matrix is not possible, and transforms are\n * applied in an inflexible ordering (e.g. Android).\n *\n * Implementation based on\n * http://www.w3.org/TR/css3-transforms/#decomposing-a-2d-matrix\n * http://www.w3.org/TR/css3-transforms/#decomposing-a-3d-matrix\n * which was based on\n * http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c\n */\n decomposeMatrix(transformMatrix: Array<number>): ?Object {\n\n invariant(\n transformMatrix.length === 16,\n 'Matrix decomposition needs a list of 3d matrix values, received %s',\n transformMatrix\n );\n\n // output values\n var perspective = [];\n var quaternion = [];\n var scale = [];\n var skew = [];\n var translation = [];\n\n // create normalized, 2d array matrix\n // and normalized 1d array perspectiveMatrix with redefined 4th column\n if (!transformMatrix[15]) {\n return;\n }\n var matrix = [];\n var perspectiveMatrix = [];\n for (var i = 0; i < 4; i++) {\n matrix.push([]);\n for (var j = 0; j < 4; j++) {\n var value = transformMatrix[(i * 4) + j] / transformMatrix[15];\n matrix[i].push(value);\n perspectiveMatrix.push(j === 3 ? 0 : value);\n }\n }\n perspectiveMatrix[15] = 1;\n\n // test for singularity of upper 3x3 part of the perspective matrix\n if (!MatrixMath.determinant(perspectiveMatrix)) {\n return;\n }\n\n // isolate perspective\n if (matrix[0][3] !== 0 || matrix[1][3] !== 0 || matrix[2][3] !== 0) {\n // rightHandSide is the right hand side of the equation.\n // rightHandSide is a vector, or point in 3d space relative to the origin.\n var rightHandSide = [\n matrix[0][3],\n matrix[1][3],\n matrix[2][3],\n matrix[3][3]\n ];\n\n // Solve the equation by inverting perspectiveMatrix and multiplying\n // rightHandSide by the inverse.\n var inversePerspectiveMatrix = MatrixMath.inverse3x3(\n perspectiveMatrix\n );\n var transposedInversePerspectiveMatrix = MatrixMath.transpose4x4(\n inversePerspectiveMatrix\n );\n var perspective = MatrixMath.multiplyVectorByMatrix(\n rightHandSide,\n transposedInversePerspectiveMatrix\n );\n } else {\n // no perspective\n perspective[0] = perspective[1] = perspective[2] = 0;\n perspective[3] = 1;\n }\n\n // translation is simple\n for (var i = 0; i < 3; i++) {\n translation[i] = matrix[3][i];\n }\n\n // Now get scale and shear.\n // 'row' is a 3 element array of 3 component vectors\n var row = [];\n for (i = 0; i < 3; i++) {\n row[i] = [\n matrix[i][0],\n matrix[i][1],\n matrix[i][2]\n ];\n }\n\n // Compute X scale factor and normalize first row.\n scale[0] = MatrixMath.v3Length(row[0]);\n row[0] = MatrixMath.v3Normalize(row[0], scale[0]);\n\n // Compute XY shear factor and make 2nd row orthogonal to 1st.\n skew[0] = MatrixMath.v3Dot(row[0], row[1]);\n row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);\n\n // Compute XY shear factor and make 2nd row orthogonal to 1st.\n skew[0] = MatrixMath.v3Dot(row[0], row[1]);\n row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);\n\n // Now, compute Y scale and normalize 2nd row.\n scale[1] = MatrixMath.v3Length(row[1]);\n row[1] = MatrixMath.v3Normalize(row[1], scale[1]);\n skew[0] /= scale[1];\n\n // Compute XZ and YZ shears, orthogonalize 3rd row\n skew[1] = MatrixMath.v3Dot(row[0], row[2]);\n row[2] = MatrixMath.v3Combine(row[2], row[0], 1.0, -skew[1]);\n skew[2] = MatrixMath.v3Dot(row[1], row[2]);\n row[2] = MatrixMath.v3Combine(row[2], row[1], 1.0, -skew[2]);\n\n // Next, get Z scale and normalize 3rd row.\n scale[2] = MatrixMath.v3Length(row[2]);\n row[2] = MatrixMath.v3Normalize(row[2], scale[2]);\n skew[1] /= scale[2];\n skew[2] /= scale[2];\n\n // At this point, the matrix (in rows) is orthonormal.\n // Check for a coordinate system flip. If the determinant\n // is -1, then negate the matrix and the scaling factors.\n var pdum3 = MatrixMath.v3Cross(row[1], row[2]);\n if (MatrixMath.v3Dot(row[0], pdum3) < 0) {\n for (i = 0; i < 3; i++) {\n scale[i] *= -1;\n row[i][0] *= -1;\n row[i][1] *= -1;\n row[i][2] *= -1;\n }\n }\n\n // Now, get the rotations out\n quaternion[0] =\n 0.5 * Math.sqrt(Math.max(1 + row[0][0] - row[1][1] - row[2][2], 0));\n quaternion[1] =\n 0.5 * Math.sqrt(Math.max(1 - row[0][0] + row[1][1] - row[2][2], 0));\n quaternion[2] =\n 0.5 * Math.sqrt(Math.max(1 - row[0][0] - row[1][1] + row[2][2], 0));\n quaternion[3] =\n 0.5 * Math.sqrt(Math.max(1 + row[0][0] + row[1][1] + row[2][2], 0));\n\n if (row[2][1] > row[1][2]) {\n quaternion[0] = -quaternion[0];\n }\n if (row[0][2] > row[2][0]) {\n quaternion[1] = -quaternion[1];\n }\n if (row[1][0] > row[0][1]) {\n quaternion[2] = -quaternion[2];\n }\n\n // correct for occasional, weird Euler synonyms for 2d rotation\n var rotationDegrees;\n if (\n quaternion[0] < 0.001 && quaternion[0] >= 0 &&\n quaternion[1] < 0.001 && quaternion[1] >= 0\n ) {\n // this is a 2d rotation on the z-axis\n rotationDegrees = [0, 0, MatrixMath.roundTo3Places(\n Math.atan2(row[0][1], row[0][0]) * 180 / Math.PI\n )];\n } else {\n rotationDegrees = MatrixMath.quaternionToDegreesXYZ(quaternion, matrix, row);\n }\n\n // expose both base data and convenience names\n return {\n rotationDegrees,\n perspective,\n quaternion,\n scale,\n skew,\n translation,\n\n rotate: rotationDegrees[2],\n scaleX: scale[0],\n scaleY: scale[1],\n translateX: translation[0],\n translateY: translation[1],\n };\n },\n\n};\n\nmodule.exports = MatrixMath;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/MatrixMath.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction deepFreezeAndThrowOnMutationInDev(object){\nif(__DEV__){\nif(typeof object !== 'object' || \nobject === null || \nObject.isFrozen(object) || \nObject.isSealed(object)){\nreturn;}\n\n\nfor(var key in object) {\nif(object.hasOwnProperty(key)){\nobject.__defineGetter__(key,identity.bind(null,object[key]));\nobject.__defineSetter__(key,throwOnImmutableMutation.bind(null,key));\ndeepFreezeAndThrowOnMutationInDev(object[key]);}}\n\n\nObject.freeze(object);\nObject.seal(object);}}\n\n\n\nfunction throwOnImmutableMutation(key,value){\nthrow Error(\n'You attempted to set the key `' + key + '` with the value `' + \nJSON.stringify(value) + '` on an object that is meant to be immutable ' + \n'and has been frozen.');}\n\n\n\nfunction identity(value){\nreturn value;}\n\n\nmodule.exports = deepFreezeAndThrowOnMutationInDev;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule deepFreezeAndThrowOnMutationInDev\n * @flow\n */\n\n'use strict';\n\n/**\n * If your application is accepting different values for the same field over\n * time and is doing a diff on them, you can either (1) create a copy or\n * (2) ensure that those values are not mutated behind two passes.\n * This function helps you with (2) by freezing the object and throwing if\n * the user subsequently modifies the value.\n *\n * There are two caveats with this function:\n * - If the call site is not in strict mode, it will only throw when\n * mutating existing fields, adding a new one\n * will unfortunately fail silently :(\n * - If the object is already frozen or sealed, it will not continue the\n * deep traversal and will leave leaf nodes unfrozen.\n *\n * Freezing the object and adding the throw mechanism is expensive and will\n * only be used in DEV.\n */\nfunction deepFreezeAndThrowOnMutationInDev(object: Object) {\n if (__DEV__) {\n if (typeof object !== 'object' ||\n object === null ||\n Object.isFrozen(object) ||\n Object.isSealed(object)) {\n return;\n }\n\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n object.__defineGetter__(key, identity.bind(null, object[key]));\n object.__defineSetter__(key, throwOnImmutableMutation.bind(null, key));\n deepFreezeAndThrowOnMutationInDev(object[key]);\n }\n }\n Object.freeze(object);\n Object.seal(object);\n }\n}\n\nfunction throwOnImmutableMutation(key, value) {\n throw Error(\n 'You attempted to set the key `' + key + '` with the value `' +\n JSON.stringify(value) + '` on an object that is meant to be immutable ' +\n 'and has been frozen.'\n );\n}\n\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = deepFreezeAndThrowOnMutationInDev;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPluginHub=require('EventPluginHub');\nvar ReactEventEmitterMixin=require('ReactEventEmitterMixin');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar NodeHandle=require('NodeHandle');\nvar EventConstants=require('EventConstants');\n\nvar merge=require('merge');\nvar warning=require('warning');\n\nvar topLevelTypes=EventConstants.topLevelTypes;\n\n\n\n\n\n\n\nvar EMPTY_NATIVE_EVENT={};\n\n\n\n\n\n\n\n\nvar touchSubsequence=function(touches,indices){\nvar ret=[];\nfor(var i=0;i < indices.length;i++) {\nret.push(touches[indices[i]]);}\n\nreturn ret;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar removeTouchesAtIndices=function(\ntouches,\nindices)\n{\nvar rippedOut=[];\n\n\nvar temp=touches;\nfor(var i=0;i < indices.length;i++) {\nvar index=indices[i];\nrippedOut.push(touches[index]);\ntemp[index] = null;}\n\nvar fillAt=0;\nfor(var j=0;j < temp.length;j++) {\nvar cur=temp[j];\nif(cur !== null){\ntemp[fillAt++] = cur;}}\n\n\ntemp.length = fillAt;\nreturn rippedOut;};\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeEventEmitter=merge(ReactEventEmitterMixin,{\n\nregistrationNames:EventPluginHub.registrationNameModules,\n\nputListener:EventPluginHub.putListener,\n\ngetListener:EventPluginHub.getListener,\n\ndeleteListener:EventPluginHub.deleteListener,\n\ndeleteAllListeners:EventPluginHub.deleteAllListeners,\n\n\n\n\n\n\n\n\n\n\n\n_receiveRootNodeIDEvent:function(\nrootNodeID,\ntopLevelType,\nnativeEventParam)\n{\nvar nativeEvent=nativeEventParam || EMPTY_NATIVE_EVENT;\nReactNativeEventEmitter.handleTopLevel(\ntopLevelType,\nrootNodeID,\nrootNodeID,\nnativeEvent);},\n\n\n\n\n\n\n\n\n\n\nreceiveEvent:function(\ntag,\ntopLevelType,\nnativeEventParam)\n{\nvar rootNodeID=ReactNativeTagHandles.tagToRootNodeID[tag];\nReactNativeEventEmitter._receiveRootNodeIDEvent(\nrootNodeID,\ntopLevelType,\nnativeEventParam);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nreceiveTouches:function(\neventTopLevelType,\ntouches,\nchangedIndices)\n{\nvar changedTouches=\neventTopLevelType === topLevelTypes.topTouchEnd || \neventTopLevelType === topLevelTypes.topTouchCancel?\nremoveTouchesAtIndices(touches,changedIndices):\ntouchSubsequence(touches,changedIndices);\n\nfor(var jj=0;jj < changedTouches.length;jj++) {\nvar touch=changedTouches[jj];\n\n\ntouch.changedTouches = changedTouches;\ntouch.touches = touches;\nvar nativeEvent=touch;\nvar rootNodeID=null;\nvar target=nativeEvent.target;\nif(target !== null && target !== undefined){\nif(target < ReactNativeTagHandles.tagsStartAt){\nif(__DEV__){\nwarning(\nfalse,\n'A view is reporting that a touch occured on tag zero.');}}else \n\n\n{\nrootNodeID = NodeHandle.getRootNodeID(target);}}\n\n\nReactNativeEventEmitter._receiveRootNodeIDEvent(\nrootNodeID,\neventTopLevelType,\nnativeEvent);}}});\n\n\n\n\n\nmodule.exports = ReactNativeEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeEventEmitter\n * @flow\n */\n'use strict';\n\nvar EventPluginHub = require('EventPluginHub');\nvar ReactEventEmitterMixin = require('ReactEventEmitterMixin');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar NodeHandle = require('NodeHandle');\nvar EventConstants = require('EventConstants');\n\nvar merge = require('merge');\nvar warning = require('warning');\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\n/**\n * Version of `ReactBrowserEventEmitter` that works on the receiving side of a\n * serialized worker boundary.\n */\n\n// Shared default empty native event - conserve memory.\nvar EMPTY_NATIVE_EVENT = {};\n\n/**\n * Selects a subsequence of `Touch`es, without destroying `touches`.\n *\n * @param {Array<Touch>} touches Deserialized touch objects.\n * @param {Array<number>} indices Indices by which to pull subsequence.\n * @return {Array<Touch>} Subsequence of touch objects.\n */\nvar touchSubsequence = function(touches, indices) {\n var ret = [];\n for (var i = 0; i < indices.length; i++) {\n ret.push(touches[indices[i]]);\n }\n return ret;\n};\n\n/**\n * TODO: Pool all of this.\n *\n * Destroys `touches` by removing touch objects at indices `indices`. This is\n * to maintain compatibility with W3C touch \"end\" events, where the active\n * touches don't include the set that has just been \"ended\".\n *\n * @param {Array<Touch>} touches Deserialized touch objects.\n * @param {Array<number>} indices Indices to remove from `touches`.\n * @return {Array<Touch>} Subsequence of removed touch objects.\n */\nvar removeTouchesAtIndices = function(\n touches: Array<Object>,\n indices: Array<number>\n): Array<Object> {\n var rippedOut = [];\n // use an unsafe downcast to alias to nullable elements,\n // so we can delete and then compact.\n var temp: Array<?Object> = (touches: Array<any>);\n for (var i = 0; i < indices.length; i++) {\n var index = indices[i];\n rippedOut.push(touches[index]);\n temp[index] = null;\n }\n var fillAt = 0;\n for (var j = 0; j < temp.length; j++) {\n var cur = temp[j];\n if (cur !== null) {\n temp[fillAt++] = cur;\n }\n }\n temp.length = fillAt;\n return rippedOut;\n};\n\n/**\n * `ReactNativeEventEmitter` is used to attach top-level event listeners. For example:\n *\n * ReactNativeEventEmitter.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactNativeEventEmitter = merge(ReactEventEmitterMixin, {\n\n registrationNames: EventPluginHub.registrationNameModules,\n\n putListener: EventPluginHub.putListener,\n\n getListener: EventPluginHub.getListener,\n\n deleteListener: EventPluginHub.deleteListener,\n\n deleteAllListeners: EventPluginHub.deleteAllListeners,\n\n /**\n * Internal version of `receiveEvent` in terms of normalized (non-tag)\n * `rootNodeID`.\n *\n * @see receiveEvent.\n *\n * @param {rootNodeID} rootNodeID React root node ID that event occured on.\n * @param {TopLevelType} topLevelType Top level type of event.\n * @param {object} nativeEventParam Object passed from native.\n */\n _receiveRootNodeIDEvent: function(\n rootNodeID: ?string,\n topLevelType: string,\n nativeEventParam: Object\n ) {\n var nativeEvent = nativeEventParam || EMPTY_NATIVE_EVENT;\n ReactNativeEventEmitter.handleTopLevel(\n topLevelType,\n rootNodeID,\n rootNodeID,\n nativeEvent\n );\n },\n\n /**\n * Publically exposed method on module for native objc to invoke when a top\n * level event is extracted.\n * @param {rootNodeID} rootNodeID React root node ID that event occured on.\n * @param {TopLevelType} topLevelType Top level type of event.\n * @param {object} nativeEventParam Object passed from native.\n */\n receiveEvent: function(\n tag: number,\n topLevelType: string,\n nativeEventParam: Object\n ) {\n var rootNodeID = ReactNativeTagHandles.tagToRootNodeID[tag];\n ReactNativeEventEmitter._receiveRootNodeIDEvent(\n rootNodeID,\n topLevelType,\n nativeEventParam\n );\n },\n\n /**\n * Simple multi-wrapper around `receiveEvent` that is intended to receive an\n * efficient representation of `Touch` objects, and other information that\n * can be used to construct W3C compliant `Event` and `Touch` lists.\n *\n * This may create dispatch behavior that differs than web touch handling. We\n * loop through each of the changed touches and receive it as a single event.\n * So two `touchStart`/`touchMove`s that occur simultaneously are received as\n * two separate touch event dispatches - when they arguably should be one.\n *\n * This implementation reuses the `Touch` objects themselves as the `Event`s\n * since we dispatch an event for each touch (though that might not be spec\n * compliant). The main purpose of reusing them is to save allocations.\n *\n * TODO: Dispatch multiple changed touches in one event. The bubble path\n * could be the first common ancestor of all the `changedTouches`.\n *\n * One difference between this behavior and W3C spec: cancelled touches will\n * not appear in `.touches`, or in any future `.touches`, though they may\n * still be \"actively touching the surface\".\n *\n * Web desktop polyfills only need to construct a fake touch event with\n * identifier 0, also abandoning traditional click handlers.\n */\n receiveTouches: function(\n eventTopLevelType: string,\n touches: Array<Object>,\n changedIndices: Array<number>\n ) {\n var changedTouches =\n eventTopLevelType === topLevelTypes.topTouchEnd ||\n eventTopLevelType === topLevelTypes.topTouchCancel ?\n removeTouchesAtIndices(touches, changedIndices) :\n touchSubsequence(touches, changedIndices);\n\n for (var jj = 0; jj < changedTouches.length; jj++) {\n var touch = changedTouches[jj];\n // Touch objects can fullfill the role of `DOM` `Event` objects if we set\n // the `changedTouches`/`touches`. This saves allocations.\n touch.changedTouches = changedTouches;\n touch.touches = touches;\n var nativeEvent = touch;\n var rootNodeID = null;\n var target = nativeEvent.target;\n if (target !== null && target !== undefined) {\n if (target < ReactNativeTagHandles.tagsStartAt) {\n if (__DEV__) {\n warning(\n false,\n 'A view is reporting that a touch occured on tag zero.'\n );\n }\n } else {\n rootNodeID = NodeHandle.getRootNodeID(target);\n }\n }\n ReactNativeEventEmitter._receiveRootNodeIDEvent(\n rootNodeID,\n eventTopLevelType,\n nativeEvent\n );\n }\n }\n});\n\nmodule.exports = ReactNativeEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactEventEmitterMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPluginHub=require('EventPluginHub');\n\nfunction runEventQueueInBatch(events){\nEventPluginHub.enqueueEvents(events);\nEventPluginHub.processEventQueue();}\n\n\nvar ReactEventEmitterMixin={\n\n\n\n\n\n\n\n\n\n\nhandleTopLevel:function(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent){\nvar events=EventPluginHub.extractEvents(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent);\n\n\nrunEventQueueInBatch(events);}};\n\n\n\nmodule.exports = ReactEventEmitterMixin;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEventEmitterMixin\n */\n\n'use strict';\n\nvar EventPluginHub = require('EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue();\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native environment event.\n */\n handleTopLevel: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n var events = EventPluginHub.extractEvents(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n );\n\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactEventEmitterMixin.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeStyleAttributes.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ImageStylePropTypes=require('ImageStylePropTypes');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar keyMirror=require('keyMirror');\nvar matricesDiffer=require('matricesDiffer');\nvar sizesDiffer=require('sizesDiffer');\n\nvar ReactNativeStyleAttributes=_extends({},\nkeyMirror(ViewStylePropTypes),\nkeyMirror(TextStylePropTypes),\nkeyMirror(ImageStylePropTypes));\n\n\nReactNativeStyleAttributes.transformMatrix = {diff:matricesDiffer};\nReactNativeStyleAttributes.shadowOffset = {diff:sizesDiffer};\n\n\nReactNativeStyleAttributes.decomposedMatrix = 'decomposedMatrix';\n\nmodule.exports = ReactNativeStyleAttributes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeStyleAttributes\n * @flow\n */\n\n'use strict';\n\nvar ImageStylePropTypes = require('ImageStylePropTypes');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar keyMirror = require('keyMirror');\nvar matricesDiffer = require('matricesDiffer');\nvar sizesDiffer = require('sizesDiffer');\n\nvar ReactNativeStyleAttributes = {\n ...keyMirror(ViewStylePropTypes),\n ...keyMirror(TextStylePropTypes),\n ...keyMirror(ImageStylePropTypes),\n};\n\nReactNativeStyleAttributes.transformMatrix = { diff: matricesDiffer };\nReactNativeStyleAttributes.shadowOffset = { diff: sizesDiffer };\n\n// Do not rely on this attribute.\nReactNativeStyleAttributes.decomposedMatrix = 'decomposedMatrix';\n\nmodule.exports = ReactNativeStyleAttributes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeStyleAttributes.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImageStylePropTypes.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar ImageResizeMode=require('ImageResizeMode');\nvar LayoutPropTypes=require('LayoutPropTypes');\nvar ReactPropTypes=require('ReactPropTypes');\nvar TransformPropTypes=require('TransformPropTypes');\n\nvar ImageStylePropTypes=_extends({},\nLayoutPropTypes,\nTransformPropTypes,{\nresizeMode:ReactPropTypes.oneOf(Object.keys(ImageResizeMode)),\nbackgroundColor:ReactPropTypes.string,\nborderColor:ReactPropTypes.string,\nborderWidth:ReactPropTypes.number,\nborderRadius:ReactPropTypes.number,\n\n\n\ntintColor:ReactPropTypes.string,\nopacity:ReactPropTypes.number});\n\n\nmodule.exports = ImageStylePropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ImageStylePropTypes\n * @flow\n */\n'use strict';\n\nvar ImageResizeMode = require('ImageResizeMode');\nvar LayoutPropTypes = require('LayoutPropTypes');\nvar ReactPropTypes = require('ReactPropTypes');\nvar TransformPropTypes = require('TransformPropTypes');\n\nvar ImageStylePropTypes = {\n ...LayoutPropTypes,\n ...TransformPropTypes,\n resizeMode: ReactPropTypes.oneOf(Object.keys(ImageResizeMode)),\n backgroundColor: ReactPropTypes.string,\n borderColor: ReactPropTypes.string,\n borderWidth: ReactPropTypes.number,\n borderRadius: ReactPropTypes.number,\n\n // iOS-Specific style to \"tint\" an image.\n // It changes the color of all the non-transparent pixels to the tintColor\n tintColor: ReactPropTypes.string,\n opacity: ReactPropTypes.number,\n};\n\nmodule.exports = ImageStylePropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImageStylePropTypes.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImageResizeMode.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=require('keyMirror');\n\n\n\n\n\nvar ImageResizeMode=keyMirror({\n\n\n\n\ncontain:null,\n\n\n\n\ncover:null,\n\n\n\n\n\nstretch:null});\n\n\nmodule.exports = ImageResizeMode;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ImageResizeMode\n * @flow\n */\n'use strict';\n\nvar keyMirror = require('keyMirror');\n\n/**\n * ImageResizeMode - Enum for different image resizing modes, set via\n * `resizeMode` style property on `<Image>` components.\n */\nvar ImageResizeMode = keyMirror({\n /**\n * contain - The image will be resized such that it will be completely\n * visible, contained within the frame of the View.\n */\n contain: null,\n /**\n * cover - The image will be resized such that the entire area of the view\n * is covered by the image, potentially clipping parts of the image.\n */\n cover: null,\n /**\n * stretch - The image will be stretched to fill the entire frame of the\n * view without clipping. This may change the aspect ratio of the image,\n * distoring it.\n */\n stretch: null,\n});\n\nmodule.exports = ImageResizeMode;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImageResizeMode.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/LayoutPropTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\n\n\n\n\n\n\nvar LayoutPropTypes={\nwidth:ReactPropTypes.number,\nheight:ReactPropTypes.number,\ntop:ReactPropTypes.number,\nleft:ReactPropTypes.number,\nright:ReactPropTypes.number,\nbottom:ReactPropTypes.number,\nmargin:ReactPropTypes.number,\nmarginVertical:ReactPropTypes.number,\nmarginHorizontal:ReactPropTypes.number,\nmarginTop:ReactPropTypes.number,\nmarginBottom:ReactPropTypes.number,\nmarginLeft:ReactPropTypes.number,\nmarginRight:ReactPropTypes.number,\npadding:ReactPropTypes.number,\npaddingVertical:ReactPropTypes.number,\npaddingHorizontal:ReactPropTypes.number,\npaddingTop:ReactPropTypes.number,\npaddingBottom:ReactPropTypes.number,\npaddingLeft:ReactPropTypes.number,\npaddingRight:ReactPropTypes.number,\nborderWidth:ReactPropTypes.number,\nborderTopWidth:ReactPropTypes.number,\nborderRightWidth:ReactPropTypes.number,\nborderBottomWidth:ReactPropTypes.number,\nborderLeftWidth:ReactPropTypes.number,\n\nposition:ReactPropTypes.oneOf([\n'absolute',\n'relative']),\n\n\n\nflexDirection:ReactPropTypes.oneOf([\n'row',\n'column']),\n\n\n\nflexWrap:ReactPropTypes.oneOf([\n'wrap',\n'nowrap']),\n\n\n\n\njustifyContent:ReactPropTypes.oneOf([\n'flex-start',\n'flex-end',\n'center',\n'space-between',\n'space-around']),\n\n\n\n\nalignItems:ReactPropTypes.oneOf([\n'flex-start',\n'flex-end',\n'center',\n'stretch']),\n\n\n\n\nalignSelf:ReactPropTypes.oneOf([\n'auto',\n'flex-start',\n'flex-end',\n'center',\n'stretch']),\n\n\n\nflex:ReactPropTypes.number};\n\n\nmodule.exports = LayoutPropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LayoutPropTypes\n * @flow\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\n\n/**\n * These properties are a subset of our styles that are consumed by the layout\n * algorithm and affect the positioning and sizing of views.\n */\n\nvar LayoutPropTypes = {\n width: ReactPropTypes.number,\n height: ReactPropTypes.number,\n top: ReactPropTypes.number,\n left: ReactPropTypes.number,\n right: ReactPropTypes.number,\n bottom: ReactPropTypes.number,\n margin: ReactPropTypes.number,\n marginVertical: ReactPropTypes.number,\n marginHorizontal: ReactPropTypes.number,\n marginTop: ReactPropTypes.number,\n marginBottom: ReactPropTypes.number,\n marginLeft: ReactPropTypes.number,\n marginRight: ReactPropTypes.number,\n padding: ReactPropTypes.number,\n paddingVertical: ReactPropTypes.number,\n paddingHorizontal: ReactPropTypes.number,\n paddingTop: ReactPropTypes.number,\n paddingBottom: ReactPropTypes.number,\n paddingLeft: ReactPropTypes.number,\n paddingRight: ReactPropTypes.number,\n borderWidth: ReactPropTypes.number,\n borderTopWidth: ReactPropTypes.number,\n borderRightWidth: ReactPropTypes.number,\n borderBottomWidth: ReactPropTypes.number,\n borderLeftWidth: ReactPropTypes.number,\n\n position: ReactPropTypes.oneOf([\n 'absolute',\n 'relative'\n ]),\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction\n flexDirection: ReactPropTypes.oneOf([\n 'row',\n 'column'\n ]),\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap\n flexWrap: ReactPropTypes.oneOf([\n 'wrap',\n 'nowrap'\n ]),\n\n // How to align children in the main direction\n // https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content\n justifyContent: ReactPropTypes.oneOf([\n 'flex-start',\n 'flex-end',\n 'center',\n 'space-between',\n 'space-around'\n ]),\n\n // How to align children in the cross direction\n // https://developer.mozilla.org/en-US/docs/Web/CSS/align-items\n alignItems: ReactPropTypes.oneOf([\n 'flex-start',\n 'flex-end',\n 'center',\n 'stretch'\n ]),\n\n // How to align the element in the cross direction\n // https://developer.mozilla.org/en-US/docs/Web/CSS/align-items\n alignSelf: ReactPropTypes.oneOf([\n 'auto',\n 'flex-start',\n 'flex-end',\n 'center',\n 'stretch'\n ]),\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n flex: ReactPropTypes.number,\n};\n\nmodule.exports = LayoutPropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/LayoutPropTypes.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactFragment=require('ReactFragment');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\n\nvar emptyFunction=require('emptyFunction');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ANONYMOUS='<<anonymous>>';\n\nvar elementTypeChecker=createElementTypeChecker();\nvar nodeTypeChecker=createNodeChecker();\n\nvar ReactPropTypes={\narray:createPrimitiveTypeChecker('array'),\nbool:createPrimitiveTypeChecker('boolean'),\nfunc:createPrimitiveTypeChecker('function'),\nnumber:createPrimitiveTypeChecker('number'),\nobject:createPrimitiveTypeChecker('object'),\nstring:createPrimitiveTypeChecker('string'),\n\nany:createAnyTypeChecker(),\narrayOf:createArrayOfTypeChecker,\nelement:elementTypeChecker,\ninstanceOf:createInstanceTypeChecker,\nnode:nodeTypeChecker,\nobjectOf:createObjectOfTypeChecker,\noneOf:createEnumTypeChecker,\noneOfType:createUnionTypeChecker,\nshape:createShapeTypeChecker};\n\n\nfunction createChainableTypeChecker(validate){\nfunction checkType(isRequired,props,propName,componentName,location){\ncomponentName = componentName || ANONYMOUS;\nif(props[propName] == null){\nvar locationName=ReactPropTypeLocationNames[location];\nif(isRequired){\nreturn new Error(\n'Required ' + locationName + ' `' + propName + '` was not specified in ' + ('`' + \ncomponentName + '`.'));}\n\n\nreturn null;}else \n{\nreturn validate(props,propName,componentName,location);}}\n\n\n\nvar chainedCheckType=checkType.bind(null,false);\nchainedCheckType.isRequired = checkType.bind(null,true);\n\nreturn chainedCheckType;}\n\n\nfunction createPrimitiveTypeChecker(expectedType){\nfunction validate(props,propName,componentName,location){\nvar propValue=props[propName];\nvar propType=getPropType(propValue);\nif(propType !== expectedType){\nvar locationName=ReactPropTypeLocationNames[location];\n\n\n\nvar preciseType=getPreciseType(propValue);\n\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` of type `' + preciseType + '` ' + ('supplied to `' + \ncomponentName + '`, expected `' + expectedType + '`.'));}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createAnyTypeChecker(){\nreturn createChainableTypeChecker(emptyFunction.thatReturns(null));}\n\n\nfunction createArrayOfTypeChecker(typeChecker){\nfunction validate(props,propName,componentName,location){\nvar propValue=props[propName];\nif(!Array.isArray(propValue)){\nvar locationName=ReactPropTypeLocationNames[location];\nvar propType=getPropType(propValue);\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` of type ' + ('`' + \npropType + '` supplied to `' + componentName + '`, expected an array.'));}\n\n\nfor(var i=0;i < propValue.length;i++) {\nvar error=typeChecker(propValue,i,componentName,location);\nif(error instanceof Error){\nreturn error;}}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createElementTypeChecker(){\nfunction validate(props,propName,componentName,location){\nif(!ReactElement.isValidElement(props[propName])){\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` supplied to ' + ('`' + \ncomponentName + '`, expected a ReactElement.'));}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createInstanceTypeChecker(expectedClass){\nfunction validate(props,propName,componentName,location){\nif(!(props[propName] instanceof expectedClass)){\nvar locationName=ReactPropTypeLocationNames[location];\nvar expectedClassName=expectedClass.name || ANONYMOUS;\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` supplied to ' + ('`' + \ncomponentName + '`, expected instance of `' + expectedClassName + '`.'));}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createEnumTypeChecker(expectedValues){\nfunction validate(props,propName,componentName,location){\nvar propValue=props[propName];\nfor(var i=0;i < expectedValues.length;i++) {\nif(propValue === expectedValues[i]){\nreturn null;}}\n\n\n\nvar locationName=ReactPropTypeLocationNames[location];\nvar valuesString=JSON.stringify(expectedValues);\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` of value `' + propValue + '` ' + ('supplied to `' + \ncomponentName + '`, expected one of ' + valuesString + '.'));}\n\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createObjectOfTypeChecker(typeChecker){\nfunction validate(props,propName,componentName,location){\nvar propValue=props[propName];\nvar propType=getPropType(propValue);\nif(propType !== 'object'){\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` of type ' + ('`' + \npropType + '` supplied to `' + componentName + '`, expected an object.'));}\n\n\nfor(var key in propValue) {\nif(propValue.hasOwnProperty(key)){\nvar error=typeChecker(propValue,key,componentName,location);\nif(error instanceof Error){\nreturn error;}}}\n\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createUnionTypeChecker(arrayOfTypeCheckers){\nfunction validate(props,propName,componentName,location){\nfor(var i=0;i < arrayOfTypeCheckers.length;i++) {\nvar checker=arrayOfTypeCheckers[i];\nif(checker(props,propName,componentName,location) == null){\nreturn null;}}\n\n\n\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` supplied to ' + ('`' + \ncomponentName + '`.'));}\n\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createNodeChecker(){\nfunction validate(props,propName,componentName,location){\nif(!isNode(props[propName])){\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` supplied to ' + ('`' + \ncomponentName + '`, expected a ReactNode.'));}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createShapeTypeChecker(shapeTypes){\nfunction validate(props,propName,componentName,location){\nvar propValue=props[propName];\nvar propType=getPropType(propValue);\nif(propType !== 'object'){\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` of type `' + propType + '` ' + ('supplied to `' + \ncomponentName + '`, expected `object`.'));}\n\n\nfor(var key in shapeTypes) {\nvar checker=shapeTypes[key];\nif(!checker){\ncontinue;}\n\nvar error=checker(propValue,key,componentName,location);\nif(error){\nreturn error;}}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction isNode(propValue){\nswitch(typeof propValue){\ncase 'number':\ncase 'string':\ncase 'undefined':\nreturn true;\ncase 'boolean':\nreturn !propValue;\ncase 'object':\nif(Array.isArray(propValue)){\nreturn propValue.every(isNode);}\n\nif(propValue === null || ReactElement.isValidElement(propValue)){\nreturn true;}\n\npropValue = ReactFragment.extractIfFragment(propValue);\nfor(var k in propValue) {\nif(!isNode(propValue[k])){\nreturn false;}}\n\n\nreturn true;\ndefault:\nreturn false;}}\n\n\n\n\nfunction getPropType(propValue){\nvar propType=typeof propValue;\nif(Array.isArray(propValue)){\nreturn 'array';}\n\nif(propValue instanceof RegExp){\n\n\n\nreturn 'object';}\n\nreturn propType;}\n\n\n\n\nfunction getPreciseType(propValue){\nvar propType=getPropType(propValue);\nif(propType === 'object'){\nif(propValue instanceof Date){\nreturn 'date';}else \nif(propValue instanceof RegExp){\nreturn 'regexp';}}\n\n\nreturn propType;}\n\n\nmodule.exports = ReactPropTypes;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypes\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactFragment = require('ReactFragment');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\n\nvar emptyFunction = require('emptyFunction');\n\n/**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\nvar ANONYMOUS = '<<anonymous>>';\n\nvar elementTypeChecker = createElementTypeChecker();\nvar nodeTypeChecker = createNodeChecker();\n\nvar ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: elementTypeChecker,\n instanceOf: createInstanceTypeChecker,\n node: nodeTypeChecker,\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n};\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location) {\n componentName = componentName || ANONYMOUS;\n if (props[propName] == null) {\n var locationName = ReactPropTypeLocationNames[location];\n if (isRequired) {\n return new Error(\n `Required ${locationName} \\`${propName}\\` was not specified in ` +\n `\\`${componentName}\\`.`\n );\n }\n return null;\n } else {\n return validate(props, propName, componentName, location);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\nfunction createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n var locationName = ReactPropTypeLocationNames[location];\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` of type \\`${preciseType}\\` ` +\n `supplied to \\`${componentName}\\`, expected \\`${expectedType}\\`.`\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturns(null));\n}\n\nfunction createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var locationName = ReactPropTypeLocationNames[location];\n var propType = getPropType(propValue);\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` of type ` +\n `\\`${propType}\\` supplied to \\`${componentName}\\`, expected an array.`\n );\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createElementTypeChecker() {\n function validate(props, propName, componentName, location) {\n if (!ReactElement.isValidElement(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` supplied to ` +\n `\\`${componentName}\\`, expected a ReactElement.`\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location) {\n if (!(props[propName] instanceof expectedClass)) {\n var locationName = ReactPropTypeLocationNames[location];\n var expectedClassName = expectedClass.name || ANONYMOUS;\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` supplied to ` +\n `\\`${componentName}\\`, expected instance of \\`${expectedClassName}\\`.`\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createEnumTypeChecker(expectedValues) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (propValue === expectedValues[i]) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n var valuesString = JSON.stringify(expectedValues);\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` of value \\`${propValue}\\` ` +\n `supplied to \\`${componentName}\\`, expected one of ${valuesString}.`\n );\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` of type ` +\n `\\`${propType}\\` supplied to \\`${componentName}\\`, expected an object.`\n );\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createUnionTypeChecker(arrayOfTypeCheckers) {\n function validate(props, propName, componentName, location) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location) == null) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` supplied to ` +\n `\\`${componentName}\\`.`\n );\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createNodeChecker() {\n function validate(props, propName, componentName, location) {\n if (!isNode(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` supplied to ` +\n `\\`${componentName}\\`, expected a ReactNode.`\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` of type \\`${propType}\\` ` +\n `supplied to \\`${componentName}\\`, expected \\`object\\`.`\n );\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || ReactElement.isValidElement(propValue)) {\n return true;\n }\n propValue = ReactFragment.extractIfFragment(propValue);\n for (var k in propValue) {\n if (!isNode(propValue[k])) {\n return false;\n }\n }\n return true;\n default:\n return false;\n }\n}\n\n// Equivalent of `typeof` but with special handling for array and regexp.\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n return propType;\n}\n\n// This handles more types than `getPropType`. Only used for error messages.\n// See `createPrimitiveTypeChecker`.\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n}\n\nmodule.exports = ReactPropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypes.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/TransformPropTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\n\nvar TransformPropTypes={\ntransform:ReactPropTypes.arrayOf(\nReactPropTypes.oneOfType([\nReactPropTypes.shape({rotate:ReactPropTypes.string}),\nReactPropTypes.shape({scaleX:ReactPropTypes.number}),\nReactPropTypes.shape({scaleY:ReactPropTypes.number}),\nReactPropTypes.shape({translateX:ReactPropTypes.number}),\nReactPropTypes.shape({translateY:ReactPropTypes.number})])),\n\n\n\n\n\n\n\n\ntransformMatrix:ReactPropTypes.arrayOf(ReactPropTypes.number),\n\n\nrotation:ReactPropTypes.number,\nscaleX:ReactPropTypes.number,\nscaleY:ReactPropTypes.number,\ntranslateX:ReactPropTypes.number,\ntranslateY:ReactPropTypes.number};\n\n\nmodule.exports = TransformPropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TransformPropTypes\n * @flow\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\n\nvar TransformPropTypes = {\n transform: ReactPropTypes.arrayOf(\n ReactPropTypes.oneOfType([\n ReactPropTypes.shape({rotate: ReactPropTypes.string}),\n ReactPropTypes.shape({scaleX: ReactPropTypes.number}),\n ReactPropTypes.shape({scaleY: ReactPropTypes.number}),\n ReactPropTypes.shape({translateX: ReactPropTypes.number}),\n ReactPropTypes.shape({translateY: ReactPropTypes.number})\n ])\n ),\n\n /*\n * `transformMatrix` accepts a 4x4 matrix expressed as a row-major ordered\n * array. This property is DEPRECATED and cannot be used simultaneously with\n * the `transform` property.\n */\n transformMatrix: ReactPropTypes.arrayOf(ReactPropTypes.number),\n\n // DEPRECATED\n rotation: ReactPropTypes.number,\n scaleX: ReactPropTypes.number,\n scaleY: ReactPropTypes.number,\n translateX: ReactPropTypes.number,\n translateY: ReactPropTypes.number,\n};\n\nmodule.exports = TransformPropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/TransformPropTypes.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Text/TextStylePropTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\n\nvar TextStylePropTypes=Object.assign(Object.create(ViewStylePropTypes),{\nfontFamily:ReactPropTypes.string,\nfontSize:ReactPropTypes.number,\nfontWeight:ReactPropTypes.oneOf(\n['normal','bold',\n'100','200','300','400','500','600','700','800','900']),\n\nfontStyle:ReactPropTypes.oneOf(['normal','italic']),\nlineHeight:ReactPropTypes.number,\ncolor:ReactPropTypes.string,\n\ntextAlign:ReactPropTypes.oneOf(\n['auto','left','right','center','justify']),\n\nwritingDirection:ReactPropTypes.oneOf(\n['auto','ltr','rtl']),\n\nletterSpacing:ReactPropTypes.number,\ntextDecorationLine:ReactPropTypes.oneOf(\n['none','underline','line-through','underline line-through']),\n\ntextDecorationStyle:ReactPropTypes.oneOf(\n['solid','double','dotted','dashed']),\n\ntextDecorationColor:ReactPropTypes.string});\n\n\n\nvar unsupportedProps=Object.keys({\npadding:null,\npaddingTop:null,\npaddingLeft:null,\npaddingRight:null,\npaddingBottom:null,\npaddingVertical:null,\npaddingHorizontal:null});\n\n\nfor(var ii=0;ii < unsupportedProps.length;ii++) {\ndelete TextStylePropTypes[unsupportedProps[ii]];}\n\n\nmodule.exports = TextStylePropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TextStylePropTypes\n * @flow\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\n// TODO: use spread instead of Object.assign/create after #6560135 is fixed\nvar TextStylePropTypes = Object.assign(Object.create(ViewStylePropTypes), {\n fontFamily: ReactPropTypes.string,\n fontSize: ReactPropTypes.number,\n fontWeight: ReactPropTypes.oneOf(\n ['normal' /*default*/, 'bold',\n '100', '200', '300', '400', '500', '600', '700', '800', '900']\n ),\n fontStyle: ReactPropTypes.oneOf(['normal', 'italic']),\n lineHeight: ReactPropTypes.number,\n color: ReactPropTypes.string,\n // NOTE: 'justify is supported only on iOS\n textAlign: ReactPropTypes.oneOf(\n ['auto' /*default*/, 'left', 'right', 'center', 'justify']\n ),\n writingDirection: ReactPropTypes.oneOf(\n ['auto' /*default*/, 'ltr', 'rtl']\n ),\n letterSpacing: ReactPropTypes.number,\n textDecorationLine:ReactPropTypes.oneOf(\n ['none' /*default*/, 'underline', 'line-through', 'underline line-through']\n ),\n textDecorationStyle:ReactPropTypes.oneOf(\n ['solid' /*default*/, 'double', 'dotted','dashed']\n ),\n textDecorationColor: ReactPropTypes.string,\n});\n\n// Text doesn't support padding correctly (#4841912)\nvar unsupportedProps = Object.keys({\n padding: null,\n paddingTop: null,\n paddingLeft: null,\n paddingRight: null,\n paddingBottom: null,\n paddingVertical: null,\n paddingHorizontal: null,\n});\n\nfor (var ii = 0; ii < unsupportedProps.length; ii++) {\n delete TextStylePropTypes[unsupportedProps[ii]];\n}\n\nmodule.exports = TextStylePropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Text/TextStylePropTypes.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/View/ViewStylePropTypes.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar LayoutPropTypes=require('LayoutPropTypes');\nvar ReactPropTypes=require('ReactPropTypes');\nvar TransformPropTypes=require('TransformPropTypes');\n\n\n\n\nvar ViewStylePropTypes=_extends({},\nLayoutPropTypes,\nTransformPropTypes,{\nbackgroundColor:ReactPropTypes.string,\nborderColor:ReactPropTypes.string,\nborderTopColor:ReactPropTypes.string,\nborderRightColor:ReactPropTypes.string,\nborderBottomColor:ReactPropTypes.string,\nborderLeftColor:ReactPropTypes.string,\nborderRadius:ReactPropTypes.number,\nborderTopLeftRadius:ReactPropTypes.number,\nborderTopRightRadius:ReactPropTypes.number,\nborderBottomLeftRadius:ReactPropTypes.number,\nborderBottomRightRadius:ReactPropTypes.number,\nborderStyle:ReactPropTypes.oneOf(['solid','dotted','dashed']),\nopacity:ReactPropTypes.number,\noverflow:ReactPropTypes.oneOf(['visible','hidden']),\nshadowColor:ReactPropTypes.string,\nshadowOffset:ReactPropTypes.shape(\n{width:ReactPropTypes.number,height:ReactPropTypes.number}),\n\nshadowOpacity:ReactPropTypes.number,\nshadowRadius:ReactPropTypes.number});\n\n\nmodule.exports = ViewStylePropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ViewStylePropTypes\n * @flow\n */\n'use strict';\n\nvar LayoutPropTypes = require('LayoutPropTypes');\nvar ReactPropTypes = require('ReactPropTypes');\nvar TransformPropTypes = require('TransformPropTypes');\n\n/**\n * Warning: Some of these properties may not be supported in all releases.\n */\nvar ViewStylePropTypes = {\n ...LayoutPropTypes,\n ...TransformPropTypes,\n backgroundColor: ReactPropTypes.string,\n borderColor: ReactPropTypes.string,\n borderTopColor: ReactPropTypes.string,\n borderRightColor: ReactPropTypes.string,\n borderBottomColor: ReactPropTypes.string,\n borderLeftColor: ReactPropTypes.string,\n borderRadius: ReactPropTypes.number,\n borderTopLeftRadius: ReactPropTypes.number,\n borderTopRightRadius: ReactPropTypes.number,\n borderBottomLeftRadius: ReactPropTypes.number,\n borderBottomRightRadius: ReactPropTypes.number,\n borderStyle: ReactPropTypes.oneOf(['solid', 'dotted', 'dashed']),\n opacity: ReactPropTypes.number,\n overflow: ReactPropTypes.oneOf(['visible', 'hidden']),\n shadowColor: ReactPropTypes.string,\n shadowOffset: ReactPropTypes.shape(\n {width: ReactPropTypes.number, height: ReactPropTypes.number}\n ),\n shadowOpacity: ReactPropTypes.number,\n shadowRadius: ReactPropTypes.number,\n};\n\nmodule.exports = ViewStylePropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/View/ViewStylePropTypes.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/matricesDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar matricesDiffer=function(one,two){\nif(one === two){\nreturn false;}\n\nreturn !one || !two || \none[12] !== two[12] || \none[13] !== two[13] || \none[14] !== two[14] || \none[5] !== two[5] || \none[10] !== two[10] || \none[1] !== two[1] || \none[2] !== two[2] || \none[3] !== two[3] || \none[4] !== two[4] || \none[6] !== two[6] || \none[7] !== two[7] || \none[8] !== two[8] || \none[9] !== two[9] || \none[11] !== two[11] || \none[15] !== two[15];};\n\n\nmodule.exports = matricesDiffer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule matricesDiffer\n */\n'use strict';\n\n/**\n * Unrolls an array comparison specially for matrices. Prioritizes\n * checking of indices that are most likely to change so that the comparison\n * bails as early as possible.\n *\n * @param {MatrixMath.Matrix} one First matrix.\n * @param {MatrixMath.Matrix} two Second matrix.\n * @return {boolean} Whether or not the two matrices differ.\n */\nvar matricesDiffer = function(one, two) {\n if (one === two) {\n return false;\n }\n return !one || !two ||\n one[12] !== two[12] ||\n one[13] !== two[13] ||\n one[14] !== two[14] ||\n one[5] !== two[5] ||\n one[10] !== two[10] ||\n one[1] !== two[1] ||\n one[2] !== two[2] ||\n one[3] !== two[3] ||\n one[4] !== two[4] ||\n one[6] !== two[6] ||\n one[7] !== two[7] ||\n one[8] !== two[8] ||\n one[9] !== two[9] ||\n one[11] !== two[11] ||\n one[15] !== two[15];\n};\n\nmodule.exports = matricesDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/matricesDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/sizesDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\nvar dummySize={width:undefined,height:undefined};\n\nvar sizesDiffer=function(one,two){\none = one || dummySize;\ntwo = two || dummySize;\nreturn one !== two && (\none.width !== two.width || \none.height !== two.height);};\n\n\n\nmodule.exports = sizesDiffer;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule sizesDiffer\n */\n'use strict';\n\nvar dummySize = {width: undefined, height: undefined};\n\nvar sizesDiffer = function(one, two) {\n one = one || dummySize;\n two = two || dummySize;\n return one !== two && (\n one.width !== two.width ||\n one.height !== two.height\n );\n};\n\nmodule.exports = sizesDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/sizesDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactMultiChild.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactComponentEnvironment=require('ReactComponentEnvironment');\nvar ReactMultiChildUpdateTypes=require('ReactMultiChildUpdateTypes');\n\nvar ReactReconciler=require('ReactReconciler');\nvar ReactChildReconciler=require('ReactChildReconciler');\n\n\n\n\n\n\n\n\nvar updateDepth=0;\n\n\n\n\n\n\n\n\n\nvar updateQueue=[];\n\n\n\n\n\n\n\nvar markupQueue=[];\n\n\n\n\n\n\n\n\n\nfunction enqueueMarkup(parentID,markup,toIndex){\n\nupdateQueue.push({\nparentID:parentID,\nparentNode:null,\ntype:ReactMultiChildUpdateTypes.INSERT_MARKUP,\nmarkupIndex:markupQueue.push(markup) - 1,\ntextContent:null,\nfromIndex:null,\ntoIndex:toIndex});}\n\n\n\n\n\n\n\n\n\n\n\nfunction enqueueMove(parentID,fromIndex,toIndex){\n\nupdateQueue.push({\nparentID:parentID,\nparentNode:null,\ntype:ReactMultiChildUpdateTypes.MOVE_EXISTING,\nmarkupIndex:null,\ntextContent:null,\nfromIndex:fromIndex,\ntoIndex:toIndex});}\n\n\n\n\n\n\n\n\n\n\nfunction enqueueRemove(parentID,fromIndex){\n\nupdateQueue.push({\nparentID:parentID,\nparentNode:null,\ntype:ReactMultiChildUpdateTypes.REMOVE_NODE,\nmarkupIndex:null,\ntextContent:null,\nfromIndex:fromIndex,\ntoIndex:null});}\n\n\n\n\n\n\n\n\n\n\nfunction enqueueTextContent(parentID,textContent){\n\nupdateQueue.push({\nparentID:parentID,\nparentNode:null,\ntype:ReactMultiChildUpdateTypes.TEXT_CONTENT,\nmarkupIndex:null,\ntextContent:textContent,\nfromIndex:null,\ntoIndex:null});}\n\n\n\n\n\n\n\n\nfunction processQueue(){\nif(updateQueue.length){\nReactComponentEnvironment.processChildrenUpdates(\nupdateQueue,\nmarkupQueue);\n\nclearQueue();}}\n\n\n\n\n\n\n\n\nfunction clearQueue(){\nupdateQueue.length = 0;\nmarkupQueue.length = 0;}\n\n\n\n\n\n\n\n\nvar ReactMultiChild={\n\n\n\n\n\n\n\n\nMixin:{\n\n\n\n\n\n\n\n\n\nmountChildren:function(nestedChildren,transaction,context){\nvar children=ReactChildReconciler.instantiateChildren(\nnestedChildren,transaction,context);\n\nthis._renderedChildren = children;\nvar mountImages=[];\nvar index=0;\nfor(var name in children) {\nif(children.hasOwnProperty(name)){\nvar child=children[name];\n\nvar rootID=this._rootNodeID + name;\nvar mountImage=ReactReconciler.mountComponent(\nchild,\nrootID,\ntransaction,\ncontext);\n\nchild._mountIndex = index;\nmountImages.push(mountImage);\nindex++;}}\n\n\nreturn mountImages;},\n\n\n\n\n\n\n\n\nupdateTextContent:function(nextContent){\nupdateDepth++;\nvar errorThrown=true;\ntry{\nvar prevChildren=this._renderedChildren;\n\nReactChildReconciler.unmountChildren(prevChildren);\n\nfor(var name in prevChildren) {\nif(prevChildren.hasOwnProperty(name)){\nthis._unmountChildByName(prevChildren[name],name);}}\n\n\n\nthis.setTextContent(nextContent);\nerrorThrown = false;}finally \n{\nupdateDepth--;\nif(!updateDepth){\nif(errorThrown){\nclearQueue();}else \n{\nprocessQueue();}}}},\n\n\n\n\n\n\n\n\n\n\n\n\nupdateChildren:function(nextNestedChildren,transaction,context){\nupdateDepth++;\nvar errorThrown=true;\ntry{\nthis._updateChildren(nextNestedChildren,transaction,context);\nerrorThrown = false;}finally \n{\nupdateDepth--;\nif(!updateDepth){\nif(errorThrown){\nclearQueue();}else \n{\nprocessQueue();}}}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_updateChildren:function(nextNestedChildren,transaction,context){\nvar prevChildren=this._renderedChildren;\nvar nextChildren=ReactChildReconciler.updateChildren(\nprevChildren,nextNestedChildren,transaction,context);\n\nthis._renderedChildren = nextChildren;\nif(!nextChildren && !prevChildren){\nreturn;}\n\nvar name;\n\n\nvar lastIndex=0;\nvar nextIndex=0;\nfor(name in nextChildren) {\nif(!nextChildren.hasOwnProperty(name)){\ncontinue;}\n\nvar prevChild=prevChildren && prevChildren[name];\nvar nextChild=nextChildren[name];\nif(prevChild === nextChild){\nthis.moveChild(prevChild,nextIndex,lastIndex);\nlastIndex = Math.max(prevChild._mountIndex,lastIndex);\nprevChild._mountIndex = nextIndex;}else \n{\nif(prevChild){\n\nlastIndex = Math.max(prevChild._mountIndex,lastIndex);\nthis._unmountChildByName(prevChild,name);}\n\n\nthis._mountChildByNameAtIndex(\nnextChild,name,nextIndex,transaction,context);}\n\n\nnextIndex++;}\n\n\nfor(name in prevChildren) {\nif(prevChildren.hasOwnProperty(name) && \n!(nextChildren && nextChildren.hasOwnProperty(name))){\nthis._unmountChildByName(prevChildren[name],name);}}},\n\n\n\n\n\n\n\n\n\n\nunmountChildren:function(){\nvar renderedChildren=this._renderedChildren;\nReactChildReconciler.unmountChildren(renderedChildren);\nthis._renderedChildren = null;},\n\n\n\n\n\n\n\n\n\n\nmoveChild:function(child,toIndex,lastIndex){\n\n\n\nif(child._mountIndex < lastIndex){\nenqueueMove(this._rootNodeID,child._mountIndex,toIndex);}},\n\n\n\n\n\n\n\n\n\n\ncreateChild:function(child,mountImage){\nenqueueMarkup(this._rootNodeID,mountImage,child._mountIndex);},\n\n\n\n\n\n\n\n\nremoveChild:function(child){\nenqueueRemove(this._rootNodeID,child._mountIndex);},\n\n\n\n\n\n\n\n\nsetTextContent:function(textContent){\nenqueueTextContent(this._rootNodeID,textContent);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n_mountChildByNameAtIndex:function(\nchild,\nname,\nindex,\ntransaction,\ncontext){\n\nvar rootID=this._rootNodeID + name;\nvar mountImage=ReactReconciler.mountComponent(\nchild,\nrootID,\ntransaction,\ncontext);\n\nchild._mountIndex = index;\nthis.createChild(child,mountImage);},\n\n\n\n\n\n\n\n\n\n\n\n_unmountChildByName:function(child,name){\nthis.removeChild(child);\nchild._mountIndex = null;}}};\n\n\n\n\n\n\nmodule.exports = ReactMultiChild;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMultiChild\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactComponentEnvironment = require('ReactComponentEnvironment');\nvar ReactMultiChildUpdateTypes = require('ReactMultiChildUpdateTypes');\n\nvar ReactReconciler = require('ReactReconciler');\nvar ReactChildReconciler = require('ReactChildReconciler');\n\n/**\n * Updating children of a component may trigger recursive updates. The depth is\n * used to batch recursive updates to render markup more efficiently.\n *\n * @type {number}\n * @private\n */\nvar updateDepth = 0;\n\n/**\n * Queue of update configuration objects.\n *\n * Each object has a `type` property that is in `ReactMultiChildUpdateTypes`.\n *\n * @type {array<object>}\n * @private\n */\nvar updateQueue = [];\n\n/**\n * Queue of markup to be rendered.\n *\n * @type {array<string>}\n * @private\n */\nvar markupQueue = [];\n\n/**\n * Enqueues markup to be rendered and inserted at a supplied index.\n *\n * @param {string} parentID ID of the parent component.\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction enqueueMarkup(parentID, markup, toIndex) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.INSERT_MARKUP,\n markupIndex: markupQueue.push(markup) - 1,\n textContent: null,\n fromIndex: null,\n toIndex: toIndex\n });\n}\n\n/**\n * Enqueues moving an existing element to another index.\n *\n * @param {string} parentID ID of the parent component.\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction enqueueMove(parentID, fromIndex, toIndex) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.MOVE_EXISTING,\n markupIndex: null,\n textContent: null,\n fromIndex: fromIndex,\n toIndex: toIndex\n });\n}\n\n/**\n * Enqueues removing an element at an index.\n *\n * @param {string} parentID ID of the parent component.\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction enqueueRemove(parentID, fromIndex) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.REMOVE_NODE,\n markupIndex: null,\n textContent: null,\n fromIndex: fromIndex,\n toIndex: null\n });\n}\n\n/**\n * Enqueues setting the text content.\n *\n * @param {string} parentID ID of the parent component.\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction enqueueTextContent(parentID, textContent) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.TEXT_CONTENT,\n markupIndex: null,\n textContent: textContent,\n fromIndex: null,\n toIndex: null\n });\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue() {\n if (updateQueue.length) {\n ReactComponentEnvironment.processChildrenUpdates(\n updateQueue,\n markupQueue\n );\n clearQueue();\n }\n}\n\n/**\n * Clears any enqueued updates.\n *\n * @private\n */\nfunction clearQueue() {\n updateQueue.length = 0;\n markupQueue.length = 0;\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function(nestedChildren, transaction, context) {\n var children = ReactChildReconciler.instantiateChildren(\n nestedChildren, transaction, context\n );\n this._renderedChildren = children;\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n // Inlined for performance, see `ReactInstanceHandles.createReactID`.\n var rootID = this._rootNodeID + name;\n var mountImage = ReactReconciler.mountComponent(\n child,\n rootID,\n transaction,\n context\n );\n child._mountIndex = index;\n mountImages.push(mountImage);\n index++;\n }\n }\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function(nextContent) {\n updateDepth++;\n var errorThrown = true;\n try {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren);\n // TODO: The setTextContent operation should be enough\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n this._unmountChildByName(prevChildren[name], name);\n }\n }\n // Set new text content.\n this.setTextContent(nextContent);\n errorThrown = false;\n } finally {\n updateDepth--;\n if (!updateDepth) {\n if (errorThrown) {\n clearQueue();\n } else {\n processQueue();\n }\n }\n }\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildren Nested child maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function(nextNestedChildren, transaction, context) {\n updateDepth++;\n var errorThrown = true;\n try {\n this._updateChildren(nextNestedChildren, transaction, context);\n errorThrown = false;\n } finally {\n updateDepth--;\n if (!updateDepth) {\n if (errorThrown) {\n clearQueue();\n } else {\n processQueue();\n }\n }\n\n }\n },\n\n /**\n * Improve performance by isolating this hot code path from the try/catch\n * block in `updateChildren`.\n *\n * @param {?object} nextNestedChildren Nested child maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function(nextNestedChildren, transaction, context) {\n var prevChildren = this._renderedChildren;\n var nextChildren = ReactChildReconciler.updateChildren(\n prevChildren, nextNestedChildren, transaction, context\n );\n this._renderedChildren = nextChildren;\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var lastIndex = 0;\n var nextIndex = 0;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n this.moveChild(prevChild, nextIndex, lastIndex);\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n this._unmountChildByName(prevChild, name);\n }\n // The child must be instantiated before it's mounted.\n this._mountChildByNameAtIndex(\n nextChild, name, nextIndex, transaction, context\n );\n }\n nextIndex++;\n }\n // Remove children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) &&\n !(nextChildren && nextChildren.hasOwnProperty(name))) {\n this._unmountChildByName(prevChildren[name], name);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @internal\n */\n unmountChildren: function() {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function(child, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n enqueueMove(this._rootNodeID, child._mountIndex, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function(child, mountImage) {\n enqueueMarkup(this._rootNodeID, mountImage, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function(child) {\n enqueueRemove(this._rootNodeID, child._mountIndex);\n },\n\n /**\n * Sets this text content string.\n *\n * @param {string} textContent Text content to set.\n * @protected\n */\n setTextContent: function(textContent) {\n enqueueTextContent(this._rootNodeID, textContent);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildByNameAtIndex: function(\n child,\n name,\n index,\n transaction,\n context) {\n // Inlined for performance, see `ReactInstanceHandles.createReactID`.\n var rootID = this._rootNodeID + name;\n var mountImage = ReactReconciler.mountComponent(\n child,\n rootID,\n transaction,\n context\n );\n child._mountIndex = index;\n this.createChild(child, mountImage);\n },\n\n /**\n * Unmounts a rendered child by name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @param {string} name Name of the child in `this._renderedChildren`.\n * @private\n */\n _unmountChildByName: function(child, name) {\n this.removeChild(child);\n child._mountIndex = null;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactMultiChild.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactChildReconciler.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactReconciler=require('ReactReconciler');\n\nvar flattenChildren=require('flattenChildren');\nvar instantiateReactComponent=require('instantiateReactComponent');\nvar shouldUpdateReactComponent=require('shouldUpdateReactComponent');\n\n\n\n\n\n\nvar ReactChildReconciler={\n\n\n\n\n\n\n\n\n\ninstantiateChildren:function(nestedChildNodes,transaction,context){\nvar children=flattenChildren(nestedChildNodes);\nfor(var name in children) {\nif(children.hasOwnProperty(name)){\nvar child=children[name];\n\n\nvar childInstance=instantiateReactComponent(child,null);\nchildren[name] = childInstance;}}\n\n\nreturn children;},\n\n\n\n\n\n\n\n\n\n\n\n\nupdateChildren:function(\nprevChildren,\nnextNestedChildNodes,\ntransaction,\ncontext){\n\n\n\n\n\nvar nextChildren=flattenChildren(nextNestedChildNodes);\nif(!nextChildren && !prevChildren){\nreturn null;}\n\nvar name;\nfor(name in nextChildren) {\nif(!nextChildren.hasOwnProperty(name)){\ncontinue;}\n\nvar prevChild=prevChildren && prevChildren[name];\nvar prevElement=prevChild && prevChild._currentElement;\nvar nextElement=nextChildren[name];\nif(shouldUpdateReactComponent(prevElement,nextElement)){\nReactReconciler.receiveComponent(\nprevChild,nextElement,transaction,context);\n\nnextChildren[name] = prevChild;}else \n{\nif(prevChild){\nReactReconciler.unmountComponent(prevChild,name);}\n\n\nvar nextChildInstance=instantiateReactComponent(\nnextElement,\nnull);\n\nnextChildren[name] = nextChildInstance;}}\n\n\n\nfor(name in prevChildren) {\nif(prevChildren.hasOwnProperty(name) && \n!(nextChildren && nextChildren.hasOwnProperty(name))){\nReactReconciler.unmountComponent(prevChildren[name]);}}\n\n\nreturn nextChildren;},\n\n\n\n\n\n\n\n\n\nunmountChildren:function(renderedChildren){\nfor(var name in renderedChildren) {\nvar renderedChild=renderedChildren[name];\nReactReconciler.unmountComponent(renderedChild);}}};\n\n\n\n\n\nmodule.exports = ReactChildReconciler;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactChildReconciler\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactReconciler = require('ReactReconciler');\n\nvar flattenChildren = require('flattenChildren');\nvar instantiateReactComponent = require('instantiateReactComponent');\nvar shouldUpdateReactComponent = require('shouldUpdateReactComponent');\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function(nestedChildNodes, transaction, context) {\n var children = flattenChildren(nestedChildNodes);\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n // The rendered children must be turned into instances as they're\n // mounted.\n var childInstance = instantiateReactComponent(child, null);\n children[name] = childInstance;\n }\n }\n return children;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextNestedChildNodes Nested child maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function(\n prevChildren,\n nextNestedChildNodes,\n transaction,\n context) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n var nextChildren = flattenChildren(nextNestedChildNodes);\n if (!nextChildren && !prevChildren) {\n return null;\n }\n var name;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(\n prevChild, nextElement, transaction, context\n );\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n ReactReconciler.unmountComponent(prevChild, name);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(\n nextElement,\n null\n );\n nextChildren[name] = nextChildInstance;\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) &&\n !(nextChildren && nextChildren.hasOwnProperty(name))) {\n ReactReconciler.unmountComponent(prevChildren[name]);\n }\n }\n return nextChildren;\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function(renderedChildren) {\n for (var name in renderedChildren) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild);\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactChildReconciler.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/flattenChildren.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar traverseAllChildren=require('traverseAllChildren');\nvar warning=require('warning');\n\n\n\n\n\n\nfunction flattenSingleChildIntoContext(traverseContext,child,name){\n\nvar result=traverseContext;\nvar keyUnique=!result.hasOwnProperty(name);\nif(__DEV__){\nwarning(\nkeyUnique,\n'flattenChildren(...): Encountered two children with the same key, ' + \n'`%s`. Child keys must be unique; when two children share a key, only ' + \n'the first child will be used.',\nname);}\n\n\nif(keyUnique && child != null){\nresult[name] = child;}}\n\n\n\n\n\n\n\n\nfunction flattenChildren(children){\nif(children == null){\nreturn children;}\n\nvar result={};\ntraverseAllChildren(children,flattenSingleChildIntoContext,result);\nreturn result;}\n\n\nmodule.exports = flattenChildren;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule flattenChildren\n */\n\n'use strict';\n\nvar traverseAllChildren = require('traverseAllChildren');\nvar warning = require('warning');\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name) {\n // We found a component instance.\n var result = traverseContext;\n var keyUnique = !result.hasOwnProperty(name);\n if (__DEV__) {\n warning(\n keyUnique,\n 'flattenChildren(...): Encountered two children with the same key, ' +\n '`%s`. Child keys must be unique; when two children share a key, only ' +\n 'the first child will be used.',\n name\n );\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children) {\n if (children == null) {\n return children;\n }\n var result = {};\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n return result;\n}\n\nmodule.exports = flattenChildren;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/flattenChildren.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/styleDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar deepDiffer=require('deepDiffer');\n\nfunction styleDiffer(a,b){\nreturn !styleEqual(a,b);}\n\n\nfunction styleEqual(a,b){\nif(!a){\nreturn !b;}\n\nif(!b){\nreturn !a;}\n\nif(typeof a !== typeof b){\nreturn false;}\n\nif(typeof a === 'number'){\nreturn a === b;}\n\n\nif(Array.isArray(a)){\nif(!Array.isArray(b) || a.length !== b.length){\nreturn false;}\n\nfor(var i=0;i < a.length;++i) {\nif(!styleEqual(a[i],b[i])){\nreturn false;}}\n\n\nreturn true;}\n\n\nfor(var key in a) {\nif(deepDiffer(a[key],b[key])){\nreturn false;}}\n\n\n\nfor(var key in b) {\nif(!a.hasOwnProperty(key)){\nreturn false;}}\n\n\n\nreturn true;}\n\n\nmodule.exports = styleDiffer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule styleDiffer\n * @flow\n */\n'use strict';\n\nvar deepDiffer = require('deepDiffer');\n\nfunction styleDiffer(a: any, b: any): bool {\n return !styleEqual(a, b);\n}\n\nfunction styleEqual(a: any, b: any): bool {\n if (!a) {\n return !b;\n }\n if (!b) {\n return !a;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'number') {\n return a === b;\n }\n\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; ++i) {\n if (!styleEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n\n for (var key in a) {\n if (deepDiffer(a[key], b[key])) {\n return false;\n }\n }\n\n for (var key in b) {\n if (!a.hasOwnProperty(key)) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = styleDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/styleDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/deepDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar deepDiffer=function(one,two){\nif(one === two){\n\nreturn false;}\n\nif(typeof one === 'function' && typeof two === 'function'){\n\nreturn false;}\n\nif(typeof one !== 'object' || one === null){\n\nreturn one !== two;}\n\nif(typeof two !== 'object' || two === null){\n\n\nreturn true;}\n\nif(one.constructor !== two.constructor){\nreturn true;}\n\nif(Array.isArray(one)){\n\nvar len=one.length;\nif(two.length !== len){\nreturn true;}\n\nfor(var ii=0;ii < len;ii++) {\nif(deepDiffer(one[ii],two[ii])){\nreturn true;}}}else \n\n\n{\nfor(var key in one) {\nif(deepDiffer(one[key],two[key])){\nreturn true;}}\n\n\nfor(var twoKey in two) {\n\n\nif(one[twoKey] === undefined && two[twoKey] !== undefined){\nreturn true;}}}\n\n\n\nreturn false;};\n\n\nmodule.exports = deepDiffer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule deepDiffer\n * @flow\n */\n'use strict';\n\n/*\n * @returns {bool} true if different, false if equal\n */\nvar deepDiffer = function(one: any, two: any): bool {\n if (one === two) {\n // Short circuit on identical object references instead of traversing them.\n return false;\n }\n if ((typeof one === 'function') && (typeof two === 'function')) {\n // We consider all functions equal\n return false;\n }\n if ((typeof one !== 'object') || (one === null)) {\n // Primitives can be directly compared\n return one !== two;\n }\n if ((typeof two !== 'object') || (two === null)) {\n // We know they are different because the previous case would have triggered\n // otherwise.\n return true;\n }\n if (one.constructor !== two.constructor) {\n return true;\n }\n if (Array.isArray(one)) {\n // We know two is also an array because the constructors are equal\n var len = one.length;\n if (two.length !== len) {\n return true;\n }\n for (var ii = 0; ii < len; ii++) {\n if (deepDiffer(one[ii], two[ii])) {\n return true;\n }\n }\n } else {\n for (var key in one) {\n if (deepDiffer(one[key], two[key])) {\n return true;\n }\n }\n for (var twoKey in two) {\n // The only case we haven't checked yet is keys that are in two but aren't\n // in one, which means they are different.\n if (one[twoKey] === undefined && two[twoKey] !== undefined) {\n return true;\n }\n }\n }\n return false;\n};\n\nmodule.exports = deepDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/deepDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/diffRawProperties.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction diffRawProperties(\nupdatePayload,\nprevProps,\nnextProps,\nvalidAttributes)\n{\nvar validAttributeConfig;\nvar nextProp;\nvar prevProp;\nvar isScalar;\nvar shouldUpdate;\n\nif(nextProps){\nfor(var propKey in nextProps) {\nvalidAttributeConfig = validAttributes[propKey];\nif(!validAttributeConfig){\ncontinue;}\n\nprevProp = prevProps && prevProps[propKey];\nnextProp = nextProps[propKey];\n\n\n\nif(typeof prevProp === 'function'){\nprevProp = true;}\n\nif(typeof nextProp === 'function'){\nnextProp = true;}\n\n\nif(prevProp !== nextProp){\n\n\n\n\nisScalar = typeof nextProp !== 'object' || nextProp === null;\nshouldUpdate = isScalar || \n!prevProp || \nvalidAttributeConfig.diff && \nvalidAttributeConfig.diff(prevProp,nextProp);\n\nif(shouldUpdate){\nupdatePayload = updatePayload || {};\nupdatePayload[propKey] = nextProp;}}}}\n\n\n\n\n\n\n\n\nif(prevProps){\nfor(var propKey in prevProps) {\nvalidAttributeConfig = validAttributes[propKey];\nif(!validAttributeConfig){\ncontinue;}\n\nif(updatePayload && updatePayload[propKey] !== undefined){\ncontinue;}\n\nprevProp = prevProps[propKey];\nnextProp = nextProps && nextProps[propKey];\n\n\n\nif(typeof prevProp === 'function'){\nprevProp = true;}\n\nif(typeof nextProp === 'function'){\nnextProp = true;}\n\n\nif(prevProp !== nextProp){\nif(nextProp === undefined){\nnextProp = null;}\n\n\n\n\n\nisScalar = typeof nextProp !== 'object' || nextProp === null;\nshouldUpdate = isScalar && prevProp !== nextProp || \nvalidAttributeConfig.diff && \nvalidAttributeConfig.diff(prevProp,nextProp);\nif(shouldUpdate){\nupdatePayload = updatePayload || {};\nupdatePayload[propKey] = nextProp;}}}}\n\n\n\n\nreturn updatePayload;}\n\n\nmodule.exports = diffRawProperties;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule diffRawProperties\n * @flow\n */\n'use strict';\n\n/**\n * diffRawProperties takes two sets of props and a set of valid attributes\n * and write to updatePayload the values that changed or were deleted\n *\n * @param {?object} updatePayload Overriden with the props that changed.\n * @param {!object} prevProps Previous properties to diff against current\n * properties. These properties are as supplied to component construction.\n * @param {!object} prevProps Next \"current\" properties to diff against\n * previous. These properties are as supplied to component construction.\n * @return {?object}\n */\nfunction diffRawProperties(\n updatePayload: ?Object,\n prevProps: ?Object,\n nextProps: ?Object,\n validAttributes: Object\n): ?Object {\n var validAttributeConfig;\n var nextProp;\n var prevProp;\n var isScalar;\n var shouldUpdate;\n\n if (nextProps) {\n for (var propKey in nextProps) {\n validAttributeConfig = validAttributes[propKey];\n if (!validAttributeConfig) {\n continue; // not a valid native prop\n }\n prevProp = prevProps && prevProps[propKey];\n nextProp = nextProps[propKey];\n\n // functions are converted to booleans as markers that the associated\n // events should be sent from native.\n if (typeof prevProp === 'function') {\n prevProp = true;\n }\n if (typeof nextProp === 'function') {\n nextProp = true;\n }\n\n if (prevProp !== nextProp) {\n // If you want a property's diff to be detected, you must configure it\n // to be so - *or* it must be a scalar property. For now, we'll allow\n // creation with any attribute that is not scalar, but we should\n // eventually even reject those unless they are properly configured.\n isScalar = typeof nextProp !== 'object' || nextProp === null;\n shouldUpdate = isScalar ||\n !prevProp ||\n validAttributeConfig.diff &&\n validAttributeConfig.diff(prevProp, nextProp);\n\n if (shouldUpdate) {\n updatePayload = updatePayload || {};\n updatePayload[propKey] = nextProp;\n }\n }\n }\n }\n\n // Also iterate through all the previous props to catch any that have been\n // removed and make sure native gets the signal so it can reset them to the\n // default.\n if (prevProps) {\n for (var propKey in prevProps) {\n validAttributeConfig = validAttributes[propKey];\n if (!validAttributeConfig) {\n continue; // not a valid native prop\n }\n if (updatePayload && updatePayload[propKey] !== undefined) {\n continue; // Prop already specified\n }\n prevProp = prevProps[propKey];\n nextProp = nextProps && nextProps[propKey];\n\n // functions are converted to booleans as markers that the associated\n // events should be sent from native.\n if (typeof prevProp === 'function') {\n prevProp = true;\n }\n if (typeof nextProp === 'function') {\n nextProp = true;\n }\n\n if (prevProp !== nextProp) {\n if (nextProp === undefined) {\n nextProp = null; // null is a sentinel we explicitly send to native\n }\n // If you want a property's diff to be detected, you must configure it\n // to be so - *or* it must be a scalar property. For now, we'll allow\n // creation with any attribute that is not scalar, but we should\n // eventually even reject those unless they are properly configured.\n isScalar = typeof nextProp !== 'object' || nextProp === null;\n shouldUpdate = isScalar && prevProp !== nextProp ||\n validAttributeConfig.diff &&\n validAttributeConfig.diff(prevProp, nextProp);\n if (shouldUpdate) {\n updatePayload = updatePayload || {};\n updatePayload[propKey] = nextProp;\n }\n }\n }\n }\n return updatePayload;\n}\n\nmodule.exports = diffRawProperties;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/diffRawProperties.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/RCTEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeEventEmitter=require('ReactNativeEventEmitter');\n\n\nmodule.exports = ReactNativeEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTEventEmitter\n * @flow\n */\n'use strict';\n\nvar ReactNativeEventEmitter = require('ReactNativeEventEmitter');\n\n// Completely locally implemented - no native hooks.\nmodule.exports = ReactNativeEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/RCTEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/RCTLog.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar levelsMap={\nlog:'log',\ninfo:'info',\nwarn:'warn',\nerror:'error',\nmustfix:'error'};var \n\n\nRCTLog=(function(){function RCTLog(){_classCallCheck(this,RCTLog);}_createClass(RCTLog,null,[{key:'logIfNoNativeHook',value:\n\nfunction logIfNoNativeHook(){\nvar args=Array.prototype.slice.call(arguments);\nvar level=args.shift();\nvar logFn=levelsMap[level];\ninvariant(\nlogFn,\n'Level \"' + level + '\" not one of ' + Object.keys(levelsMap));\n\nif(typeof global.nativeLoggingHook === 'undefined'){\n\nconsole[logFn].apply(console,args);}\n\nreturn true;}}]);return RCTLog;})();\n\n\n\nmodule.exports = RCTLog;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTLog\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nvar levelsMap = {\n log: 'log',\n info: 'info',\n warn: 'warn',\n error: 'error',\n mustfix: 'error',\n};\n\nclass RCTLog {\n // level one of log, info, warn, error, mustfix\n static logIfNoNativeHook() {\n var args = Array.prototype.slice.call(arguments);\n var level = args.shift();\n var logFn = levelsMap[level];\n invariant(\n logFn,\n 'Level \"' + level + '\" not one of ' + Object.keys(levelsMap)\n );\n if (typeof global.nativeLoggingHook === 'undefined') {\n // We already printed in xcode, so only log here if using a js debugger\n console[logFn].apply(console, args);\n }\n return true;\n }\n}\n\nmodule.exports = RCTLog;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/RCTLog.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/deprecated.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\nfunction deprecated(namespace,oldName,newName,ctx,fn){\nvar warned=false;\nif(__DEV__){\nvar newFn=function(){\nwarning(\nwarned,\n'%s.%s will be deprecated in a future version. ' + \n'Use %s.%s instead.',\nnamespace,\noldName,\nnamespace,\nnewName);\n\nwarned = true;\nreturn fn.apply(ctx,arguments);};\n\nnewFn.displayName = namespace + '_' + oldName;\n\n\nreturn assign(newFn,fn);}\n\n\nreturn fn;}\n\n\nmodule.exports = deprecated;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule deprecated\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar warning = require('warning');\n\n/**\n * This will log a single deprecation notice per function and forward the call\n * on to the new API.\n *\n * @param {string} namespace The namespace of the call, eg 'React'\n * @param {string} oldName The old function name, eg 'renderComponent'\n * @param {string} newName The new function name, eg 'render'\n * @param {*} ctx The context this forwarded call should run in\n * @param {function} fn The function to forward on to\n * @return {*} Will be the value as returned from `fn`\n */\nfunction deprecated(namespace, oldName, newName, ctx, fn) {\n var warned = false;\n if (__DEV__) {\n var newFn = function() {\n warning(\n warned,\n '%s.%s will be deprecated in a future version. ' +\n 'Use %s.%s instead.',\n namespace,\n oldName,\n namespace,\n newName\n );\n warned = true;\n return fn.apply(ctx, arguments);\n };\n newFn.displayName = `${namespace}_${oldName}`;\n // We need to make sure all properties of the original fn are copied over.\n // In particular, this is needed to support PropTypes\n return assign(newFn, fn);\n }\n\n return fn;\n}\n\nmodule.exports = deprecated;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/deprecated.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/onlyChild.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\nfunction onlyChild(children){\ninvariant(\nReactElement.isValidElement(children),\n'onlyChild must be passed a children with exactly one child.');\n\nreturn children;}\n\n\nmodule.exports = onlyChild;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule onlyChild\n */\n'use strict';\n\nvar ReactElement = require('ReactElement');\n\nvar invariant = require('invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection. The current implementation of this\n * function assumes that a single child gets passed without a wrapper, but the\n * purpose of this helper function is to abstract away the particular structure\n * of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactComponent} The first and only `ReactComponent` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n invariant(\n ReactElement.isValidElement(children),\n 'onlyChild must be passed a children with exactly one child.'\n );\n return children;\n}\n\nmodule.exports = onlyChild;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/onlyChild.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ActivityIndicatorIOS/ActivityIndicatorIOS.ios.js":{"data":{"code":"'use strict';function _objectWithoutProperties(obj,keys){var target={};for(var i in obj) {if(keys.indexOf(i) >= 0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i] = obj[i];}return target;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar verifyPropTypes=require('verifyPropTypes');\n\nvar GRAY='#999999';\n\n\n\n\n\n\n\n\nvar ActivityIndicatorIOS=React.createClass({displayName:'ActivityIndicatorIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\nanimating:PropTypes.bool,\n\n\n\ncolor:PropTypes.string,\n\n\n\nhidesWhenStopped:PropTypes.bool,\n\n\n\nsize:PropTypes.oneOf([\n'small',\n'large']),\n\n\n\n\n\n\nonLayout:PropTypes.func},\n\n\ngetDefaultProps:function(){\nreturn {\nanimating:true,\ncolor:GRAY,\nhidesWhenStopped:true,\nsize:'small'};},\n\n\n\nrender:function(){var _props=\nthis.props;var onLayout=_props.onLayout;var style=_props.style;var props=_objectWithoutProperties(_props,['onLayout','style']);\nvar sizeStyle=this.props.size === 'large'?styles.sizeLarge:styles.sizeSmall;\nreturn (\nReact.createElement(View,{\nonLayout:onLayout,\nstyle:[styles.container,sizeStyle,style]},\nReact.createElement(RCTActivityIndicatorView,props)));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nalignItems:'center',\njustifyContent:'center'},\n\nsizeSmall:{\nwidth:20,\nheight:20},\n\nsizeLarge:{\nwidth:36,\nheight:36}});\n\n\n\nvar RCTActivityIndicatorView=requireNativeComponent(\n'RCTActivityIndicatorView',\nnull);\n\nif(__DEV__){\nvar nativeOnlyProps={activityIndicatorViewStyle:true};\nverifyPropTypes(\nActivityIndicatorIOS,\nRCTActivityIndicatorView.viewConfig,\nnativeOnlyProps);}\n\n\n\nmodule.exports = ActivityIndicatorIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ActivityIndicatorIOS\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar verifyPropTypes = require('verifyPropTypes');\n\nvar GRAY = '#999999';\n\ntype DefaultProps = {\n animating: boolean;\n color: string;\n hidesWhenStopped: boolean;\n size: 'small' | 'large';\n};\n\nvar ActivityIndicatorIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * Whether to show the indicator (true, the default) or hide it (false).\n */\n animating: PropTypes.bool,\n /**\n * The foreground color of the spinner (default is gray).\n */\n color: PropTypes.string,\n /**\n * Whether the indicator should hide when not animating (true by default).\n */\n hidesWhenStopped: PropTypes.bool,\n /**\n * Size of the indicator. Small has a height of 20, large has a height of 36.\n */\n size: PropTypes.oneOf([\n 'small',\n 'large',\n ]),\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: { layout: {x, y, width, height}}}.\n */\n onLayout: PropTypes.func,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n animating: true,\n color: GRAY,\n hidesWhenStopped: true,\n size: 'small',\n };\n },\n\n render: function() {\n var {onLayout, style, ...props} = this.props;\n var sizeStyle = (this.props.size === 'large') ? styles.sizeLarge : styles.sizeSmall;\n return (\n <View\n onLayout={onLayout}\n style={[styles.container, sizeStyle, style]}>\n <RCTActivityIndicatorView {...props} />\n </View>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n sizeSmall: {\n width: 20,\n height: 20,\n },\n sizeLarge: {\n width: 36,\n height: 36,\n }\n});\n\nvar RCTActivityIndicatorView = requireNativeComponent(\n 'RCTActivityIndicatorView',\n null\n);\nif (__DEV__) {\n var nativeOnlyProps = {activityIndicatorViewStyle: true};\n verifyPropTypes(\n ActivityIndicatorIOS,\n RCTActivityIndicatorView.viewConfig,\n nativeOnlyProps\n );\n}\n\nmodule.exports = ActivityIndicatorIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ActivityIndicatorIOS/ActivityIndicatorIOS.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheet.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar StyleSheetRegistry=require('StyleSheetRegistry');\nvar StyleSheetValidation=require('StyleSheetValidation');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nStyleSheet=(function(){function StyleSheet(){_classCallCheck(this,StyleSheet);}_createClass(StyleSheet,null,[{key:'create',value:\nfunction create(obj){\nvar result={};\nfor(var key in obj) {\nStyleSheetValidation.validateStyle(key,obj);\nresult[key] = StyleSheetRegistry.registerStyle(obj[key]);}\n\nreturn result;}}]);return StyleSheet;})();\n\n\n\nmodule.exports = StyleSheet;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StyleSheet\n * @flow\n */\n'use strict';\n\nvar StyleSheetRegistry = require('StyleSheetRegistry');\nvar StyleSheetValidation = require('StyleSheetValidation');\n\n/**\n * A StyleSheet is an abstraction similar to CSS StyleSheets\n *\n * Create a new StyleSheet:\n *\n * ```\n * var styles = StyleSheet.create({\n * container: {\n * borderRadius: 4,\n * borderWidth: 0.5,\n * borderColor: '#d6d7da',\n * },\n * title: {\n * fontSize: 19,\n * fontWeight: 'bold',\n * },\n * activeTitle: {\n * color: 'red',\n * },\n * });\n * ```\n *\n * Use a StyleSheet:\n *\n * ```\n * <View style={styles.container}>\n * <Text style={[styles.title, this.props.isActive && styles.activeTitle]} />\n * </View>\n * ```\n *\n * Code quality:\n *\n * - By moving styles away from the render function, you're making the code\n * easier to understand.\n * - Naming the styles is a good way to add meaning to the low level components\n * in the render function.\n *\n * Performance:\n *\n * - Making a stylesheet from a style object makes it possible to refer to it\n * by ID instead of creating a new style object every time.\n * - It also allows to send the style only once through the bridge. All\n * subsequent uses are going to refer an id (not implemented yet).\n */\nclass StyleSheet {\n static create(obj: {[key: string]: any}): {[key: string]: number} {\n var result = {};\n for (var key in obj) {\n StyleSheetValidation.validateStyle(key, obj);\n result[key] = StyleSheetRegistry.registerStyle(obj[key]);\n }\n return result;\n }\n}\n\nmodule.exports = StyleSheet;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheet.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetValidation.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar ImageStylePropTypes=require('ImageStylePropTypes');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar invariant=require('invariant');var \n\nStyleSheetValidation=(function(){function StyleSheetValidation(){_classCallCheck(this,StyleSheetValidation);}_createClass(StyleSheetValidation,null,[{key:'validateStyleProp',value:\nfunction validateStyleProp(prop,style,caller){\nif(!__DEV__){\nreturn;}\n\nif(allStylePropTypes[prop] === undefined){\nvar message1='\"' + prop + '\" is not a valid style property.';\nvar message2='\\nValid style props: ' + \nJSON.stringify(Object.keys(allStylePropTypes).sort(),null,' ');\nstyleError(message1,style,caller,message2);}\n\nvar error=allStylePropTypes[prop](\nstyle,\nprop,\ncaller,\nReactPropTypeLocations.prop);\n\nif(error){\nstyleError(error.message,style,caller);}}},{key:'validateStyle',value:\n\n\n\nfunction validateStyle(name,styles){\nif(!__DEV__){\nreturn;}\n\nfor(var prop in styles[name]) {\nStyleSheetValidation.validateStyleProp(prop,styles[name],'StyleSheet ' + name);}}},{key:'addValidStylePropTypes',value:\n\n\n\nfunction addValidStylePropTypes(stylePropTypes){\nfor(var key in stylePropTypes) {\ninvariant(\nallStylePropTypes[key] === undefined || \nallStylePropTypes[key] === stylePropTypes[key],\n'Attemped to redefine existing style prop type \"' + key + '\".');\n\nallStylePropTypes[key] = stylePropTypes[key];}}}]);return StyleSheetValidation;})();\n\n\n\n\nvar styleError=function(message1,style,caller,message2){\ninvariant(\nfalse,\nmessage1 + '\\n' + (caller || '<<unknown>>') + ': ' + \nJSON.stringify(style,null,' ') + (message2 || ''));};\n\n\n\nvar allStylePropTypes={};\n\nStyleSheetValidation.addValidStylePropTypes(ImageStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(TextStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(ViewStylePropTypes);\n\nmodule.exports = StyleSheetValidation;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StyleSheetValidation\n * @flow\n */\n'use strict';\n\nvar ImageStylePropTypes = require('ImageStylePropTypes');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar invariant = require('invariant');\n\nclass StyleSheetValidation {\n static validateStyleProp(prop, style, caller) {\n if (!__DEV__) {\n return;\n }\n if (allStylePropTypes[prop] === undefined) {\n var message1 = '\"' + prop + '\" is not a valid style property.';\n var message2 = '\\nValid style props: ' +\n JSON.stringify(Object.keys(allStylePropTypes).sort(), null, ' ');\n styleError(message1, style, caller, message2);\n }\n var error = allStylePropTypes[prop](\n style,\n prop,\n caller,\n ReactPropTypeLocations.prop\n );\n if (error) {\n styleError(error.message, style, caller);\n }\n }\n\n static validateStyle(name, styles) {\n if (!__DEV__) {\n return;\n }\n for (var prop in styles[name]) {\n StyleSheetValidation.validateStyleProp(prop, styles[name], 'StyleSheet ' + name);\n }\n }\n\n static addValidStylePropTypes(stylePropTypes) {\n for (var key in stylePropTypes) {\n invariant(\n allStylePropTypes[key] === undefined ||\n allStylePropTypes[key] === stylePropTypes[key],\n 'Attemped to redefine existing style prop type \"' + key + '\".'\n );\n allStylePropTypes[key] = stylePropTypes[key];\n }\n }\n}\n\nvar styleError = function(message1, style, caller?, message2?) {\n invariant(\n false,\n message1 + '\\n' + (caller || '<<unknown>>') + ': ' +\n JSON.stringify(style, null, ' ') + (message2 || '')\n );\n};\n\nvar allStylePropTypes = {};\n\nStyleSheetValidation.addValidStylePropTypes(ImageStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(TextStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(ViewStylePropTypes);\n\nmodule.exports = StyleSheetValidation;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetValidation.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/View/View.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar React=require('React');\nvar ReactNativeStyleAttributes=require('ReactNativeStyleAttributes');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\n\nvar stylePropType=StyleSheetPropType(ViewStylePropTypes);\n\nvar AccessibilityTraits=[\n'none',\n'button',\n'link',\n'header',\n'search',\n'image',\n'selected',\n'plays',\n'key',\n'text',\n'summary',\n'disabled',\n'frequentUpdates',\n'startsMedia',\n'adjustable',\n'allowsDirectInteraction',\n'pageTurn'];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar View=React.createClass({displayName:'View',\nmixins:[NativeMethodsMixin],\n\n\n\n\n\nviewConfig:{\nuiViewClassName:'RCTView',\nvalidAttributes:ReactNativeViewAttributes.RCTView},\n\n\npropTypes:{\n\n\n\n\naccessible:PropTypes.bool,\n\n\n\n\n\n\naccessibilityLabel:PropTypes.string,\n\n\n\n\n\naccessibilityTraits:PropTypes.oneOfType([\nPropTypes.oneOf(AccessibilityTraits),\nPropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits))]),\n\n\n\n\n\n\nonAcccessibilityTap:PropTypes.func,\n\n\n\n\n\nonMagicTap:PropTypes.func,\n\n\n\n\ntestID:PropTypes.string,\n\n\n\n\n\n\nonMoveShouldSetResponder:PropTypes.func,\nonResponderGrant:PropTypes.func,\nonResponderMove:PropTypes.func,\nonResponderReject:PropTypes.func,\nonResponderRelease:PropTypes.func,\nonResponderTerminate:PropTypes.func,\nonResponderTerminationRequest:PropTypes.func,\nonStartShouldSetResponder:PropTypes.func,\nonStartShouldSetResponderCapture:PropTypes.func,\n\n\n\n\n\n\nonLayout:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npointerEvents:PropTypes.oneOf([\n'box-none',\n'none',\n'box-only',\n'auto']),\n\nstyle:stylePropType,\n\n\n\n\n\n\n\n\n\nremoveClippedSubviews:PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\n\n\n\nrenderToHardwareTextureAndroid:PropTypes.bool},\n\n\nrender:function(){\nreturn React.createElement(RCTView,this.props);}});\n\n\n\nvar RCTView=createReactNativeComponentClass({\nvalidAttributes:ReactNativeViewAttributes.RCTView,\nuiViewClassName:'RCTView'});\n\nRCTView.propTypes = View.propTypes;\nif(__DEV__){\nvar viewConfig=RCTUIManager.viewConfigs && RCTUIManager.viewConfigs.RCTView || {};\nfor(var prop in viewConfig.nativeProps) {\nvar viewAny=View;\nif(!viewAny.propTypes[prop] && !ReactNativeStyleAttributes[prop]){\nthrow new Error(\n'View is missing propType for native prop `' + prop + '`');}}}\n\n\n\n\n\nvar ViewToExport=RCTView;\nif(__DEV__){\nViewToExport = View;}\n\n\nmodule.exports = ViewToExport;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule View\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar React = require('React');\nvar ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar StyleSheetPropType = require('StyleSheetPropType');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\n\nvar stylePropType = StyleSheetPropType(ViewStylePropTypes);\n\nvar AccessibilityTraits = [\n 'none',\n 'button',\n 'link',\n 'header',\n 'search',\n 'image',\n 'selected',\n 'plays',\n 'key',\n 'text',\n 'summary',\n 'disabled',\n 'frequentUpdates',\n 'startsMedia',\n 'adjustable',\n 'allowsDirectInteraction',\n 'pageTurn',\n];\n\n/**\n * The most fundamental component for building UI, `View` is a\n * container that supports layout with flexbox, style, some touch handling, and\n * accessibility controls, and is designed to be nested inside other views and\n * to have 0 to many children of any type. `View` maps directly to the native\n * view equivalent on whatever platform React is running on, whether that is a\n * `UIView`, `<div>`, `android.view`, etc. This example creates a `View` that\n * wraps two colored boxes and custom component in a row with padding.\n *\n * ```\n * <View style={{flexDirection: 'row', height: 100, padding: 20}}>\n * <View style={{backgroundColor: 'blue', flex: 0.3}} />\n * <View style={{backgroundColor: 'red', flex: 0.5}} />\n * <MyCustomComponent {...customProps} />\n * </View>\n * ```\n *\n * `View`s are designed to be used with `StyleSheet`s for clarity and\n * performance, although inline styles are also supported.\n */\nvar View = React.createClass({\n mixins: [NativeMethodsMixin],\n\n /**\n * `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We\n * make `this` look like an actual native component class.\n */\n viewConfig: {\n uiViewClassName: 'RCTView',\n validAttributes: ReactNativeViewAttributes.RCTView\n },\n\n propTypes: {\n /**\n * When true, indicates that the view is an accessibility element. By default,\n * all the touchable elements are accessible.\n */\n accessible: PropTypes.bool,\n\n /**\n * Overrides the text that's read by the screen reader when the user interacts\n * with the element. By default, the label is constructed by traversing all the\n * children and accumulating all the Text nodes separated by space.\n */\n accessibilityLabel: PropTypes.string,\n\n /**\n * Provides additional traits to screen reader. By default no traits are\n * provided unless specified otherwise in element\n */\n accessibilityTraits: PropTypes.oneOfType([\n PropTypes.oneOf(AccessibilityTraits),\n PropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits)),\n ]),\n\n /**\n * When `accessible` is true, the system will try to invoke this function\n * when the user performs accessibility tap gesture.\n */\n onAcccessibilityTap: PropTypes.func,\n\n /**\n * When `accessible` is true, the system will invoke this function when the\n * user performs the magic tap gesture.\n */\n onMagicTap: PropTypes.func,\n\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n\n /**\n * For most touch interactions, you'll simply want to wrap your component in\n * `TouchableHighlight` or `TouchableOpacity`. Check out `Touchable.js`,\n * `ScrollResponder.js` and `ResponderEventPlugin.js` for more discussion.\n */\n onMoveShouldSetResponder: PropTypes.func,\n onResponderGrant: PropTypes.func,\n onResponderMove: PropTypes.func,\n onResponderReject: PropTypes.func,\n onResponderRelease: PropTypes.func,\n onResponderTerminate: PropTypes.func,\n onResponderTerminationRequest: PropTypes.func,\n onStartShouldSetResponder: PropTypes.func,\n onStartShouldSetResponderCapture: PropTypes.func,\n\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: { layout: {x, y, width, height}}}.\n */\n onLayout: PropTypes.func,\n\n /**\n * In the absence of `auto` property, `none` is much like `CSS`'s `none`\n * value. `box-none` is as if you had applied the `CSS` class:\n *\n * ```\n * .box-none {\n * pointer-events: none;\n * }\n * .box-none * {\n * pointer-events: all;\n * }\n * ```\n *\n * `box-only` is the equivalent of\n *\n * ```\n * .box-only {\n * pointer-events: all;\n * }\n * .box-only * {\n * pointer-events: none;\n * }\n * ```\n *\n * But since `pointerEvents` does not affect layout/appearance, and we are\n * already deviating from the spec by adding additional modes, we opt to not\n * include `pointerEvents` on `style`. On some platforms, we would need to\n * implement it as a `className` anyways. Using `style` or not is an\n * implementation detail of the platform.\n */\n pointerEvents: PropTypes.oneOf([\n 'box-none',\n 'none',\n 'box-only',\n 'auto',\n ]),\n style: stylePropType,\n\n /**\n * This is a special performance property exposed by RCTView and is useful\n * for scrolling content when there are many subviews, most of which are\n * offscreen. For this property to be effective, it must be applied to a\n * view that contains many subviews that extend outside its bound. The\n * subviews must also have overflow: hidden, as should the containing view\n * (or one of its superviews).\n */\n removeClippedSubviews: PropTypes.bool,\n\n /**\n * Whether this view should render itself (and all of its children) into a\n * single hardware texture on the GPU.\n *\n * On Android, this is useful for animations and interactions that only\n * modify opacity, rotation, translation, and/or scale: in those cases, the\n * view doesn't have to be redrawn and display lists don't need to be\n * re-executed. The texture can just be re-used and re-composited with\n * different parameters. The downside is that this can use up limited video\n * memory, so this prop should be set back to false at the end of the\n * interaction/animation.\n */\n renderToHardwareTextureAndroid: PropTypes.bool,\n },\n\n render: function() {\n return <RCTView {...this.props} />;\n },\n});\n\nvar RCTView = createReactNativeComponentClass({\n validAttributes: ReactNativeViewAttributes.RCTView,\n uiViewClassName: 'RCTView',\n});\nRCTView.propTypes = View.propTypes;\nif (__DEV__) {\n var viewConfig = RCTUIManager.viewConfigs && RCTUIManager.viewConfigs.RCTView || {};\n for (var prop in viewConfig.nativeProps) {\n var viewAny: any = View; // Appease flow\n if (!viewAny.propTypes[prop] && !ReactNativeStyleAttributes[prop]) {\n throw new Error(\n 'View is missing propType for native prop `' + prop + '`'\n );\n }\n }\n}\n\nvar ViewToExport = RCTView;\nif (__DEV__) {\n ViewToExport = View;\n}\n\nmodule.exports = ViewToExport;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/View/View.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeViewAttributes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar merge=require('merge');\n\nvar ReactNativeViewAttributes={};\n\nReactNativeViewAttributes.UIView = {\npointerEvents:true,\naccessible:true,\naccessibilityLabel:true,\naccessibilityTraits:true,\ntestID:true,\nonLayout:true,\nonAccessibilityTap:true,\nonMagicTap:true};\n\n\nReactNativeViewAttributes.RCTView = merge(\nReactNativeViewAttributes.UIView,{\n\n\n\n\n\n\nremoveClippedSubviews:true});\n\n\nmodule.exports = ReactNativeViewAttributes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeViewAttributes\n * @flow\n */\n'use strict';\n\nvar merge = require('merge');\n\nvar ReactNativeViewAttributes = {};\n\nReactNativeViewAttributes.UIView = {\n pointerEvents: true,\n accessible: true,\n accessibilityLabel: true,\n accessibilityTraits: true,\n testID: true,\n onLayout: true,\n onAccessibilityTap: true,\n onMagicTap: true,\n};\n\nReactNativeViewAttributes.RCTView = merge(\n ReactNativeViewAttributes.UIView, {\n\n // This is a special performance property exposed by RCTView and useful for\n // scrolling content when there are many subviews, most of which are offscreen.\n // For this property to be effective, it must be applied to a view that contains\n // many subviews that extend outside its bound. The subviews must also have\n // overflow: hidden, as should the containing view (or one of its superviews).\n removeClippedSubviews: true,\n});\n\nmodule.exports = ReactNativeViewAttributes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeViewAttributes.js"},"mtime":1437416998000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetPropType.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar flattenStyle=require('flattenStyle');\n\nfunction StyleSheetPropType(\nshape)\n{\nvar shapePropType=createStrictShapeTypeChecker(shape);\nreturn function(props,propName,componentName,location){\nvar newProps=props;\nif(props[propName]){\n\nnewProps = {};\nnewProps[propName] = flattenStyle(props[propName]);}\n\nreturn shapePropType(newProps,propName,componentName,location);};}\n\n\n\nmodule.exports = StyleSheetPropType;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StyleSheetPropType\n * @flow\n */\n'use strict';\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar flattenStyle = require('flattenStyle');\n\nfunction StyleSheetPropType(\n shape: {[key: string]: ReactPropsCheckType}\n): ReactPropsCheckType {\n var shapePropType = createStrictShapeTypeChecker(shape);\n return function(props, propName, componentName, location?) {\n var newProps = props;\n if (props[propName]) {\n // Just make a dummy prop object with only the flattened style\n newProps = {};\n newProps[propName] = flattenStyle(props[propName]);\n }\n return shapePropType(newProps, propName, componentName, location);\n };\n}\n\nmodule.exports = StyleSheetPropType;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetPropType.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/createStrictShapeTypeChecker.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\n\nvar invariant=require('invariant');\nvar merge=require('merge');\n\nfunction createStrictShapeTypeChecker(\nshapeTypes)\n{\nfunction checkType(isRequired,props,propName,componentName,location){\nif(!props[propName]){\nif(isRequired){\ninvariant(\nfalse,\n'Required object `' + propName + '` was not specified in ' + ('`' + \ncomponentName + '`.'));}\n\n\nreturn;}\n\nvar propValue=props[propName];\nvar propType=typeof propValue;\nvar locationName=\nlocation && ReactPropTypeLocationNames[location] || '(unknown)';\nif(propType !== 'object'){\ninvariant(\nfalse,\n'Invalid ' + locationName + ' `' + propName + '` of type `' + propType + '` ' + ('supplied to `' + \ncomponentName + '`, expected `object`.'));}\n\n\n\n\nvar allKeys=merge(props[propName],shapeTypes);\nfor(var key in allKeys) {\nvar checker=shapeTypes[key];\nif(!checker){\ninvariant(\nfalse,\n'Invalid props.' + propName + ' key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + \nJSON.stringify(props[propName],null,' ') + '\\nValid keys: ' + \nJSON.stringify(Object.keys(shapeTypes),null,' '));}\n\n\nvar error=checker(propValue,key,componentName,location);\nif(error){\ninvariant(\nfalse,\nerror.message + '\\nBad object: ' + \nJSON.stringify(props[propName],null,' '));}}}\n\n\n\n\nfunction chainedCheckType(\nprops,\npropName,\ncomponentName,\nlocation)\n{\nreturn checkType(false,props,propName,componentName,location);}\n\nchainedCheckType.isRequired = checkType.bind(null,true);\nreturn chainedCheckType;}\n\n\nmodule.exports = createStrictShapeTypeChecker;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule createStrictShapeTypeChecker\n * @flow\n */\n'use strict';\n\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\n\nvar invariant = require('invariant');\nvar merge = require('merge');\n\nfunction createStrictShapeTypeChecker(\n shapeTypes: {[key: string]: ReactPropsCheckType}\n): ReactPropsChainableTypeChecker {\n function checkType(isRequired, props, propName, componentName, location?) {\n if (!props[propName]) {\n if (isRequired) {\n invariant(\n false,\n `Required object \\`${propName}\\` was not specified in `+\n `\\`${componentName}\\`.`\n );\n }\n return;\n }\n var propValue = props[propName];\n var propType = typeof propValue;\n var locationName =\n location && ReactPropTypeLocationNames[location] || '(unknown)';\n if (propType !== 'object') {\n invariant(\n false,\n `Invalid ${locationName} \\`${propName}\\` of type \\`${propType}\\` ` +\n `supplied to \\`${componentName}\\`, expected \\`object\\`.`\n );\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = merge(props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n invariant(\n false,\n `Invalid props.${propName} key \\`${key}\\` supplied to \\`${componentName}\\`.` +\n `\\nBad object: ` + JSON.stringify(props[propName], null, ' ') +\n `\\nValid keys: ` + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location);\n if (error) {\n invariant(\n false,\n error.message +\n `\\nBad object: ` + JSON.stringify(props[propName], null, ' ')\n );\n }\n }\n }\n function chainedCheckType(\n props: {[key: string]: any},\n propName: string,\n componentName: string,\n location?: string\n ): ?Error {\n return checkType(false, props, propName, componentName, location);\n }\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n}\n\nmodule.exports = createStrictShapeTypeChecker;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/createStrictShapeTypeChecker.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/requireNativeComponent.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTUIManager=require('NativeModules').UIManager;\nvar UnimplementedView=require('UnimplementedView');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar deepDiffer=require('deepDiffer');\nvar insetsDiffer=require('insetsDiffer');\nvar pointsDiffer=require('pointsDiffer');\nvar matricesDiffer=require('matricesDiffer');\nvar sizesDiffer=require('sizesDiffer');\nvar verifyPropTypes=require('verifyPropTypes');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction requireNativeComponent(\nviewName,\nwrapperComponent)\n{\nvar viewConfig=RCTUIManager[viewName];\nif(!viewConfig || !viewConfig.NativeProps){\nwarning(false,'Native component for \"%s\" does not exist',viewName);\nreturn UnimplementedView;}\n\nvar nativeProps=_extends({},\nRCTUIManager.RCTView.NativeProps,\nviewConfig.NativeProps);\n\nviewConfig.uiViewClassName = viewName;\nviewConfig.validAttributes = {};\nfor(var key in nativeProps) {\n\nvar differ=TypeToDifferMap[nativeProps[key]] || deepDiffer;\nviewConfig.validAttributes[key] = {diff:differ};}\n\nif(__DEV__){\nwrapperComponent && verifyPropTypes(wrapperComponent,viewConfig);}\n\nreturn createReactNativeComponentClass(viewConfig);}\n\n\nvar TypeToDifferMap={\n\nCATransform3D:matricesDiffer,\nCGPoint:pointsDiffer,\nCGSize:sizesDiffer,\nUIEdgeInsets:insetsDiffer};\n\n\n\n\nmodule.exports = requireNativeComponent;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule requireNativeComponent\n * @flow\n */\n'use strict';\n\nvar RCTUIManager = require('NativeModules').UIManager;\nvar UnimplementedView = require('UnimplementedView');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar deepDiffer = require('deepDiffer');\nvar insetsDiffer = require('insetsDiffer');\nvar pointsDiffer = require('pointsDiffer');\nvar matricesDiffer = require('matricesDiffer');\nvar sizesDiffer = require('sizesDiffer');\nvar verifyPropTypes = require('verifyPropTypes');\nvar warning = require('warning');\n\n/**\n * Used to create React components that directly wrap native component\n * implementations. Config information is extracted from data exported from the\n * RCTUIManager module. You should also wrap the native component in a\n * hand-written component with full propTypes definitions and other\n * documentation - pass the hand-written component in as `wrapperComponent` to\n * verify all the native props are documented via `propTypes`.\n *\n * If some native props shouldn't be exposed in the wrapper interface, you can\n * pass null for `wrapperComponent` and call `verifyPropTypes` directly\n * with `nativePropsToIgnore`;\n *\n * Common types are lined up with the appropriate prop differs with\n * `TypeToDifferMap`. Non-scalar types not in the map default to `deepDiffer`.\n */\nfunction requireNativeComponent(\n viewName: string,\n wrapperComponent: ?Function\n): Function {\n var viewConfig = RCTUIManager[viewName];\n if (!viewConfig || !viewConfig.NativeProps) {\n warning(false, 'Native component for \"%s\" does not exist', viewName);\n return UnimplementedView;\n }\n var nativeProps = {\n ...RCTUIManager.RCTView.NativeProps,\n ...viewConfig.NativeProps,\n };\n viewConfig.uiViewClassName = viewName;\n viewConfig.validAttributes = {};\n for (var key in nativeProps) {\n // TODO: deep diff by default in diffRawProperties instead of setting it here\n var differ = TypeToDifferMap[nativeProps[key]] || deepDiffer;\n viewConfig.validAttributes[key] = {diff: differ};\n }\n if (__DEV__) {\n wrapperComponent && verifyPropTypes(wrapperComponent, viewConfig);\n }\n return createReactNativeComponentClass(viewConfig);\n}\n\nvar TypeToDifferMap = {\n // iOS Types\n CATransform3D: matricesDiffer,\n CGPoint: pointsDiffer,\n CGSize: sizesDiffer,\n UIEdgeInsets: insetsDiffer,\n // Android Types\n // (not yet implemented)\n};\n\nmodule.exports = requireNativeComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/requireNativeComponent.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/UnimplementedViews/UnimplementedView.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar UnimplementedView=React.createClass({displayName:'UnimplementedView',\nsetNativeProps:function(){},\n\n\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{style:[styles.unimplementedView,this.props.style]},\nthis.props.children));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nunimplementedView:{\nborderWidth:1,\nborderColor:'red',\nalignSelf:'flex-start'}});\n\n\n\nmodule.exports = UnimplementedView;","sourceCode":"/**\n * Common implementation for a simple stubbed view. Simply applies the view's styles to the inner\n * View component and renders its children.\n *\n * @providesModule UnimplementedView\n */\n\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar UnimplementedView = React.createClass({\n setNativeProps: function() {\n // Do nothing.\n // This method is required in order to use this view as a Touchable* child.\n // See ensureComponentIsNative.js for more info\n },\n render: function() {\n return (\n <View style={[styles.unimplementedView, this.props.style]}>\n {this.props.children}\n </View>\n );\n },\n});\n\nvar styles = StyleSheet.create({\n unimplementedView: {\n borderWidth: 1,\n borderColor: 'red',\n alignSelf: 'flex-start',\n }\n});\n\nmodule.exports = UnimplementedView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/UnimplementedViews/UnimplementedView.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/insetsDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar dummyInsets={\ntop:undefined,\nleft:undefined,\nright:undefined,\nbottom:undefined};\n\n\nvar insetsDiffer=function(\none,\ntwo)\n{\none = one || dummyInsets;\ntwo = two || dummyInsets;\nreturn one !== two && (\none.top !== two.top || \none.left !== two.left || \none.right !== two.right || \none.bottom !== two.bottom);};\n\n\n\nmodule.exports = insetsDiffer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule insetsDiffer\n * @flow\n */\n'use strict';\n\ntype Inset = {\n top: ?number;\n left: ?number;\n right: ?number;\n bottom: ?number;\n}\n\nvar dummyInsets = {\n\ttop: undefined,\n\tleft: undefined,\n\tright: undefined,\n\tbottom: undefined,\n};\n\nvar insetsDiffer = function(\n one: ?Inset,\n two: ?Inset\n): bool {\n one = one || dummyInsets;\n two = two || dummyInsets;\n return one !== two && (\n one.top !== two.top ||\n one.left !== two.left ||\n one.right !== two.right ||\n one.bottom !== two.bottom\n );\n};\n\nmodule.exports = insetsDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/insetsDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/pointsDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar dummyPoint={x:undefined,y:undefined};\n\nvar pointsDiffer=function(one,two){\none = one || dummyPoint;\ntwo = two || dummyPoint;\nreturn one !== two && (\none.x !== two.x || \none.y !== two.y);};\n\n\n\nmodule.exports = pointsDiffer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule pointsDiffer\n * @flow\n */\n'use strict';\n\ntype Point = {\n x: ?number;\n y: ?number;\n}\n\nvar dummyPoint = {x: undefined, y: undefined};\n\nvar pointsDiffer = function(one: ?Point, two: ?Point): bool {\n one = one || dummyPoint;\n two = two || dummyPoint;\n return one !== two && (\n one.x !== two.x ||\n one.y !== two.y\n );\n};\n\nmodule.exports = pointsDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/pointsDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/verifyPropTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeStyleAttributes=require('ReactNativeStyleAttributes');\nvar View=require('View');\n\nfunction verifyPropTypes(\ncomponent,\nviewConfig,\nnativePropsToIgnore)\n{\nif(!viewConfig){\nreturn;}\n\nvar componentName=component.name || component.displayName;\nif(!component.propTypes){\nthrow new Error(\n'`' + componentName + '` has no propTypes defined`');}\n\n\n\nvar nativeProps=viewConfig.NativeProps;\nfor(var prop in nativeProps) {\nif(!component.propTypes[prop] && \n!View.propTypes[prop] && \n!ReactNativeStyleAttributes[prop] && (\n!nativePropsToIgnore || !nativePropsToIgnore[prop])){\nthrow new Error(\n'`' + componentName + '` has no propType for native prop `' + \nviewConfig.uiViewClassName + '.' + prop + '` of native type `' + \nnativeProps[prop] + '`');}}}\n\n\n\n\n\nmodule.exports = verifyPropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule verifyPropTypes\n * @flow\n */\n'use strict';\n\nvar ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\nvar View = require('View');\n\nfunction verifyPropTypes(\n component: Function,\n viewConfig: Object,\n nativePropsToIgnore?: Object\n) {\n if (!viewConfig) {\n return; // This happens for UnimplementedView.\n }\n var componentName = component.name || component.displayName;\n if (!component.propTypes) {\n throw new Error(\n '`' + componentName + '` has no propTypes defined`'\n );\n }\n\n var nativeProps = viewConfig.NativeProps;\n for (var prop in nativeProps) {\n if (!component.propTypes[prop] &&\n !View.propTypes[prop] &&\n !ReactNativeStyleAttributes[prop] &&\n (!nativePropsToIgnore || !nativePropsToIgnore[prop])) {\n throw new Error(\n '`' + componentName + '` has no propType for native prop `' +\n viewConfig.uiViewClassName + '.' + prop + '` of native type `' +\n nativeProps[prop] + '`'\n );\n }\n }\n}\n\nmodule.exports = verifyPropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/verifyPropTypes.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar RCTDatePickerIOSConsts=require('NativeModules').UIManager.RCTDatePicker.Constants;\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar DATEPICKER='datepicker';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DatePickerIOS=React.createClass({displayName:'DatePickerIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\ndate:PropTypes.instanceOf(Date).isRequired,\n\n\n\n\n\n\n\n\nonDateChange:PropTypes.func.isRequired,\n\n\n\n\n\n\nmaximumDate:PropTypes.instanceOf(Date),\n\n\n\n\n\n\nminimumDate:PropTypes.instanceOf(Date),\n\n\n\n\nmode:PropTypes.oneOf(['date','time','datetime']),\n\n\n\n\nminuteInterval:PropTypes.oneOf([1,2,3,4,5,6,10,12,15,20,30]),\n\n\n\n\n\n\n\n\ntimeZoneOffsetInMinutes:PropTypes.number},\n\n\ngetDefaultProps:function(){\nreturn {\nmode:'datetime'};},\n\n\n\n_onChange:function(event){\nvar nativeTimeStamp=event.nativeEvent.timestamp;\nthis.props.onDateChange && this.props.onDateChange(\nnew Date(nativeTimeStamp));\n\nthis.props.onChange && this.props.onChange(event);\n\n\n\n\n\nvar propsTimeStamp=this.props.date.getTime();\nif(nativeTimeStamp !== propsTimeStamp){\nthis.refs[DATEPICKER].setNativeProps({\ndate:propsTimeStamp});}},\n\n\n\n\nrender:function(){\nvar props=this.props;\nreturn (\nReact.createElement(View,{style:props.style},\nReact.createElement(RCTDatePickerIOS,{\nref:DATEPICKER,\nstyle:styles.datePickerIOS,\ndate:props.date.getTime(),\nmaximumDate:\nprops.maximumDate?props.maximumDate.getTime():undefined,\n\nminimumDate:\nprops.minimumDate?props.minimumDate.getTime():undefined,\n\nmode:props.mode,\nminuteInterval:props.minuteInterval,\ntimeZoneOffsetInMinutes:props.timeZoneOffsetInMinutes,\nonChange:this._onChange})));}});\n\n\n\n\n\n\nvar styles=StyleSheet.create({\ndatePickerIOS:{\nheight:RCTDatePickerIOSConsts.ComponentHeight,\nwidth:RCTDatePickerIOSConsts.ComponentWidth}});\n\n\n\nvar RCTDatePickerIOS=requireNativeComponent('RCTDatePicker',DatePickerIOS);\n\nmodule.exports = DatePickerIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DatePickerIOS\n * @flow\n *\n * This is a controlled component version of RCTDatePickerIOS\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar RCTDatePickerIOSConsts = require('NativeModules').UIManager.RCTDatePicker.Constants;\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar DATEPICKER = 'datepicker';\n\ntype DefaultProps = {\n mode: 'date' | 'time' | 'datetime';\n};\n\ntype Event = Object;\n\n/**\n * Use `DatePickerIOS` to render a date/time picker (selector) on iOS. This is\n * a controlled component, so you must hook in to the `onDateChange` callback\n * and update the `date` prop in order for the component to update, otherwise\n * the user's change will be reverted immediately to reflect `props.date` as the\n * source of truth.\n */\nvar DatePickerIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The currently selected date.\n */\n date: PropTypes.instanceOf(Date).isRequired,\n\n /**\n * Date change handler.\n *\n * This is called when the user changes the date or time in the UI.\n * The first and only argument is a Date object representing the new\n * date and time.\n */\n onDateChange: PropTypes.func.isRequired,\n\n /**\n * Maximum date.\n *\n * Restricts the range of possible date/time values.\n */\n maximumDate: PropTypes.instanceOf(Date),\n\n /**\n * Minimum date.\n *\n * Restricts the range of possible date/time values.\n */\n minimumDate: PropTypes.instanceOf(Date),\n\n /**\n * The date picker mode.\n */\n mode: PropTypes.oneOf(['date', 'time', 'datetime']),\n\n /**\n * The interval at which minutes can be selected.\n */\n minuteInterval: PropTypes.oneOf([1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30]),\n\n /**\n * Timezone offset in minutes.\n *\n * By default, the date picker will use the device's timezone. With this\n * parameter, it is possible to force a certain timezone offset. For\n * instance, to show times in Pacific Standard Time, pass -7 * 60.\n */\n timeZoneOffsetInMinutes: PropTypes.number,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n mode: 'datetime',\n };\n },\n\n _onChange: function(event: Event) {\n var nativeTimeStamp = event.nativeEvent.timestamp;\n this.props.onDateChange && this.props.onDateChange(\n new Date(nativeTimeStamp)\n );\n this.props.onChange && this.props.onChange(event);\n\n // We expect the onChange* handlers to be in charge of updating our `date`\n // prop. That way they can also disallow/undo/mutate the selection of\n // certain values. In other words, the embedder of this component should\n // be the source of truth, not the native component.\n var propsTimeStamp = this.props.date.getTime();\n if (nativeTimeStamp !== propsTimeStamp) {\n this.refs[DATEPICKER].setNativeProps({\n date: propsTimeStamp,\n });\n }\n },\n\n render: function() {\n var props = this.props;\n return (\n <View style={props.style}>\n <RCTDatePickerIOS\n ref={DATEPICKER}\n style={styles.datePickerIOS}\n date={props.date.getTime()}\n maximumDate={\n props.maximumDate ? props.maximumDate.getTime() : undefined\n }\n minimumDate={\n props.minimumDate ? props.minimumDate.getTime() : undefined\n }\n mode={props.mode}\n minuteInterval={props.minuteInterval}\n timeZoneOffsetInMinutes={props.timeZoneOffsetInMinutes}\n onChange={this._onChange}\n />\n </View>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n datePickerIOS: {\n height: RCTDatePickerIOSConsts.ComponentHeight,\n width: RCTDatePickerIOSConsts.ComponentWidth,\n },\n});\n\nvar RCTDatePickerIOS = requireNativeComponent('RCTDatePicker', DatePickerIOS);\n\nmodule.exports = DatePickerIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/Image.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar ImageResizeMode=require('ImageResizeMode');\nvar ImageStylePropTypes=require('ImageStylePropTypes');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar NativeModules=require('NativeModules');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheet=require('StyleSheet');\nvar StyleSheetPropType=require('StyleSheetPropType');\n\nvar flattenStyle=require('flattenStyle');\nvar invariant=require('invariant');\nvar merge=require('merge');\nvar requireNativeComponent=require('requireNativeComponent');\nvar resolveAssetSource=require('resolveAssetSource');\nvar verifyPropTypes=require('verifyPropTypes');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=React.createClass({displayName:'Image',\npropTypes:{\n\n\n\n\n\nsource:PropTypes.shape({\nuri:PropTypes.string}),\n\n\n\n\n\ndefaultSource:PropTypes.shape({\nuri:PropTypes.string}),\n\n\n\n\naccessible:PropTypes.bool,\n\n\n\naccessibilityLabel:PropTypes.string,\n\n\n\n\n\n\n\ncapInsets:EdgeInsetsPropType,\n\n\n\n\nresizeMode:PropTypes.oneOf(['cover','contain','stretch']),\nstyle:StyleSheetPropType(ImageStylePropTypes),\n\n\n\n\ntestID:PropTypes.string,\n\n\n\n\n\nonLayout:PropTypes.func,\n\n\n\nonLoadStart:PropTypes.func,\n\n\n\n\n\nonLoadProgress:PropTypes.func,\n\n\n\nonLoadAbort:PropTypes.func,\n\n\n\n\n\nonLoadError:PropTypes.func,\n\n\n\n\nonLoaded:PropTypes.func},\n\n\n\nstatics:{\nresizeMode:ImageResizeMode},\n\n\nmixins:[NativeMethodsMixin],\n\n\n\n\n\nviewConfig:{\nuiViewClassName:'UIView',\nvalidAttributes:ReactNativeViewAttributes.UIView},\n\n\nrender:function(){\nfor(var prop in nativeOnlyProps) {\nif(this.props[prop] !== undefined){\nconsole.warn('Prop `' + prop + ' = ' + this.props[prop] + '` should ' + \n'not be set directly on Image.');}}\n\n\nvar source=resolveAssetSource(this.props.source) || {};var \n\nwidth=source.width;var height=source.height;\nvar style=flattenStyle([{width:width,height:height},styles.base,this.props.style]);\ninvariant(style,'style must be initialized');\n\nvar isNetwork=source.uri && source.uri.match(/^https?:/);\ninvariant(\n!(isNetwork && source.isStatic),\n'static image uris cannot start with \"http\": \"' + source.uri + '\"');\n\nvar isStored=!source.isStatic && !isNetwork;\nvar RawImage=isNetwork?RCTNetworkImage:RCTStaticImage;\n\nif(this.props.style && this.props.style.tintColor){\nwarning(RawImage === RCTStaticImage,'tintColor style only supported on static images.');}\n\nvar resizeMode=this.props.resizeMode || style.resizeMode || 'cover';\n\nvar nativeProps=merge(this.props,{\nstyle:style,\nresizeMode:resizeMode,\ntintColor:style.tintColor});\n\nif(isStored){\nnativeProps.imageTag = source.uri;}else \n{\nnativeProps.src = source.uri;}\n\nif(this.props.defaultSource){\nnativeProps.defaultImageSrc = this.props.defaultSource.uri;}\n\nnativeProps.progressHandlerRegistered = isNetwork && this.props.onLoadProgress;\nreturn React.createElement(RawImage,nativeProps);}});\n\n\n\nvar styles=StyleSheet.create({\nbase:{\noverflow:'hidden'}});\n\n\n\nvar RCTNetworkImage=requireNativeComponent('RCTNetworkImageView',null);\nvar RCTStaticImage=requireNativeComponent('RCTStaticImage',null);\n\nvar nativeOnlyProps={\nsrc:true,\ndefaultImageSrc:true,\nimageTag:true,\nprogressHandlerRegistered:true};\n\nif(__DEV__){\nverifyPropTypes(Image,RCTStaticImage.viewConfig,nativeOnlyProps);\nverifyPropTypes(Image,RCTNetworkImage.viewConfig,nativeOnlyProps);}\n\n\nmodule.exports = Image;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Image\n * @flow\n */\n'use strict';\n\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar ImageResizeMode = require('ImageResizeMode');\nvar ImageStylePropTypes = require('ImageStylePropTypes');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar NativeModules = require('NativeModules');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar StyleSheet = require('StyleSheet');\nvar StyleSheetPropType = require('StyleSheetPropType');\n\nvar flattenStyle = require('flattenStyle');\nvar invariant = require('invariant');\nvar merge = require('merge');\nvar requireNativeComponent = require('requireNativeComponent');\nvar resolveAssetSource = require('resolveAssetSource');\nvar verifyPropTypes = require('verifyPropTypes');\nvar warning = require('warning');\n\n/**\n * A React component for displaying different types of images,\n * including network images, static resources, temporary local images, and\n * images from local disk, such as the camera roll.\n *\n * Example usage:\n *\n * ```\n * renderImages: function() {\n * return (\n * <View>\n * <Image\n * style={styles.icon}\n * source={require('image!myIcon')}\n * />\n * <Image\n * style={styles.logo}\n * source={{uri: 'http://facebook.github.io/react/img/logo_og.png'}}\n * />\n * </View>\n * );\n * },\n * ```\n */\n\nvar Image = React.createClass({\n propTypes: {\n /**\n * `uri` is a string representing the resource identifier for the image, which\n * could be an http address, a local file path, or the name of a static image\n * resource (which should be wrapped in the `require('image!name')` function).\n */\n source: PropTypes.shape({\n uri: PropTypes.string,\n }),\n /**\n * A static image to display while downloading the final image off the\n * network.\n */\n defaultSource: PropTypes.shape({\n uri: PropTypes.string,\n }),\n /**\n * Whether this element should be revealed as an accessible element.\n */\n accessible: PropTypes.bool,\n /**\n * Custom string to display for accessibility.\n */\n accessibilityLabel: PropTypes.string,\n /**\n * When the image is resized, the corners of the size specified\n * by capInsets will stay a fixed size, but the center content and borders\n * of the image will be stretched. This is useful for creating resizable\n * rounded buttons, shadows, and other resizable assets. More info on\n * [Apple documentation](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImage_Class/index.html#//apple_ref/occ/instm/UIImage/resizableImageWithCapInsets)\n */\n capInsets: EdgeInsetsPropType,\n /**\n * Determines how to resize the image when the frame doesn't match the raw\n * image dimensions.\n */\n resizeMode: PropTypes.oneOf(['cover', 'contain', 'stretch']),\n style: StyleSheetPropType(ImageStylePropTypes),\n /**\n * A unique identifier for this element to be used in UI Automation\n * testing scripts.\n */\n testID: PropTypes.string,\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: { layout: {x, y, width, height}}}.\n */\n onLayout: PropTypes.func,\n /**\n * Invoked on load start\n */\n onLoadStart: PropTypes.func,\n /**\n * Invoked on download progress with\n *\n * {nativeEvent: { written, total}}.\n */\n onLoadProgress: PropTypes.func,\n /**\n * Invoked on load abort\n */\n onLoadAbort: PropTypes.func,\n /**\n * Invoked on load error\n *\n * {nativeEvent: { error}}.\n */\n onLoadError: PropTypes.func,\n /**\n * Invoked on load end\n *\n */\n onLoaded: PropTypes.func\n\n },\n\n statics: {\n resizeMode: ImageResizeMode,\n },\n\n mixins: [NativeMethodsMixin],\n\n /**\n * `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We\n * make `this` look like an actual native component class.\n */\n viewConfig: {\n uiViewClassName: 'UIView',\n validAttributes: ReactNativeViewAttributes.UIView\n },\n\n render: function() {\n for (var prop in nativeOnlyProps) {\n if (this.props[prop] !== undefined) {\n console.warn('Prop `' + prop + ' = ' + this.props[prop] + '` should ' +\n 'not be set directly on Image.');\n }\n }\n var source = resolveAssetSource(this.props.source) || {};\n\n var {width, height} = source;\n var style = flattenStyle([{width, height}, styles.base, this.props.style]);\n invariant(style, 'style must be initialized');\n\n var isNetwork = source.uri && source.uri.match(/^https?:/);\n invariant(\n !(isNetwork && source.isStatic),\n 'static image uris cannot start with \"http\": \"' + source.uri + '\"'\n );\n var isStored = !source.isStatic && !isNetwork;\n var RawImage = isNetwork ? RCTNetworkImage : RCTStaticImage;\n\n if (this.props.style && this.props.style.tintColor) {\n warning(RawImage === RCTStaticImage, 'tintColor style only supported on static images.');\n }\n var resizeMode = this.props.resizeMode || style.resizeMode || 'cover';\n\n var nativeProps = merge(this.props, {\n style,\n resizeMode,\n tintColor: style.tintColor,\n });\n if (isStored) {\n nativeProps.imageTag = source.uri;\n } else {\n nativeProps.src = source.uri;\n }\n if (this.props.defaultSource) {\n nativeProps.defaultImageSrc = this.props.defaultSource.uri;\n }\n nativeProps.progressHandlerRegistered = isNetwork && this.props.onLoadProgress;\n return <RawImage {...nativeProps} />;\n }\n});\n\nvar styles = StyleSheet.create({\n base: {\n overflow: 'hidden',\n },\n});\n\nvar RCTNetworkImage = requireNativeComponent('RCTNetworkImageView', null);\nvar RCTStaticImage = requireNativeComponent('RCTStaticImage', null);\n\nvar nativeOnlyProps = {\n src: true,\n defaultImageSrc: true,\n imageTag: true,\n progressHandlerRegistered: true\n};\nif (__DEV__) {\n verifyPropTypes(Image, RCTStaticImage.viewConfig, nativeOnlyProps);\n verifyPropTypes(Image, RCTNetworkImage.viewConfig, nativeOnlyProps);\n}\n\nmodule.exports = Image;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/Image.ios.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/EdgeInsetsPropType.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PropTypes=require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\n\nvar EdgeInsetsPropType=createStrictShapeTypeChecker({\ntop:PropTypes.number,\nleft:PropTypes.number,\nbottom:PropTypes.number,\nright:PropTypes.number});\n\n\nmodule.exports = EdgeInsetsPropType;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EdgeInsetsPropType\n * @flow\n */\n'use strict';\n\nvar PropTypes = require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\n\nvar EdgeInsetsPropType = createStrictShapeTypeChecker({\n top: PropTypes.number,\n left: PropTypes.number,\n bottom: PropTypes.number,\n right: PropTypes.number,\n});\n\nmodule.exports = EdgeInsetsPropType;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/EdgeInsetsPropType.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/resolveAssetSource.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AssetRegistry=require('AssetRegistry');\nvar PixelRatio=require('PixelRatio');\nvar Platform=require('Platform');\nvar SourceCode=require('NativeModules').SourceCode;\n\nvar _serverURL;\n\nfunction getDevServerURL(){\nif(!__DEV__){\n\nreturn null;}\n\nif(_serverURL === undefined){\nvar scriptURL=SourceCode.scriptURL;\nvar match=scriptURL && scriptURL.match(/^https?:\\/\\/.*?\\//);\nif(match){\n\n_serverURL = match[0];}else \n{\n\n_serverURL = null;}}\n\n\n\nreturn _serverURL;}\n\n\n\n\n\nfunction getPathInArchive(asset){\nif(Platform.OS === 'android'){\nvar assetDir=getBasePath(asset);\n\n\nreturn (assetDir + '/' + asset.name).\ntoLowerCase().\nreplace(/\\//g,'_').\nreplace(/([^a-z0-9_])/g,'').\nreplace(/^assets_/,'');}else \n{\n\nreturn getScaledAssetPath(asset);}}\n\n\n\n\n\n\n\nfunction getPathOnDevserver(devServerUrl,asset){\nreturn devServerUrl + getScaledAssetPath(asset) + '?hash=' + asset.hash;}\n\n\n\n\n\nfunction getBasePath(asset){\n\n\nvar path=asset.httpServerLocation;\nif(path[0] === '/'){\npath = path.substr(1);}\n\nreturn path;}\n\n\n\n\n\nfunction getScaledAssetPath(asset){\nvar scale=pickScale(asset.scales,PixelRatio.get());\nvar scaleSuffix=scale === 1?'':'@' + scale + 'x';\nvar assetDir=getBasePath(asset);\nreturn assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type;}\n\n\nfunction pickScale(scales,deviceScale){\n\nfor(var i=0;i < scales.length;i++) {\nif(scales[i] >= deviceScale){\nreturn scales[i];}}\n\n\n\n\n\n\nreturn scales[scales.length - 1] || 1;}\n\n\nfunction resolveAssetSource(source){\nif(typeof source === 'object'){\nreturn source;}\n\n\nvar asset=AssetRegistry.getAssetByID(source);\nif(asset){\nreturn assetToImageSource(asset);}\n\n\nreturn null;}\n\n\nfunction assetToImageSource(asset){\nvar devServerURL=getDevServerURL();\nif(devServerURL){\nreturn {\nwidth:asset.width,\nheight:asset.height,\nuri:getPathOnDevserver(devServerURL,asset),\nisStatic:false};}else \n\n{\nreturn {\nwidth:asset.width,\nheight:asset.height,\nuri:getPathInArchive(asset),\nisStatic:true};}}\n\n\n\n\nmodule.exports = resolveAssetSource;\nmodule.exports.pickScale = pickScale;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule resolveAssetSource\n *\n * Resolves an asset into a `source` for `Image`.\n */\n'use strict';\n\nvar AssetRegistry = require('AssetRegistry');\nvar PixelRatio = require('PixelRatio');\nvar Platform = require('Platform');\nvar SourceCode = require('NativeModules').SourceCode;\n\nvar _serverURL;\n\nfunction getDevServerURL() {\n if (!__DEV__) {\n // In prod we want assets to be loaded from the archive\n return null;\n }\n if (_serverURL === undefined) {\n var scriptURL = SourceCode.scriptURL;\n var match = scriptURL && scriptURL.match(/^https?:\\/\\/.*?\\//);\n if (match) {\n // Bundle was loaded from network\n _serverURL = match[0];\n } else {\n // Bundle was loaded from file\n _serverURL = null;\n }\n }\n\n return _serverURL;\n}\n\n/**\n * Returns the path at which the asset can be found in the archive\n */\nfunction getPathInArchive(asset) {\n if (Platform.OS === 'android') {\n var assetDir = getBasePath(asset);\n // E.g. 'assets_awesomemodule_icon'\n // The Android resource system picks the correct scale.\n return (assetDir + '/' + asset.name)\n .toLowerCase()\n .replace(/\\//g, '_') // Encode folder structure in file name\n .replace(/([^a-z0-9_])/g, '') // Remove illegal chars\n .replace(/^assets_/, ''); // Remove \"assets_\" prefix\n } else {\n // E.g. 'assets/AwesomeModule/icon@2x.png'\n return getScaledAssetPath(asset);\n }\n}\n\n/**\n * Returns an absolute URL which can be used to fetch the asset\n * from the devserver\n */\nfunction getPathOnDevserver(devServerUrl, asset) {\n return devServerUrl + getScaledAssetPath(asset) + '?hash=' + asset.hash;\n}\n\n/**\n * Returns a path like 'assets/AwesomeModule'\n */\nfunction getBasePath(asset) {\n // TODO(frantic): currently httpServerLocation is used both as\n // path in http URL and path within IPA. Should we have zipArchiveLocation?\n var path = asset.httpServerLocation;\n if (path[0] === '/') {\n path = path.substr(1);\n }\n return path;\n}\n\n/**\n * Returns a path like 'assets/AwesomeModule/icon@2x.png'\n */\nfunction getScaledAssetPath(asset) {\n var scale = pickScale(asset.scales, PixelRatio.get());\n var scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';\n var assetDir = getBasePath(asset);\n return assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type;\n}\n\nfunction pickScale(scales, deviceScale) {\n // Packager guarantees that `scales` array is sorted\n for (var i = 0; i < scales.length; i++) {\n if (scales[i] >= deviceScale) {\n return scales[i];\n }\n }\n\n // If nothing matches, device scale is larger than any available\n // scales, so we return the biggest one. Unless the array is empty,\n // in which case we default to 1\n return scales[scales.length - 1] || 1;\n}\n\nfunction resolveAssetSource(source) {\n if (typeof source === 'object') {\n return source;\n }\n\n var asset = AssetRegistry.getAssetByID(source);\n if (asset) {\n return assetToImageSource(asset);\n }\n\n return null;\n}\n\nfunction assetToImageSource(asset) {\n var devServerURL = getDevServerURL();\n if (devServerURL) {\n return {\n width: asset.width,\n height: asset.height,\n uri: getPathOnDevserver(devServerURL, asset),\n isStatic: false,\n };\n } else {\n return {\n width: asset.width,\n height: asset.height,\n uri: getPathInArchive(asset),\n isStatic: true,\n };\n }\n}\n\nmodule.exports = resolveAssetSource;\nmodule.exports.pickScale = pickScale;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/resolveAssetSource.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/AssetRegistry.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\nvar assets=[];\n\nfunction registerAsset(asset){\n\n\nreturn assets.push(asset);}\n\n\nfunction getAssetByID(assetId){\nreturn assets[assetId - 1];}\n\n\nmodule.exports = {registerAsset:registerAsset,getAssetByID:getAssetByID};","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule AssetRegistry\n */\n'use strict';\n\nvar assets = [];\n\nfunction registerAsset(asset) {\n // `push` returns new array length, so the first asset will\n // get id 1 (not 0) to make the value truthy\n return assets.push(asset);\n}\n\nfunction getAssetByID(assetId) {\n return assets[assetId - 1];\n}\n\nmodule.exports = { registerAsset, getAssetByID };\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/AssetRegistry.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/PixelRatio.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nPixelRatio=(function(){function PixelRatio(){_classCallCheck(this,PixelRatio);}_createClass(PixelRatio,null,[{key:'get',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction get(){\nreturn Dimensions.get('window').scale;}},{key:'getFontScale',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getFontScale(){\nreturn Dimensions.get('window').fontScale || PixelRatio.get();}},{key:'getPixelSizeForLayoutSize',value:\n\n\n\n\n\n\n\nfunction getPixelSizeForLayoutSize(layoutSize){\nreturn Math.round(layoutSize * PixelRatio.get());}},{key:'startDetecting',value:\n\n\n\nfunction startDetecting(){}}]);return PixelRatio;})();\n\n\nmodule.exports = PixelRatio;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PixelRatio\n * @flow\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\n\n/**\n * PixelRatio class gives access to the device pixel density.\n *\n * There are a few use cases for using PixelRatio:\n *\n * ### Displaying a line that's as thin as the device permits\n *\n * A width of 1 is actually pretty thick on an iPhone 4+, we can do one that's\n * thinner using a width of `1 / PixelRatio.get()`. It's a technique that works\n * on all the devices independent of their pixel density.\n *\n * ```\n * style={{ borderWidth: 1 / PixelRatio.get() }}\n * ```\n *\n * ### Fetching a correctly sized image\n *\n * You should get a higher resolution image if you are on a high pixel density\n * device. A good rule of thumb is to multiply the size of the image you display\n * by the pixel ratio.\n *\n * ```\n * var image = getImage({\n * width: PixelRatio.getPixelSizeForLayoutSize(200),\n * height: PixelRatio.getPixelSizeForLayoutSize(100),\n * });\n * <Image source={image} style={{width: 200, height: 100}} />\n * ```\n */\nclass PixelRatio {\n /**\n * Returns the device pixel density. Some examples:\n *\n * - PixelRatio.get() === 2\n * - iPhone 4, 4S\n * - iPhone 5, 5c, 5s\n * - iPhone 6\n * - PixelRatio.get() === 3\n * - iPhone 6 plus\n * - PixelRatio.get() === 3.5\n * - Nexus 6\n */\n static get(): number {\n return Dimensions.get('window').scale;\n }\n\n /**\n * Returns the scaling factor for font sizes. This is the ratio that is used to calculate the\n * absolute font size, so any elements that heavily depend on that should use this to do\n * calculations.\n *\n * If a font scale is not set, this returns the device pixel ratio.\n *\n * Currently this is only implemented on Android and reflects the user preference set in\n * Settings > Display > Font size, on iOS it will always return the default pixel ratio.\n */\n static getFontScale(): number {\n return Dimensions.get('window').fontScale || PixelRatio.get();\n }\n\n /**\n * Converts a layout size (dp) to pixel size (px).\n *\n * Guaranteed to return an integer number.\n */\n static getPixelSizeForLayoutSize(layoutSize: number): number {\n return Math.round(layoutSize * PixelRatio.get());\n }\n\n // No-op for iOS, but used on the web. Should not be documented.\n static startDetecting() {}\n}\n\nmodule.exports = PixelRatio;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/PixelRatio.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/Dimensions.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('NativeModules');\n\nvar invariant=require('invariant');\n\nvar dimensions=NativeModules.UIManager.Dimensions;\n\n\n\n\nif(dimensions && dimensions.windowPhysicalPixels){\n\ndimensions = JSON.parse(JSON.stringify(dimensions));\n\nvar windowPhysicalPixels=dimensions.windowPhysicalPixels;\ndimensions.window = {\nwidth:windowPhysicalPixels.width / windowPhysicalPixels.scale,\nheight:windowPhysicalPixels.height / windowPhysicalPixels.scale,\nscale:windowPhysicalPixels.scale,\nfontScale:windowPhysicalPixels.fontScale};\n\n\n\ndelete dimensions.windowPhysicalPixels;}var \n\n\nDimensions=(function(){function Dimensions(){_classCallCheck(this,Dimensions);}_createClass(Dimensions,null,[{key:'set',value:\n\n\n\n\n\nfunction set(dims){\nObject.assign(dimensions,dims);\nreturn true;}},{key:'get',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction get(dim){\ninvariant(dimensions[dim],'No dimension set for key ' + dim);\nreturn dimensions[dim];}}]);return Dimensions;})();\n\n\n\nmodule.exports = Dimensions;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dimensions\n * @flow\n */\n'use strict';\n\nvar NativeModules = require('NativeModules');\n\nvar invariant = require('invariant');\n\nvar dimensions = NativeModules.UIManager.Dimensions;\n\n// We calculate the window dimensions in JS so that we don't encounter loss of\n// precision in transferring the dimensions (which could be non-integers) over\n// the bridge.\nif (dimensions && dimensions.windowPhysicalPixels) {\n // parse/stringify => Clone hack\n dimensions = JSON.parse(JSON.stringify(dimensions));\n\n var windowPhysicalPixels = dimensions.windowPhysicalPixels;\n dimensions.window = {\n width: windowPhysicalPixels.width / windowPhysicalPixels.scale,\n height: windowPhysicalPixels.height / windowPhysicalPixels.scale,\n scale: windowPhysicalPixels.scale,\n fontScale: windowPhysicalPixels.fontScale,\n };\n\n // delete so no callers rely on this existing\n delete dimensions.windowPhysicalPixels;\n}\n\nclass Dimensions {\n /**\n * This should only be called from native code.\n *\n * @param {object} dims Simple string-keyed object of dimensions to set\n */\n static set(dims: {[key:string]: any}): bool {\n Object.assign(dimensions, dims);\n return true;\n }\n\n /**\n * Initial dimensions are set before `runApplication` is called so they should\n * be available before any other require's are run, but may be updated later.\n *\n * Note: Although dimensions are available immediately, they may change (e.g\n * due to device rotation) so any rendering logic or styles that depend on\n * these constants should try to call this function on every render, rather\n * than caching the value (for example, using inline styles rather than\n * setting a value in a `StyleSheet`).\n *\n * @param {string} dim Name of dimension as defined when calling `set`.\n * @returns {Object?} Value for the dimension.\n */\n static get(dim: string): Object {\n invariant(dimensions[dim], 'No dimension set for key ' + dim);\n return dimensions[dim];\n }\n}\n\nmodule.exports = Dimensions;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/Dimensions.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/ListView/ListView.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};function _objectWithoutProperties(obj,keys){var target={};for(var i in obj) {if(keys.indexOf(i) >= 0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i] = obj[i];}return target;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ListViewDataSource=require('ListViewDataSource');\nvar React=require('React');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar RKScrollViewManager=require('NativeModules').ScrollViewManager;\nvar ScrollView=require('ScrollView');\nvar ScrollResponder=require('ScrollResponder');\nvar StaticRenderer=require('StaticRenderer');\nvar TimerMixin=require('react-timer-mixin');\n\nvar isEmpty=require('isEmpty');\nvar logError=require('logError');\nvar merge=require('merge');\n\nvar PropTypes=React.PropTypes;\n\nvar DEFAULT_PAGE_SIZE=1;\nvar DEFAULT_INITIAL_ROWS=10;\nvar DEFAULT_SCROLL_RENDER_AHEAD=1000;\nvar DEFAULT_END_REACHED_THRESHOLD=1000;\nvar DEFAULT_SCROLL_CALLBACK_THROTTLE=50;\nvar SCROLLVIEW_REF='listviewscroll';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ListView=React.createClass({displayName:'ListView',\nmixins:[ScrollResponder.Mixin,TimerMixin],\n\nstatics:{\nDataSource:ListViewDataSource},\n\n\n\n\n\n\n\n\n\npropTypes:_extends({},\nScrollView.propTypes,{\n\ndataSource:PropTypes.instanceOf(ListViewDataSource).isRequired,\n\n\n\n\n\n\n\nrenderSeparator:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\nrenderRow:PropTypes.func.isRequired,\n\n\n\n\n\ninitialListSize:PropTypes.number,\n\n\n\n\n\nonEndReached:PropTypes.func,\n\n\n\nonEndReachedThreshold:PropTypes.number,\n\n\n\npageSize:PropTypes.number,\n\n\n\n\n\n\n\n\nrenderFooter:PropTypes.func,\nrenderHeader:PropTypes.func,\n\n\n\n\n\n\n\n\n\nrenderSectionHeader:PropTypes.func,\n\n\n\n\n\n\nrenderScrollComponent:React.PropTypes.func.isRequired,\n\n\n\n\nscrollRenderAheadDistance:React.PropTypes.number,\n\n\n\n\n\n\n\n\n\nonChangeVisibleRows:React.PropTypes.func,\n\n\n\n\n\nremoveClippedSubviews:React.PropTypes.bool}),\n\n\n\n\n\ngetMetrics:function(){\nreturn {\ncontentHeight:this.scrollProperties.contentHeight,\ntotalRows:this.props.dataSource.getRowCount(),\nrenderedRows:this.state.curRenderedRowsCount,\nvisibleRows:Object.keys(this._visibleRows).length};},\n\n\n\n\n\n\n\ngetScrollResponder:function(){\nreturn this.refs[SCROLLVIEW_REF] && \nthis.refs[SCROLLVIEW_REF].getScrollResponder && \nthis.refs[SCROLLVIEW_REF].getScrollResponder();},\n\n\nsetNativeProps:function(props){\nthis.refs[SCROLLVIEW_REF].setNativeProps(props);},\n\n\n\n\n\n\ngetDefaultProps:function(){\nreturn {\ninitialListSize:DEFAULT_INITIAL_ROWS,\npageSize:DEFAULT_PAGE_SIZE,\nrenderScrollComponent:function(props){return React.createElement(ScrollView,props);},\nscrollRenderAheadDistance:DEFAULT_SCROLL_RENDER_AHEAD,\nonEndReachedThreshold:DEFAULT_END_REACHED_THRESHOLD};},\n\n\n\ngetInitialState:function(){\nreturn {\ncurRenderedRowsCount:this.props.initialListSize,\nprevRenderedRowsCount:0,\nhighlightedRow:{}};},\n\n\n\ncomponentWillMount:function(){\n\nthis.scrollProperties = {\nvisibleHeight:null,\ncontentHeight:null,\noffsetY:0};\n\nthis._childFrames = [];\nthis._visibleRows = {};},\n\n\ncomponentDidMount:function(){var _this=this;\n\n\nthis.requestAnimationFrame(function(){\n_this._measureAndUpdateScrollProps();});},\n\n\n\ncomponentWillReceiveProps:function(nextProps){\nif(this.props.dataSource !== nextProps.dataSource){\nthis.setState(function(state,props){\nvar rowsToRender=Math.min(\nstate.curRenderedRowsCount + props.pageSize,\nprops.dataSource.getRowCount());\n\nreturn {\nprevRenderedRowsCount:0,\ncurRenderedRowsCount:rowsToRender};});}},\n\n\n\n\n\ncomponentDidUpdate:function(){var _this2=this;\nthis.requestAnimationFrame(function(){\n_this2._measureAndUpdateScrollProps();});},\n\n\n\nonRowHighlighted:function(sectionID,rowID){\nthis.setState({highlightedRow:{sectionID:sectionID,rowID:rowID}});},\n\n\nrender:function(){\nvar bodyComponents=[];\n\nvar dataSource=this.props.dataSource;\nvar allRowIDs=dataSource.rowIdentities;\nvar rowCount=0;\nvar sectionHeaderIndices=[];\n\nvar header=this.props.renderHeader && this.props.renderHeader();\nvar footer=this.props.renderFooter && this.props.renderFooter();\nvar totalIndex=header?1:0;\n\nfor(var sectionIdx=0;sectionIdx < allRowIDs.length;sectionIdx++) {\nvar sectionID=dataSource.sectionIdentities[sectionIdx];\nvar rowIDs=allRowIDs[sectionIdx];\nif(rowIDs.length === 0){\ncontinue;}\n\n\nif(this.props.renderSectionHeader){\nvar shouldUpdateHeader=rowCount >= this.state.prevRenderedRowsCount && \ndataSource.sectionHeaderShouldUpdate(sectionIdx);\nbodyComponents.push(\nReact.createElement(StaticRenderer,{\nkey:'s_' + sectionID,\nshouldUpdate:!!shouldUpdateHeader,\nrender:this.props.renderSectionHeader.bind(\nnull,\ndataSource.getSectionHeaderData(sectionIdx),\nsectionID)}));\n\n\n\nsectionHeaderIndices.push(totalIndex++);}\n\n\nfor(var rowIdx=0;rowIdx < rowIDs.length;rowIdx++) {\nvar rowID=rowIDs[rowIdx];\nvar comboID=sectionID + rowID;\nvar shouldUpdateRow=rowCount >= this.state.prevRenderedRowsCount && \ndataSource.rowShouldUpdate(sectionIdx,rowIdx);\nvar row=\nReact.createElement(StaticRenderer,{\nkey:'r_' + comboID,\nshouldUpdate:!!shouldUpdateRow,\nrender:this.props.renderRow.bind(\nnull,\ndataSource.getRowData(sectionIdx,rowIdx),\nsectionID,\nrowID,\nthis.onRowHighlighted)});\n\n\nbodyComponents.push(row);\ntotalIndex++;\n\nif(this.props.renderSeparator && (\nrowIdx !== rowIDs.length - 1 || sectionIdx === allRowIDs.length - 1)){\nvar adjacentRowHighlighted=\nthis.state.highlightedRow.sectionID === sectionID && (\nthis.state.highlightedRow.rowID === rowID || \nthis.state.highlightedRow.rowID === rowIDs[rowIdx + 1]);\n\nvar separator=this.props.renderSeparator(\nsectionID,\nrowID,\nadjacentRowHighlighted);\n\nbodyComponents.push(separator);\ntotalIndex++;}\n\nif(++rowCount === this.state.curRenderedRowsCount){\nbreak;}}\n\n\nif(rowCount >= this.state.curRenderedRowsCount){\nbreak;}}var _props=\n\n\n\n\n\n\nthis.props;var renderScrollComponent=_props.renderScrollComponent;var props=_objectWithoutProperties(_props,['renderScrollComponent']);\nif(!props.scrollEventThrottle){\nprops.scrollEventThrottle = DEFAULT_SCROLL_CALLBACK_THROTTLE;}\n\nObject.assign(props,{\nonScroll:this._onScroll,\nstickyHeaderIndices:sectionHeaderIndices,\nchildren:[header,bodyComponents,footer]});\n\n\n\n\nreturn React.cloneElement(renderScrollComponent(props),{\nref:SCROLLVIEW_REF});},\n\n\n\n\n\n\n\n_measureAndUpdateScrollProps:function(){\nvar scrollComponent=this.getScrollResponder();\nif(!scrollComponent || !scrollComponent.getInnerViewNode){\nreturn;}\n\nRCTUIManager.measureLayout(\nscrollComponent.getInnerViewNode(),\nReact.findNodeHandle(scrollComponent),\nlogError,\nthis._setScrollContentHeight);\n\nRCTUIManager.measureLayoutRelativeToParent(\nReact.findNodeHandle(scrollComponent),\nlogError,\nthis._setScrollVisibleHeight);\n\n\n\nRKScrollViewManager && RKScrollViewManager.calculateChildFrames && \nRKScrollViewManager.calculateChildFrames(\nReact.findNodeHandle(scrollComponent),\nthis._updateChildFrames);},\n\n\n\n_setScrollContentHeight:function(left,top,width,height){\nthis.scrollProperties.contentHeight = height;},\n\n\n_setScrollVisibleHeight:function(left,top,width,height){\nthis.scrollProperties.visibleHeight = height;\nthis._updateVisibleRows();\nthis._renderMoreRowsIfNeeded();},\n\n\n_updateChildFrames:function(childFrames){\nthis._updateVisibleRows(childFrames);},\n\n\n_renderMoreRowsIfNeeded:function(){\nif(this.scrollProperties.contentHeight === null || \nthis.scrollProperties.visibleHeight === null || \nthis.state.curRenderedRowsCount === this.props.dataSource.getRowCount()){\nreturn;}\n\n\nvar distanceFromEnd=this._getDistanceFromEnd(this.scrollProperties);\nif(distanceFromEnd < this.props.scrollRenderAheadDistance){\nthis._pageInNewRows();}},\n\n\n\n_pageInNewRows:function(){var _this3=this;\nthis.setState(function(state,props){\nvar rowsToRender=Math.min(\nstate.curRenderedRowsCount + props.pageSize,\nprops.dataSource.getRowCount());\n\nreturn {\nprevRenderedRowsCount:state.curRenderedRowsCount,\ncurRenderedRowsCount:rowsToRender};},\n\nfunction(){\n_this3._measureAndUpdateScrollProps();\n_this3.setState(function(state){return {\nprevRenderedRowsCount:state.curRenderedRowsCount};});});},\n\n\n\n\n_getDistanceFromEnd:function(scrollProperties){\nreturn scrollProperties.contentHeight - \nscrollProperties.visibleHeight - \nscrollProperties.offsetY;},\n\n\n_updateVisibleRows:function(updatedFrames){var _this4=this;\nif(!this.props.onChangeVisibleRows){\nreturn;}\n\nif(updatedFrames){\nupdatedFrames.forEach(function(newFrame){\n_this4._childFrames[newFrame.index] = merge(newFrame);});}\n\n\nvar dataSource=this.props.dataSource;\nvar visibleTop=this.scrollProperties.offsetY;\nvar visibleBottom=visibleTop + this.scrollProperties.visibleHeight;\nvar allRowIDs=dataSource.rowIdentities;\n\nvar header=this.props.renderHeader && this.props.renderHeader();\nvar totalIndex=header?1:0;\nvar visibilityChanged=false;\nvar changedRows={};\nfor(var sectionIdx=0;sectionIdx < allRowIDs.length;sectionIdx++) {\nvar rowIDs=allRowIDs[sectionIdx];\nif(rowIDs.length === 0){\ncontinue;}\n\nvar sectionID=dataSource.sectionIdentities[sectionIdx];\nif(this.props.renderSectionHeader){\ntotalIndex++;}\n\nvar visibleSection=this._visibleRows[sectionID];\nif(!visibleSection){\nvisibleSection = {};}\n\nfor(var rowIdx=0;rowIdx < rowIDs.length;rowIdx++) {\nvar rowID=rowIDs[rowIdx];\nvar frame=this._childFrames[totalIndex];\ntotalIndex++;\nif(!frame){\nbreak;}\n\nvar rowVisible=visibleSection[rowID];\nvar top=frame.y;\nvar bottom=top + frame.height;\nif(top > visibleBottom || bottom < visibleTop){\nif(rowVisible){\nvisibilityChanged = true;\ndelete visibleSection[rowID];\nif(!changedRows[sectionID]){\nchangedRows[sectionID] = {};}\n\nchangedRows[sectionID][rowID] = false;}}else \n\nif(!rowVisible){\nvisibilityChanged = true;\nvisibleSection[rowID] = true;\nif(!changedRows[sectionID]){\nchangedRows[sectionID] = {};}\n\nchangedRows[sectionID][rowID] = true;}}\n\n\nif(!isEmpty(visibleSection)){\nthis._visibleRows[sectionID] = visibleSection;}else \nif(this._visibleRows[sectionID]){\ndelete this._visibleRows[sectionID];}}\n\n\nvisibilityChanged && this.props.onChangeVisibleRows(this._visibleRows,changedRows);},\n\n\n_onScroll:function(e){\nthis.scrollProperties.visibleHeight = e.nativeEvent.layoutMeasurement.height;\nthis.scrollProperties.contentHeight = e.nativeEvent.contentSize.height;\nthis.scrollProperties.offsetY = e.nativeEvent.contentOffset.y;\nthis._updateVisibleRows(e.nativeEvent.updatedChildFrames);\nvar nearEnd=this._getDistanceFromEnd(this.scrollProperties) < this.props.onEndReachedThreshold;\nif(nearEnd && \nthis.props.onEndReached && \nthis.scrollProperties.contentHeight !== this._sentEndForContentHeight && \nthis.state.curRenderedRowsCount === this.props.dataSource.getRowCount()){\nthis._sentEndForContentHeight = this.scrollProperties.contentHeight;\nthis.props.onEndReached(e);}else \n{\nthis._renderMoreRowsIfNeeded();}\n\n\nthis.props.onScroll && this.props.onScroll(e);}});\n\n\n\nmodule.exports = ListView;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule ListView\n */\n'use strict';\n\nvar ListViewDataSource = require('ListViewDataSource');\nvar React = require('React');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar RKScrollViewManager = require('NativeModules').ScrollViewManager;\nvar ScrollView = require('ScrollView');\nvar ScrollResponder = require('ScrollResponder');\nvar StaticRenderer = require('StaticRenderer');\nvar TimerMixin = require('react-timer-mixin');\n\nvar isEmpty = require('isEmpty');\nvar logError = require('logError');\nvar merge = require('merge');\n\nvar PropTypes = React.PropTypes;\n\nvar DEFAULT_PAGE_SIZE = 1;\nvar DEFAULT_INITIAL_ROWS = 10;\nvar DEFAULT_SCROLL_RENDER_AHEAD = 1000;\nvar DEFAULT_END_REACHED_THRESHOLD = 1000;\nvar DEFAULT_SCROLL_CALLBACK_THROTTLE = 50;\nvar SCROLLVIEW_REF = 'listviewscroll';\n\n\n/**\n * ListView - A core component designed for efficient display of vertically\n * scrolling lists of changing data. The minimal API is to create a\n * `ListView.DataSource`, populate it with a simple array of data blobs, and\n * instantiate a `ListView` component with that data source and a `renderRow`\n * callback which takes a blob from the data array and returns a renderable\n * component.\n *\n * Minimal example:\n *\n * ```\n * getInitialState: function() {\n * var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});\n * return {\n * dataSource: ds.cloneWithRows(['row 1', 'row 2']),\n * };\n * },\n *\n * render: function() {\n * return (\n * <ListView\n * dataSource={this.state.dataSource}\n * renderRow={(rowData) => <Text>{rowData}</Text>}\n * />\n * );\n * },\n * ```\n *\n * ListView also supports more advanced features, including sections with sticky\n * section headers, header and footer support, callbacks on reaching the end of\n * the available data (`onEndReached`) and on the set of rows that are visible\n * in the device viewport change (`onChangeVisibleRows`), and several\n * performance optimizations.\n *\n * There are a few performance operations designed to make ListView scroll\n * smoothly while dynamically loading potentially very large (or conceptually\n * infinite) data sets:\n *\n * * Only re-render changed rows - the rowHasChanged function provided to the\n * data source tells the ListView if it needs to re-render a row because the\n * source data has changed - see ListViewDataSource for more details.\n *\n * * Rate-limited row rendering - By default, only one row is rendered per\n * event-loop (customizable with the `pageSize` prop). This breaks up the\n * work into smaller chunks to reduce the chance of dropping frames while\n * rendering rows.\n */\n\nvar ListView = React.createClass({\n mixins: [ScrollResponder.Mixin, TimerMixin],\n\n statics: {\n DataSource: ListViewDataSource,\n },\n\n /**\n * You must provide a renderRow function. If you omit any of the other render\n * functions, ListView will simply skip rendering them.\n *\n * - renderRow(rowData, sectionID, rowID, highlightRow);\n * - renderSectionHeader(sectionData, sectionID);\n */\n propTypes: {\n ...ScrollView.propTypes,\n\n dataSource: PropTypes.instanceOf(ListViewDataSource).isRequired,\n /**\n * (sectionID, rowID, adjacentRowHighlighted) => renderable\n * If provided, a renderable component to be rendered as the separator\n * below each row but not the last row if there is a section header below.\n * Take a sectionID and rowID of the row above and whether its adjacent row\n * is highlighted.\n */\n renderSeparator: PropTypes.func,\n /**\n * (rowData, sectionID, rowID, highlightRow) => renderable\n * Takes a data entry from the data source and its ids and should return\n * a renderable component to be rendered as the row. By default the data\n * is exactly what was put into the data source, but it's also possible to\n * provide custom extractors. ListView can be notified when a row is\n * being highlighted by calling highlightRow function. The separators above and\n * below will be hidden when a row is highlighted. The highlighted state of\n * a row can be reset by calling highlightRow(null).\n */\n renderRow: PropTypes.func.isRequired,\n /**\n * How many rows to render on initial component mount. Use this to make\n * it so that the first screen worth of data apears at one time instead of\n * over the course of multiple frames.\n */\n initialListSize: PropTypes.number,\n /**\n * Called when all rows have been rendered and the list has been scrolled\n * to within onEndReachedThreshold of the bottom. The native scroll\n * event is provided.\n */\n onEndReached: PropTypes.func,\n /**\n * Threshold in pixels for onEndReached.\n */\n onEndReachedThreshold: PropTypes.number,\n /**\n * Number of rows to render per event loop.\n */\n pageSize: PropTypes.number,\n /**\n * () => renderable\n *\n * The header and footer are always rendered (if these props are provided)\n * on every render pass. If they are expensive to re-render, wrap them\n * in StaticContainer or other mechanism as appropriate. Footer is always\n * at the bottom of the list, and header at the top, on every render pass.\n */\n renderFooter: PropTypes.func,\n renderHeader: PropTypes.func,\n /**\n * (sectionData, sectionID) => renderable\n *\n * If provided, a sticky header is rendered for this section. The sticky\n * behavior means that it will scroll with the content at the top of the\n * section until it reaches the top of the screen, at which point it will\n * stick to the top until it is pushed off the screen by the next section\n * header.\n */\n renderSectionHeader: PropTypes.func,\n /**\n * (props) => renderable\n *\n * A function that returns the scrollable component in which the list rows\n * are rendered. Defaults to returning a ScrollView with the given props.\n */\n renderScrollComponent: React.PropTypes.func.isRequired,\n /**\n * How early to start rendering rows before they come on screen, in\n * pixels.\n */\n scrollRenderAheadDistance: React.PropTypes.number,\n /**\n * (visibleRows, changedRows) => void\n *\n * Called when the set of visible rows changes. `visibleRows` maps\n * { sectionID: { rowID: true }} for all the visible rows, and\n * `changedRows` maps { sectionID: { rowID: true | false }} for the rows\n * that have changed their visibility, with true indicating visible, and\n * false indicating the view has moved out of view.\n */\n onChangeVisibleRows: React.PropTypes.func,\n /**\n * An experimental performance optimization for improving scroll perf of\n * large lists, used in conjunction with overflow: 'hidden' on the row\n * containers. Use at your own risk.\n */\n removeClippedSubviews: React.PropTypes.bool,\n },\n\n /**\n * Exports some data, e.g. for perf investigations or analytics.\n */\n getMetrics: function() {\n return {\n contentHeight: this.scrollProperties.contentHeight,\n totalRows: this.props.dataSource.getRowCount(),\n renderedRows: this.state.curRenderedRowsCount,\n visibleRows: Object.keys(this._visibleRows).length,\n };\n },\n\n /**\n * Provides a handle to the underlying scroll responder to support operations\n * such as scrollTo.\n */\n getScrollResponder: function() {\n return this.refs[SCROLLVIEW_REF] &&\n this.refs[SCROLLVIEW_REF].getScrollResponder &&\n this.refs[SCROLLVIEW_REF].getScrollResponder();\n },\n\n setNativeProps: function(props) {\n this.refs[SCROLLVIEW_REF].setNativeProps(props);\n },\n\n /**\n * React life cycle hooks.\n */\n\n getDefaultProps: function() {\n return {\n initialListSize: DEFAULT_INITIAL_ROWS,\n pageSize: DEFAULT_PAGE_SIZE,\n renderScrollComponent: props => <ScrollView {...props} />,\n scrollRenderAheadDistance: DEFAULT_SCROLL_RENDER_AHEAD,\n onEndReachedThreshold: DEFAULT_END_REACHED_THRESHOLD,\n };\n },\n\n getInitialState: function() {\n return {\n curRenderedRowsCount: this.props.initialListSize,\n prevRenderedRowsCount: 0,\n highlightedRow: {},\n };\n },\n\n componentWillMount: function() {\n // this data should never trigger a render pass, so don't put in state\n this.scrollProperties = {\n visibleHeight: null,\n contentHeight: null,\n offsetY: 0\n };\n this._childFrames = [];\n this._visibleRows = {};\n },\n\n componentDidMount: function() {\n // do this in animation frame until componentDidMount actually runs after\n // the component is laid out\n this.requestAnimationFrame(() => {\n this._measureAndUpdateScrollProps();\n });\n },\n\n componentWillReceiveProps: function(nextProps) {\n if (this.props.dataSource !== nextProps.dataSource) {\n this.setState((state, props) => {\n var rowsToRender = Math.min(\n state.curRenderedRowsCount + props.pageSize,\n props.dataSource.getRowCount()\n );\n return {\n prevRenderedRowsCount: 0,\n curRenderedRowsCount: rowsToRender,\n };\n });\n }\n },\n\n componentDidUpdate: function() {\n this.requestAnimationFrame(() => {\n this._measureAndUpdateScrollProps();\n });\n },\n\n onRowHighlighted: function(sectionID, rowID) {\n this.setState({highlightedRow: {sectionID, rowID}});\n },\n\n render: function() {\n var bodyComponents = [];\n\n var dataSource = this.props.dataSource;\n var allRowIDs = dataSource.rowIdentities;\n var rowCount = 0;\n var sectionHeaderIndices = [];\n\n var header = this.props.renderHeader && this.props.renderHeader();\n var footer = this.props.renderFooter && this.props.renderFooter();\n var totalIndex = header ? 1 : 0;\n\n for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n var sectionID = dataSource.sectionIdentities[sectionIdx];\n var rowIDs = allRowIDs[sectionIdx];\n if (rowIDs.length === 0) {\n continue;\n }\n\n if (this.props.renderSectionHeader) {\n var shouldUpdateHeader = rowCount >= this.state.prevRenderedRowsCount &&\n dataSource.sectionHeaderShouldUpdate(sectionIdx);\n bodyComponents.push(\n <StaticRenderer\n key={'s_' + sectionID}\n shouldUpdate={!!shouldUpdateHeader}\n render={this.props.renderSectionHeader.bind(\n null,\n dataSource.getSectionHeaderData(sectionIdx),\n sectionID\n )}\n />\n );\n sectionHeaderIndices.push(totalIndex++);\n }\n\n for (var rowIdx = 0; rowIdx < rowIDs.length; rowIdx++) {\n var rowID = rowIDs[rowIdx];\n var comboID = sectionID + rowID;\n var shouldUpdateRow = rowCount >= this.state.prevRenderedRowsCount &&\n dataSource.rowShouldUpdate(sectionIdx, rowIdx);\n var row =\n <StaticRenderer\n key={'r_' + comboID}\n shouldUpdate={!!shouldUpdateRow}\n render={this.props.renderRow.bind(\n null,\n dataSource.getRowData(sectionIdx, rowIdx),\n sectionID,\n rowID,\n this.onRowHighlighted\n )}\n />;\n bodyComponents.push(row);\n totalIndex++;\n\n if (this.props.renderSeparator &&\n (rowIdx !== rowIDs.length - 1 || sectionIdx === allRowIDs.length - 1)) {\n var adjacentRowHighlighted =\n this.state.highlightedRow.sectionID === sectionID && (\n this.state.highlightedRow.rowID === rowID ||\n this.state.highlightedRow.rowID === rowIDs[rowIdx + 1]\n );\n var separator = this.props.renderSeparator(\n sectionID,\n rowID,\n adjacentRowHighlighted\n );\n bodyComponents.push(separator);\n totalIndex++;\n }\n if (++rowCount === this.state.curRenderedRowsCount) {\n break;\n }\n }\n if (rowCount >= this.state.curRenderedRowsCount) {\n break;\n }\n }\n\n var {\n renderScrollComponent,\n ...props,\n } = this.props;\n if (!props.scrollEventThrottle) {\n props.scrollEventThrottle = DEFAULT_SCROLL_CALLBACK_THROTTLE;\n }\n Object.assign(props, {\n onScroll: this._onScroll,\n stickyHeaderIndices: sectionHeaderIndices,\n children: [header, bodyComponents, footer],\n });\n\n // TODO(ide): Use function refs so we can compose with the scroll\n // component's original ref instead of clobbering it\n return React.cloneElement(renderScrollComponent(props), {\n ref: SCROLLVIEW_REF,\n });\n },\n\n /**\n * Private methods\n */\n\n _measureAndUpdateScrollProps: function() {\n var scrollComponent = this.getScrollResponder();\n if (!scrollComponent || !scrollComponent.getInnerViewNode) {\n return;\n }\n RCTUIManager.measureLayout(\n scrollComponent.getInnerViewNode(),\n React.findNodeHandle(scrollComponent),\n logError,\n this._setScrollContentHeight\n );\n RCTUIManager.measureLayoutRelativeToParent(\n React.findNodeHandle(scrollComponent),\n logError,\n this._setScrollVisibleHeight\n );\n\n // RKScrollViewManager.calculateChildFrames not available on every platform\n RKScrollViewManager && RKScrollViewManager.calculateChildFrames &&\n RKScrollViewManager.calculateChildFrames(\n React.findNodeHandle(scrollComponent),\n this._updateChildFrames,\n );\n },\n\n _setScrollContentHeight: function(left, top, width, height) {\n this.scrollProperties.contentHeight = height;\n },\n\n _setScrollVisibleHeight: function(left, top, width, height) {\n this.scrollProperties.visibleHeight = height;\n this._updateVisibleRows();\n this._renderMoreRowsIfNeeded();\n },\n\n _updateChildFrames: function(childFrames) {\n this._updateVisibleRows(childFrames);\n },\n\n _renderMoreRowsIfNeeded: function() {\n if (this.scrollProperties.contentHeight === null ||\n this.scrollProperties.visibleHeight === null ||\n this.state.curRenderedRowsCount === this.props.dataSource.getRowCount()) {\n return;\n }\n\n var distanceFromEnd = this._getDistanceFromEnd(this.scrollProperties);\n if (distanceFromEnd < this.props.scrollRenderAheadDistance) {\n this._pageInNewRows();\n }\n },\n\n _pageInNewRows: function() {\n this.setState((state, props) => {\n var rowsToRender = Math.min(\n state.curRenderedRowsCount + props.pageSize,\n props.dataSource.getRowCount()\n );\n return {\n prevRenderedRowsCount: state.curRenderedRowsCount,\n curRenderedRowsCount: rowsToRender\n };\n }, () => {\n this._measureAndUpdateScrollProps();\n this.setState(state => ({\n prevRenderedRowsCount: state.curRenderedRowsCount,\n }));\n });\n },\n\n _getDistanceFromEnd: function(scrollProperties) {\n return scrollProperties.contentHeight -\n scrollProperties.visibleHeight -\n scrollProperties.offsetY;\n },\n\n _updateVisibleRows: function(updatedFrames) {\n if (!this.props.onChangeVisibleRows) {\n return; // No need to compute visible rows if there is no callback\n }\n if (updatedFrames) {\n updatedFrames.forEach((newFrame) => {\n this._childFrames[newFrame.index] = merge(newFrame);\n });\n }\n var dataSource = this.props.dataSource;\n var visibleTop = this.scrollProperties.offsetY;\n var visibleBottom = visibleTop + this.scrollProperties.visibleHeight;\n var allRowIDs = dataSource.rowIdentities;\n\n var header = this.props.renderHeader && this.props.renderHeader();\n var totalIndex = header ? 1 : 0;\n var visibilityChanged = false;\n var changedRows = {};\n for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n var rowIDs = allRowIDs[sectionIdx];\n if (rowIDs.length === 0) {\n continue;\n }\n var sectionID = dataSource.sectionIdentities[sectionIdx];\n if (this.props.renderSectionHeader) {\n totalIndex++;\n }\n var visibleSection = this._visibleRows[sectionID];\n if (!visibleSection) {\n visibleSection = {};\n }\n for (var rowIdx = 0; rowIdx < rowIDs.length; rowIdx++) {\n var rowID = rowIDs[rowIdx];\n var frame = this._childFrames[totalIndex];\n totalIndex++;\n if (!frame) {\n break;\n }\n var rowVisible = visibleSection[rowID];\n var top = frame.y;\n var bottom = top + frame.height;\n if (top > visibleBottom || bottom < visibleTop) {\n if (rowVisible) {\n visibilityChanged = true;\n delete visibleSection[rowID];\n if (!changedRows[sectionID]) {\n changedRows[sectionID] = {};\n }\n changedRows[sectionID][rowID] = false;\n }\n } else if (!rowVisible) {\n visibilityChanged = true;\n visibleSection[rowID] = true;\n if (!changedRows[sectionID]) {\n changedRows[sectionID] = {};\n }\n changedRows[sectionID][rowID] = true;\n }\n }\n if (!isEmpty(visibleSection)) {\n this._visibleRows[sectionID] = visibleSection;\n } else if (this._visibleRows[sectionID]) {\n delete this._visibleRows[sectionID];\n }\n }\n visibilityChanged && this.props.onChangeVisibleRows(this._visibleRows, changedRows);\n },\n\n _onScroll: function(e) {\n this.scrollProperties.visibleHeight = e.nativeEvent.layoutMeasurement.height;\n this.scrollProperties.contentHeight = e.nativeEvent.contentSize.height;\n this.scrollProperties.offsetY = e.nativeEvent.contentOffset.y;\n this._updateVisibleRows(e.nativeEvent.updatedChildFrames);\n var nearEnd = this._getDistanceFromEnd(this.scrollProperties) < this.props.onEndReachedThreshold;\n if (nearEnd &&\n this.props.onEndReached &&\n this.scrollProperties.contentHeight !== this._sentEndForContentHeight &&\n this.state.curRenderedRowsCount === this.props.dataSource.getRowCount()) {\n this._sentEndForContentHeight = this.scrollProperties.contentHeight;\n this.props.onEndReached(e);\n } else {\n this._renderMoreRowsIfNeeded();\n }\n\n this.props.onScroll && this.props.onScroll(e);\n },\n});\n\nmodule.exports = ListView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/ListView/ListView.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/ListView/ListViewDataSource.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar isEmpty=require('isEmpty');\nvar warning=require('warning');\n\nfunction defaultGetRowData(\ndataBlob,\nsectionID,\nrowID)\n{\nreturn dataBlob[sectionID][rowID];}\n\n\nfunction defaultGetSectionHeaderData(\ndataBlob,\nsectionID)\n{\nreturn dataBlob[sectionID];}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nListViewDataSource=(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ListViewDataSource(params){_classCallCheck(this,ListViewDataSource);\ninvariant(\nparams && typeof params.rowHasChanged === 'function',\n'Must provide a rowHasChanged function.');\n\nthis._rowHasChanged = params.rowHasChanged;\nthis._getRowData = params.getRowData || defaultGetRowData;\nthis._sectionHeaderHasChanged = params.sectionHeaderHasChanged;\nthis._getSectionHeaderData = \nparams.getSectionHeaderData || defaultGetSectionHeaderData;\n\nthis._dataBlob = null;\nthis._dirtyRows = [];\nthis._dirtySections = [];\nthis._cachedRowCount = 0;\n\n\n\nthis.rowIdentities = [];\nthis.sectionIdentities = [];}_createClass(ListViewDataSource,[{key:'cloneWithRows',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction cloneWithRows(\ndataBlob,\nrowIdentities)\n{\nvar rowIds=rowIdentities?[rowIdentities]:null;\nif(!this._sectionHeaderHasChanged){\nthis._sectionHeaderHasChanged = function(){return false;};}\n\nreturn this.cloneWithRowsAndSections({s1:dataBlob},['s1'],rowIds);}},{key:'cloneWithRowsAndSections',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction cloneWithRowsAndSections(\ndataBlob,\nsectionIdentities,\nrowIdentities)\n{\ninvariant(\ntypeof this._sectionHeaderHasChanged === 'function',\n'Must provide a sectionHeaderHasChanged function with section data.');\n\nvar newSource=new ListViewDataSource({\ngetRowData:this._getRowData,\ngetSectionHeaderData:this._getSectionHeaderData,\nrowHasChanged:this._rowHasChanged,\nsectionHeaderHasChanged:this._sectionHeaderHasChanged});\n\nnewSource._dataBlob = dataBlob;\nif(sectionIdentities){\nnewSource.sectionIdentities = sectionIdentities;}else \n{\nnewSource.sectionIdentities = Object.keys(dataBlob);}\n\nif(rowIdentities){\nnewSource.rowIdentities = rowIdentities;}else \n{\nnewSource.rowIdentities = [];\nnewSource.sectionIdentities.forEach(function(sectionID){\nnewSource.rowIdentities.push(Object.keys(dataBlob[sectionID]));});}\n\n\nnewSource._cachedRowCount = countRows(newSource.rowIdentities);\n\nnewSource._calculateDirtyArrays(\nthis._dataBlob,\nthis.sectionIdentities,\nthis.rowIdentities);\n\n\nreturn newSource;}},{key:'getRowCount',value:\n\n\nfunction getRowCount(){\nreturn this._cachedRowCount;}},{key:'rowShouldUpdate',value:\n\n\n\n\n\nfunction rowShouldUpdate(sectionIndex,rowIndex){\nvar needsUpdate=this._dirtyRows[sectionIndex][rowIndex];\nwarning(needsUpdate !== undefined,\n'missing dirtyBit for section, row: ' + sectionIndex + ', ' + rowIndex);\nreturn needsUpdate;}},{key:'getRowData',value:\n\n\n\n\n\nfunction getRowData(sectionIndex,rowIndex){\nvar sectionID=this.sectionIdentities[sectionIndex];\nvar rowID=this.rowIdentities[sectionIndex][rowIndex];\nwarning(\nsectionID !== undefined && rowID !== undefined,\n'rendering invalid section, row: ' + sectionIndex + ', ' + rowIndex);\n\nreturn this._getRowData(this._dataBlob,sectionID,rowID);}},{key:'getRowIDForFlatIndex',value:\n\n\n\n\n\n\nfunction getRowIDForFlatIndex(index){\nvar accessIndex=index;\nfor(var ii=0;ii < this.sectionIdentities.length;ii++) {\nif(accessIndex >= this.rowIdentities[ii].length){\naccessIndex -= this.rowIdentities[ii].length;}else \n{\nreturn this.rowIdentities[ii][accessIndex];}}\n\n\nreturn null;}},{key:'getSectionIDForFlatIndex',value:\n\n\n\n\n\n\nfunction getSectionIDForFlatIndex(index){\nvar accessIndex=index;\nfor(var ii=0;ii < this.sectionIdentities.length;ii++) {\nif(accessIndex >= this.rowIdentities[ii].length){\naccessIndex -= this.rowIdentities[ii].length;}else \n{\nreturn this.sectionIdentities[ii];}}\n\n\nreturn null;}},{key:'getSectionLengths',value:\n\n\n\n\n\nfunction getSectionLengths(){\nvar results=[];\nfor(var ii=0;ii < this.sectionIdentities.length;ii++) {\nresults.push(this.rowIdentities[ii].length);}\n\nreturn results;}},{key:'sectionHeaderShouldUpdate',value:\n\n\n\n\n\nfunction sectionHeaderShouldUpdate(sectionIndex){\nvar needsUpdate=this._dirtySections[sectionIndex];\nwarning(needsUpdate !== undefined,\n'missing dirtyBit for section: ' + sectionIndex);\nreturn needsUpdate;}},{key:'getSectionHeaderData',value:\n\n\n\n\n\nfunction getSectionHeaderData(sectionIndex){\nif(!this._getSectionHeaderData){\nreturn null;}\n\nvar sectionID=this.sectionIdentities[sectionIndex];\nwarning(sectionID !== undefined,\n'renderSection called on invalid section: ' + sectionIndex);\nreturn this._getSectionHeaderData(this._dataBlob,sectionID);}},{key:'_calculateDirtyArrays',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _calculateDirtyArrays(\nprevDataBlob,\nprevSectionIDs,\nprevRowIDs)\n{\n\nvar prevSectionsHash=keyedDictionaryFromArray(prevSectionIDs);\nvar prevRowsHash={};\nfor(var ii=0;ii < prevRowIDs.length;ii++) {\nvar sectionID=prevSectionIDs[ii];\nwarning(\n!prevRowsHash[sectionID],\n'SectionID appears more than once: ' + sectionID);\n\nprevRowsHash[sectionID] = keyedDictionaryFromArray(prevRowIDs[ii]);}\n\n\n\nthis._dirtySections = [];\nthis._dirtyRows = [];\n\nvar dirty;\nfor(var sIndex=0;sIndex < this.sectionIdentities.length;sIndex++) {\nvar sectionID=this.sectionIdentities[sIndex];\n\ndirty = !prevSectionsHash[sectionID];\nvar sectionHeaderHasChanged=this._sectionHeaderHasChanged;\nif(!dirty && sectionHeaderHasChanged){\ndirty = sectionHeaderHasChanged(\nthis._getSectionHeaderData(prevDataBlob,sectionID),\nthis._getSectionHeaderData(this._dataBlob,sectionID));}\n\n\nthis._dirtySections.push(!!dirty);\n\nthis._dirtyRows[sIndex] = [];\nfor(var rIndex=0;rIndex < this.rowIdentities[sIndex].length;rIndex++) {\nvar rowID=this.rowIdentities[sIndex][rIndex];\n\ndirty = \n!prevSectionsHash[sectionID] || \n!prevRowsHash[sectionID][rowID] || \nthis._rowHasChanged(\nthis._getRowData(prevDataBlob,sectionID,rowID),\nthis._getRowData(this._dataBlob,sectionID,rowID));\n\nthis._dirtyRows[sIndex].push(!!dirty);}}}}]);return ListViewDataSource;})();\n\n\n\n\n\nfunction countRows(allRowIDs){\nvar totalRows=0;\nfor(var sectionIdx=0;sectionIdx < allRowIDs.length;sectionIdx++) {\nvar rowIDs=allRowIDs[sectionIdx];\ntotalRows += rowIDs.length;}\n\nreturn totalRows;}\n\n\nfunction keyedDictionaryFromArray(arr){\nif(isEmpty(arr)){\nreturn {};}\n\nvar result={};\nfor(var ii=0;ii < arr.length;ii++) {\nvar key=arr[ii];\nwarning(!result[key],'Value appears more than once in array: ' + key);\nresult[key] = true;}\n\nreturn result;}\n\n\n\nmodule.exports = ListViewDataSource;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule ListViewDataSource\n * @typechecks\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar isEmpty = require('isEmpty');\nvar warning = require('warning');\n\nfunction defaultGetRowData(\n dataBlob: any,\n sectionID: number | string,\n rowID: number | string\n): any {\n return dataBlob[sectionID][rowID];\n}\n\nfunction defaultGetSectionHeaderData(\n dataBlob: any,\n sectionID: number | string\n): any {\n return dataBlob[sectionID];\n}\n\ntype differType = (data1: any, data2: any) => bool;\n\ntype ParamType = {\n rowHasChanged: differType;\n getRowData: ?typeof defaultGetRowData;\n sectionHeaderHasChanged: ?differType;\n getSectionHeaderData: ?typeof defaultGetSectionHeaderData;\n}\n\n/**\n * Provides efficient data processing and access to the\n * `ListView` component. A `ListViewDataSource` is created with functions for\n * extracting data from the input blob, and comparing elements (with default\n * implementations for convenience). The input blob can be as simple as an\n * array of strings, or an object with rows nested inside section objects.\n *\n * To update the data in the datasource, use `cloneWithRows` (or\n * `cloneWithRowsAndSections` if you care about sections). The data in the\n * data source is immutable, so you can't modify it directly. The clone methods\n * suck in the new data and compute a diff for each row so ListView knows\n * whether to re-render it or not.\n *\n * In this example, a component receives data in chunks, handled by\n * `_onDataArrived`, which concats the new data onto the old data and updates the\n * data source. We use `concat` to create a new array - mutating `this._data`,\n * e.g. with `this._data.push(newRowData)`, would be an error. `_rowHasChanged`\n * understands the shape of the row data and knows how to efficiently compare\n * it.\n *\n * ```\n * getInitialState: function() {\n * var ds = new ListViewDataSource({rowHasChanged: this._rowHasChanged});\n * return {ds};\n * },\n * _onDataArrived(newData) {\n * this._data = this._data.concat(newData);\n * this.setState({\n * ds: this.state.ds.cloneWithRows(this._data)\n * });\n * }\n * ```\n */\n\nclass ListViewDataSource {\n\n /**\n * You can provide custom extraction and `hasChanged` functions for section\n * headers and rows. If absent, data will be extracted with the\n * `defaultGetRowData` and `defaultGetSectionHeaderData` functions.\n *\n * The default extractor expects data of one of the following forms:\n *\n * { sectionID_1: { rowID_1: <rowData1>, ... }, ... }\n *\n * or\n *\n * { sectionID_1: [ <rowData1>, <rowData2>, ... ], ... }\n *\n * or\n *\n * [ [ <rowData1>, <rowData2>, ... ], ... ]\n *\n * The constructor takes in a params argument that can contain any of the\n * following:\n *\n * - getRowData(dataBlob, sectionID, rowID);\n * - getSectionHeaderData(dataBlob, sectionID);\n * - rowHasChanged(prevRowData, nextRowData);\n * - sectionHeaderHasChanged(prevSectionData, nextSectionData);\n */\n constructor(params: ParamType) {\n invariant(\n params && typeof params.rowHasChanged === 'function',\n 'Must provide a rowHasChanged function.'\n );\n this._rowHasChanged = params.rowHasChanged;\n this._getRowData = params.getRowData || defaultGetRowData;\n this._sectionHeaderHasChanged = params.sectionHeaderHasChanged;\n this._getSectionHeaderData =\n params.getSectionHeaderData || defaultGetSectionHeaderData;\n\n this._dataBlob = null;\n this._dirtyRows = [];\n this._dirtySections = [];\n this._cachedRowCount = 0;\n\n // These two private variables are accessed by outsiders because ListView\n // uses them to iterate over the data in this class.\n this.rowIdentities = [];\n this.sectionIdentities = [];\n }\n\n /**\n * Clones this `ListViewDataSource` with the specified `dataBlob` and\n * `rowIdentities`. The `dataBlob` is just an aribitrary blob of data. At\n * construction an extractor to get the interesting informatoin was defined\n * (or the default was used).\n *\n * The `rowIdentities` is is a 2D array of identifiers for rows.\n * ie. [['a1', 'a2'], ['b1', 'b2', 'b3'], ...]. If not provided, it's\n * assumed that the keys of the section data are the row identities.\n *\n * Note: This function does NOT clone the data in this data source. It simply\n * passes the functions defined at construction to a new data source with\n * the data specified. If you wish to maintain the existing data you must\n * handle merging of old and new data separately and then pass that into\n * this function as the `dataBlob`.\n */\n cloneWithRows(\n dataBlob: Array<any> | {[key: string]: any},\n rowIdentities: ?Array<string>\n ): ListViewDataSource {\n var rowIds = rowIdentities ? [rowIdentities] : null;\n if (!this._sectionHeaderHasChanged) {\n this._sectionHeaderHasChanged = () => false;\n }\n return this.cloneWithRowsAndSections({s1: dataBlob}, ['s1'], rowIds);\n }\n\n /**\n * This performs the same function as the `cloneWithRows` function but here\n * you also specify what your `sectionIdentities` are. If you don't care\n * about sections you should safely be able to use `cloneWithRows`.\n *\n * `sectionIdentities` is an array of identifiers for sections.\n * ie. ['s1', 's2', ...]. If not provided, it's assumed that the\n * keys of dataBlob are the section identities.\n *\n * Note: this returns a new object!\n */\n cloneWithRowsAndSections(\n dataBlob: any,\n sectionIdentities: ?Array<string>,\n rowIdentities: ?Array<Array<string>>\n ): ListViewDataSource {\n invariant(\n typeof this._sectionHeaderHasChanged === 'function',\n 'Must provide a sectionHeaderHasChanged function with section data.'\n );\n var newSource = new ListViewDataSource({\n getRowData: this._getRowData,\n getSectionHeaderData: this._getSectionHeaderData,\n rowHasChanged: this._rowHasChanged,\n sectionHeaderHasChanged: this._sectionHeaderHasChanged,\n });\n newSource._dataBlob = dataBlob;\n if (sectionIdentities) {\n newSource.sectionIdentities = sectionIdentities;\n } else {\n newSource.sectionIdentities = Object.keys(dataBlob);\n }\n if (rowIdentities) {\n newSource.rowIdentities = rowIdentities;\n } else {\n newSource.rowIdentities = [];\n newSource.sectionIdentities.forEach((sectionID) => {\n newSource.rowIdentities.push(Object.keys(dataBlob[sectionID]));\n });\n }\n newSource._cachedRowCount = countRows(newSource.rowIdentities);\n\n newSource._calculateDirtyArrays(\n this._dataBlob,\n this.sectionIdentities,\n this.rowIdentities\n );\n\n return newSource;\n }\n\n getRowCount(): number {\n return this._cachedRowCount;\n }\n\n /**\n * Returns if the row is dirtied and needs to be rerendered\n */\n rowShouldUpdate(sectionIndex: number, rowIndex: number): bool {\n var needsUpdate = this._dirtyRows[sectionIndex][rowIndex];\n warning(needsUpdate !== undefined,\n 'missing dirtyBit for section, row: ' + sectionIndex + ', ' + rowIndex);\n return needsUpdate;\n }\n\n /**\n * Gets the data required to render the row.\n */\n getRowData(sectionIndex: number, rowIndex: number): any {\n var sectionID = this.sectionIdentities[sectionIndex];\n var rowID = this.rowIdentities[sectionIndex][rowIndex];\n warning(\n sectionID !== undefined && rowID !== undefined,\n 'rendering invalid section, row: ' + sectionIndex + ', ' + rowIndex\n );\n return this._getRowData(this._dataBlob, sectionID, rowID);\n }\n\n /**\n * Gets the rowID at index provided if the dataSource arrays were flattened,\n * or null of out of range indexes.\n */\n getRowIDForFlatIndex(index: number): ?string {\n var accessIndex = index;\n for (var ii = 0; ii < this.sectionIdentities.length; ii++) {\n if (accessIndex >= this.rowIdentities[ii].length) {\n accessIndex -= this.rowIdentities[ii].length;\n } else {\n return this.rowIdentities[ii][accessIndex];\n }\n }\n return null;\n }\n\n /**\n * Gets the sectionID at index provided if the dataSource arrays were flattened,\n * or null for out of range indexes.\n */\n getSectionIDForFlatIndex(index: number): ?string {\n var accessIndex = index;\n for (var ii = 0; ii < this.sectionIdentities.length; ii++) {\n if (accessIndex >= this.rowIdentities[ii].length) {\n accessIndex -= this.rowIdentities[ii].length;\n } else {\n return this.sectionIdentities[ii];\n }\n }\n return null;\n }\n\n /**\n * Returns an array containing the number of rows in each section\n */\n getSectionLengths(): Array<number> {\n var results = [];\n for (var ii = 0; ii < this.sectionIdentities.length; ii++) {\n results.push(this.rowIdentities[ii].length);\n }\n return results;\n }\n\n /**\n * Returns if the section header is dirtied and needs to be rerendered\n */\n sectionHeaderShouldUpdate(sectionIndex: number): bool {\n var needsUpdate = this._dirtySections[sectionIndex];\n warning(needsUpdate !== undefined,\n 'missing dirtyBit for section: ' + sectionIndex);\n return needsUpdate;\n }\n\n /**\n * Gets the data required to render the section header\n */\n getSectionHeaderData(sectionIndex: number): any {\n if (!this._getSectionHeaderData) {\n return null;\n }\n var sectionID = this.sectionIdentities[sectionIndex];\n warning(sectionID !== undefined,\n 'renderSection called on invalid section: ' + sectionIndex);\n return this._getSectionHeaderData(this._dataBlob, sectionID);\n }\n\n /**\n * Private members and methods.\n */\n\n _getRowData: typeof defaultGetRowData;\n _getSectionHeaderData: typeof defaultGetSectionHeaderData;\n _rowHasChanged: differType;\n _sectionHeaderHasChanged: ?differType;\n\n _dataBlob: any;\n _dirtyRows: Array<Array<bool>>;\n _dirtySections: Array<bool>;\n _cachedRowCount: number;\n\n // These two 'protected' variables are accessed by ListView to iterate over\n // the data in this class.\n rowIdentities: Array<Array<string>>;\n sectionIdentities: Array<string>;\n\n _calculateDirtyArrays(\n prevDataBlob: any,\n prevSectionIDs: Array<string>,\n prevRowIDs: Array<Array<string>>\n ): void {\n // construct a hashmap of the existing (old) id arrays\n var prevSectionsHash = keyedDictionaryFromArray(prevSectionIDs);\n var prevRowsHash = {};\n for (var ii = 0; ii < prevRowIDs.length; ii++) {\n var sectionID = prevSectionIDs[ii];\n warning(\n !prevRowsHash[sectionID],\n 'SectionID appears more than once: ' + sectionID\n );\n prevRowsHash[sectionID] = keyedDictionaryFromArray(prevRowIDs[ii]);\n }\n\n // compare the 2 identity array and get the dirtied rows\n this._dirtySections = [];\n this._dirtyRows = [];\n\n var dirty;\n for (var sIndex = 0; sIndex < this.sectionIdentities.length; sIndex++) {\n var sectionID = this.sectionIdentities[sIndex];\n // dirty if the sectionHeader is new or _sectionHasChanged is true\n dirty = !prevSectionsHash[sectionID];\n var sectionHeaderHasChanged = this._sectionHeaderHasChanged;\n if (!dirty && sectionHeaderHasChanged) {\n dirty = sectionHeaderHasChanged(\n this._getSectionHeaderData(prevDataBlob, sectionID),\n this._getSectionHeaderData(this._dataBlob, sectionID)\n );\n }\n this._dirtySections.push(!!dirty);\n\n this._dirtyRows[sIndex] = [];\n for (var rIndex = 0; rIndex < this.rowIdentities[sIndex].length; rIndex++) {\n var rowID = this.rowIdentities[sIndex][rIndex];\n // dirty if the section is new, row is new or _rowHasChanged is true\n dirty =\n !prevSectionsHash[sectionID] ||\n !prevRowsHash[sectionID][rowID] ||\n this._rowHasChanged(\n this._getRowData(prevDataBlob, sectionID, rowID),\n this._getRowData(this._dataBlob, sectionID, rowID)\n );\n this._dirtyRows[sIndex].push(!!dirty);\n }\n }\n }\n}\n\nfunction countRows(allRowIDs) {\n var totalRows = 0;\n for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n var rowIDs = allRowIDs[sectionIdx];\n totalRows += rowIDs.length;\n }\n return totalRows;\n}\n\nfunction keyedDictionaryFromArray(arr) {\n if (isEmpty(arr)) {\n return {};\n }\n var result = {};\n for (var ii = 0; ii < arr.length; ii++) {\n var key = arr[ii];\n warning(!result[key], 'Value appears more than once in array: ' + key);\n result[key] = true;\n }\n return result;\n}\n\n\nmodule.exports = ListViewDataSource;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/ListView/ListViewDataSource.js"},"mtime":1435359323000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/isEmpty.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nisEmpty(obj){\nif(Array.isArray(obj)){\nreturn obj.length === 0;}else \nif(typeof obj === 'object'){\nfor(var i in obj) {\nreturn false;}\n\nreturn true;}else \n{\nreturn !obj;}}\n\n\n\nmodule.exports = isEmpty;","sourceCode":"/**\n * @generated SignedSource<<97ffcebc9ae390e734026a4f3964bff6>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule isEmpty\n */\n\n/**\n * Mimics empty from PHP.\n */\nfunction isEmpty(obj) {\n if (Array.isArray(obj)) {\n return obj.length === 0;\n } else if (typeof obj === 'object') {\n for (var i in obj) {\n return false;\n }\n return true;\n } else {\n return !obj;\n }\n}\n\nmodule.exports = isEmpty;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/isEmpty.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar Platform=require('Platform');\nvar PointPropType=require('PointPropType');\nvar RCTScrollView=require('NativeModules').UIManager.RCTScrollView;\nvar RCTScrollViewConsts=RCTScrollView.Constants;\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar ScrollResponder=require('ScrollResponder');\nvar StyleSheet=require('StyleSheet');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar View=require('View');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar deepDiffer=require('deepDiffer');\nvar flattenStyle=require('flattenStyle');\nvar insetsDiffer=require('insetsDiffer');\nvar invariant=require('invariant');\nvar pointsDiffer=require('pointsDiffer');\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar PropTypes=React.PropTypes;\n\nvar SCROLLVIEW='ScrollView';\nvar INNERVIEW='InnerScrollView';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ScrollView=React.createClass({displayName:'ScrollView',\npropTypes:{\nautomaticallyAdjustContentInsets:PropTypes.bool,\ncontentInset:EdgeInsetsPropType,\ncontentOffset:PointPropType,\nonScroll:PropTypes.func,\nonScrollAnimationEnd:PropTypes.func,\nscrollEnabled:PropTypes.bool,\nscrollIndicatorInsets:EdgeInsetsPropType,\nshowsHorizontalScrollIndicator:PropTypes.bool,\nshowsVerticalScrollIndicator:PropTypes.bool,\nstyle:StyleSheetPropType(ViewStylePropTypes),\nscrollEventThrottle:PropTypes.number,\n\n\n\n\n\n\n\nbounces:PropTypes.bool,\n\n\n\n\n\nbouncesZoom:PropTypes.bool,\n\n\n\n\n\nalwaysBounceHorizontal:PropTypes.bool,\n\n\n\n\n\nalwaysBounceVertical:PropTypes.bool,\n\n\n\n\n\n\ncenterContent:PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncontentContainerStyle:StyleSheetPropType(ViewStylePropTypes),\n\n\n\n\n\n\ndecelerationRate:PropTypes.number,\n\n\n\n\nhorizontal:PropTypes.bool,\n\n\n\n\ndirectionalLockEnabled:PropTypes.bool,\n\n\n\n\ncanCancelContentTouches:PropTypes.bool,\n\n\n\n\n\n\n\n\nkeyboardDismissMode:PropTypes.oneOf([\n'none',\n'interactive',\n'on-drag']),\n\n\n\n\n\n\n\nkeyboardShouldPersistTaps:PropTypes.bool,\n\n\n\nmaximumZoomScale:PropTypes.number,\n\n\n\nminimumZoomScale:PropTypes.number,\n\n\n\n\n\npagingEnabled:PropTypes.bool,\n\n\n\n\nscrollsToTop:PropTypes.bool,\n\n\n\n\n\n\n\nstickyHeaderIndices:PropTypes.arrayOf(PropTypes.number),\n\n\n\n\n\n\nremoveClippedSubviews:PropTypes.bool,\n\n\n\nzoomScale:PropTypes.number},\n\n\nmixins:[ScrollResponder.Mixin],\n\ngetInitialState:function(){\nreturn this.scrollResponderMixinGetInitialState();},\n\n\nsetNativeProps:function(props){\nthis.refs[SCROLLVIEW].setNativeProps(props);},\n\n\n\n\n\n\n\n\ngetScrollResponder:function(){\nreturn this;},\n\n\ngetInnerViewNode:function(){\nreturn React.findNodeHandle(this.refs[INNERVIEW]);},\n\n\nscrollTo:function(destY,destX){\nif(Platform.OS === 'android'){\nRCTUIManager.dispatchViewManagerCommand(\nReact.findNodeHandle(this),\nRCTUIManager.RCTScrollView.Commands.scrollTo,\n[destX || 0,destY || 0]);}else \n\n{\nRCTUIManager.scrollTo(\nReact.findNodeHandle(this),\ndestX || 0,\ndestY || 0);}},\n\n\n\n\nscrollWithoutAnimationTo:function(destY,destX){\nRCTUIManager.scrollWithoutAnimationTo(\nReact.findNodeHandle(this),\ndestX || 0,\ndestY || 0);},\n\n\n\nrender:function(){\nvar contentContainerStyle=[\nthis.props.horizontal && styles.contentContainerHorizontal,\nthis.props.contentContainerStyle];\n\nif(__DEV__ && this.props.style){\nvar style=flattenStyle(this.props.style);\nvar childLayoutProps=['alignItems','justifyContent'].\nfilter(function(prop){return style && style[prop] !== undefined;});\ninvariant(\nchildLayoutProps.length === 0,\n'ScrollView child layout (' + JSON.stringify(childLayoutProps) + \n') must by applied through the contentContainerStyle prop.');}\n\n\nif(__DEV__){\nif(this.props.onScroll && !this.props.scrollEventThrottle){\nvar onScroll=this.props.onScroll;\nthis.props.onScroll = function(){\nconsole.log(\n'You specified `onScroll` on a <ScrollView> but not ' + \n'`scrollEventThrottle`. You will only receive one event. ' + \n'Using `16` you get all the events but be aware that it may ' + \n'cause frame drops, use a bigger number if you don\\'t need as ' + \n'much precision.');\n\nonScroll.apply(this,arguments);};}}\n\n\n\n\nvar contentContainer=\nReact.createElement(View,{\nref:INNERVIEW,\nstyle:contentContainerStyle,\nremoveClippedSubviews:this.props.removeClippedSubviews},\nthis.props.children);\n\n\nvar alwaysBounceHorizontal=\nthis.props.alwaysBounceHorizontal !== undefined?\nthis.props.alwaysBounceHorizontal:\nthis.props.horizontal;\n\nvar alwaysBounceVertical=\nthis.props.alwaysBounceVertical !== undefined?\nthis.props.alwaysBounceVertical:\n!this.props.horizontal;\n\nvar props=_extends({},\nthis.props,{\nalwaysBounceHorizontal:alwaysBounceHorizontal,\nalwaysBounceVertical:alwaysBounceVertical,\nstyle:[styles.base,this.props.style],\nonTouchStart:this.scrollResponderHandleTouchStart,\nonTouchMove:this.scrollResponderHandleTouchMove,\nonTouchEnd:this.scrollResponderHandleTouchEnd,\nonScrollBeginDrag:this.scrollResponderHandleScrollBeginDrag,\nonScrollEndDrag:this.scrollResponderHandleScrollEndDrag,\nonMomentumScrollBegin:this.scrollResponderHandleMomentumScrollBegin,\nonMomentumScrollEnd:this.scrollResponderHandleMomentumScrollEnd,\nonStartShouldSetResponder:this.scrollResponderHandleStartShouldSetResponder,\nonStartShouldSetResponderCapture:this.scrollResponderHandleStartShouldSetResponderCapture,\nonScrollShouldSetResponder:this.scrollResponderHandleScrollShouldSetResponder,\nonScroll:this.scrollResponderHandleScroll,\nonResponderGrant:this.scrollResponderHandleResponderGrant,\nonResponderTerminationRequest:this.scrollResponderHandleTerminationRequest,\nonResponderTerminate:this.scrollResponderHandleTerminate,\nonResponderRelease:this.scrollResponderHandleResponderRelease,\nonResponderReject:this.scrollResponderHandleResponderReject});\n\n\nvar ScrollViewClass;\nif(Platform.OS === 'ios'){\nScrollViewClass = RCTScrollView;}else \nif(Platform.OS === 'android'){\nif(this.props.horizontal){\nScrollViewClass = AndroidHorizontalScrollView;}else \n{\nScrollViewClass = AndroidScrollView;}\n\nvar keyboardDismissModeConstants={\n'none':RCTScrollViewConsts.KeyboardDismissMode.None,\n'interactive':RCTScrollViewConsts.KeyboardDismissMode.Interactive,\n'on-drag':RCTScrollViewConsts.KeyboardDismissMode.OnDrag};\n\nprops.keyboardDismissMode = props.keyboardDismissMode?\nkeyboardDismissModeConstants[props.keyboardDismissMode]:undefined;}\n\ninvariant(\nScrollViewClass !== undefined,\n'ScrollViewClass must not be undefined');\n\n\nreturn (\nReact.createElement(ScrollViewClass,_extends({},props,{ref:SCROLLVIEW}),\ncontentContainer));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nbase:{\nflex:1},\n\ncontentContainerHorizontal:{\nalignSelf:'flex-start',\nflexDirection:'row'}});\n\n\n\nvar validAttributes=_extends({},\nReactNativeViewAttributes.UIView,{\nalwaysBounceHorizontal:true,\nalwaysBounceVertical:true,\nautomaticallyAdjustContentInsets:true,\nbounces:true,\ncenterContent:true,\ncontentInset:{diff:insetsDiffer},\ncontentOffset:{diff:pointsDiffer},\ndecelerationRate:true,\nhorizontal:true,\nkeyboardDismissMode:true,\nkeyboardShouldPersistTaps:true,\nmaximumZoomScale:true,\nminimumZoomScale:true,\npagingEnabled:true,\nremoveClippedSubviews:true,\nscrollEnabled:true,\nscrollIndicatorInsets:{diff:insetsDiffer},\nscrollsToTop:true,\nshowsHorizontalScrollIndicator:true,\nshowsVerticalScrollIndicator:true,\nstickyHeaderIndices:{diff:deepDiffer},\nscrollEventThrottle:true,\nzoomScale:true});\n\n\nif(Platform.OS === 'android'){\nvar AndroidScrollView=createReactNativeComponentClass({\nvalidAttributes:validAttributes,\nuiViewClassName:'RCTScrollView'});\n\nvar AndroidHorizontalScrollView=createReactNativeComponentClass({\nvalidAttributes:validAttributes,\nuiViewClassName:'AndroidHorizontalScrollView'});}else \n\nif(Platform.OS === 'ios'){\nvar RCTScrollView=requireNativeComponent('RCTScrollView',ScrollView);}\n\n\nmodule.exports = ScrollView;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ScrollView\n * @flow\n */\n'use strict';\n\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar Platform = require('Platform');\nvar PointPropType = require('PointPropType');\nvar RCTScrollView = require('NativeModules').UIManager.RCTScrollView;\nvar RCTScrollViewConsts = RCTScrollView.Constants;\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar ScrollResponder = require('ScrollResponder');\nvar StyleSheet = require('StyleSheet');\nvar StyleSheetPropType = require('StyleSheetPropType');\nvar View = require('View');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar deepDiffer = require('deepDiffer');\nvar flattenStyle = require('flattenStyle');\nvar insetsDiffer = require('insetsDiffer');\nvar invariant = require('invariant');\nvar pointsDiffer = require('pointsDiffer');\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar PropTypes = React.PropTypes;\n\nvar SCROLLVIEW = 'ScrollView';\nvar INNERVIEW = 'InnerScrollView';\n\n/**\n * Component that wraps platform ScrollView while providing\n * integration with touch locking \"responder\" system.\n *\n * Keep in mind that ScrollViews must have a bounded height in order to work,\n * since they contain unbounded-height children into a bounded container (via\n * a scroll interaction). In order to bound the height of a ScrollView, either\n * set the height of the view directly (discouraged) or make sure all parent\n * views have bounded height. Forgetting to transfer `{flex: 1}` down the\n * view stack can lead to errors here, which the element inspector makes\n * easy to debug.\n *\n * Doesn't yet support other contained responders from blocking this scroll\n * view from becoming the responder.\n */\n\nvar ScrollView = React.createClass({\n propTypes: {\n automaticallyAdjustContentInsets: PropTypes.bool, // true\n contentInset: EdgeInsetsPropType, // zeros\n contentOffset: PointPropType, // zeros\n onScroll: PropTypes.func,\n onScrollAnimationEnd: PropTypes.func,\n scrollEnabled: PropTypes.bool, // true\n scrollIndicatorInsets: EdgeInsetsPropType, // zeros\n showsHorizontalScrollIndicator: PropTypes.bool,\n showsVerticalScrollIndicator: PropTypes.bool,\n style: StyleSheetPropType(ViewStylePropTypes),\n scrollEventThrottle: PropTypes.number, // null\n\n /**\n * When true, the scroll view bounces when it reaches the end of the\n * content if the content is larger then the scroll view along the axis of\n * the scroll direction. When false, it disables all bouncing even if\n * the `alwaysBounce*` props are true. The default value is true.\n */\n bounces: PropTypes.bool,\n /**\n * When true, gestures can drive zoom past min/max and the zoom will animate\n * to the min/max value at gesture end, otherwise the zoom will not exceed\n * the limits.\n */\n bouncesZoom: PropTypes.bool,\n /**\n * When true, the scroll view bounces horizontally when it reaches the end\n * even if the content is smaller than the scroll view itself. The default\n * value is true when `horizontal={true}` and false otherwise.\n */\n alwaysBounceHorizontal: PropTypes.bool,\n /**\n * When true, the scroll view bounces vertically when it reaches the end\n * even if the content is smaller than the scroll view itself. The default\n * value is false when `horizontal={true}` and true otherwise.\n */\n alwaysBounceVertical: PropTypes.bool,\n /**\n * When true, the scroll view automatically centers the content when the\n * content is smaller than the scroll view bounds; when the content is\n * larger than the scroll view, this property has no effect. The default\n * value is false.\n */\n centerContent: PropTypes.bool,\n /**\n * These styles will be applied to the scroll view content container which\n * wraps all of the child views. Example:\n *\n * return (\n * <ScrollView contentContainerStyle={styles.contentContainer}>\n * </ScrollView>\n * );\n * ...\n * var styles = StyleSheet.create({\n * contentContainer: {\n * paddingVertical: 20\n * }\n * });\n */\n contentContainerStyle: StyleSheetPropType(ViewStylePropTypes),\n /**\n * A floating-point number that determines how quickly the scroll view\n * decelerates after the user lifts their finger. Reasonable choices include\n * - Normal: 0.998 (the default)\n * - Fast: 0.9\n */\n decelerationRate: PropTypes.number,\n /**\n * When true, the scroll view's children are arranged horizontally in a row\n * instead of vertically in a column. The default value is false.\n */\n horizontal: PropTypes.bool,\n /**\n * When true, the ScrollView will try to lock to only vertical or horizontal\n * scrolling while dragging. The default value is false.\n */\n directionalLockEnabled: PropTypes.bool,\n /**\n * When false, once tracking starts, won't try to drag if the touch moves.\n * The default value is true.\n */\n canCancelContentTouches: PropTypes.bool,\n /**\n * Determines whether the keyboard gets dismissed in response to a drag.\n * - 'none' (the default), drags do not dismiss the keyboard.\n * - 'onDrag', the keyboard is dismissed when a drag begins.\n * - 'interactive', the keyboard is dismissed interactively with the drag\n * and moves in synchrony with the touch; dragging upwards cancels the\n * dismissal.\n */\n keyboardDismissMode: PropTypes.oneOf([\n 'none', // default\n 'interactive',\n 'on-drag',\n ]),\n /**\n * When false, tapping outside of the focused text input when the keyboard\n * is up dismisses the keyboard. When true, the scroll view will not catch\n * taps, and the keyboard will not dismiss automatically. The default value\n * is false.\n */\n keyboardShouldPersistTaps: PropTypes.bool,\n /**\n * The maximum allowed zoom scale. The default value is 1.0.\n */\n maximumZoomScale: PropTypes.number,\n /**\n * The minimum allowed zoom scale. The default value is 1.0.\n */\n minimumZoomScale: PropTypes.number,\n /**\n * When true, the scroll view stops on multiples of the scroll view's size\n * when scrolling. This can be used for horizontal pagination. The default\n * value is false.\n */\n pagingEnabled: PropTypes.bool,\n /**\n * When true, the scroll view scrolls to top when the status bar is tapped.\n * The default value is true.\n */\n scrollsToTop: PropTypes.bool,\n /**\n * An array of child indices determining which children get docked to the\n * top of the screen when scrolling. For example, passing\n * `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the\n * top of the scroll view. This property is not supported in conjunction\n * with `horizontal={true}`.\n */\n stickyHeaderIndices: PropTypes.arrayOf(PropTypes.number),\n /**\n * Experimental: When true, offscreen child views (whose `overflow` value is\n * `hidden`) are removed from their native backing superview when offscreen.\n * This can improve scrolling performance on long lists. The default value is\n * false.\n */\n removeClippedSubviews: PropTypes.bool,\n /**\n * The current scale of the scroll view content. The default value is 1.0.\n */\n zoomScale: PropTypes.number,\n },\n\n mixins: [ScrollResponder.Mixin],\n\n getInitialState: function() {\n return this.scrollResponderMixinGetInitialState();\n },\n\n setNativeProps: function(props: Object) {\n this.refs[SCROLLVIEW].setNativeProps(props);\n },\n\n /**\n * Returns a reference to the underlying scroll responder, which supports\n * operations like `scrollTo`. All ScrollView-like components should\n * implement this method so that they can be composed while providing access\n * to the underlying scroll responder's methods.\n */\n getScrollResponder: function(): ReactComponent {\n return this;\n },\n\n getInnerViewNode: function(): any {\n return React.findNodeHandle(this.refs[INNERVIEW]);\n },\n\n scrollTo: function(destY?: number, destX?: number) {\n if (Platform.OS === 'android') {\n RCTUIManager.dispatchViewManagerCommand(\n React.findNodeHandle(this),\n RCTUIManager.RCTScrollView.Commands.scrollTo,\n [destX || 0, destY || 0]\n );\n } else {\n RCTUIManager.scrollTo(\n React.findNodeHandle(this),\n destX || 0,\n destY || 0\n );\n }\n },\n\n scrollWithoutAnimationTo: function(destY?: number, destX?: number) {\n RCTUIManager.scrollWithoutAnimationTo(\n React.findNodeHandle(this),\n destX || 0,\n destY || 0\n );\n },\n\n render: function() {\n var contentContainerStyle = [\n this.props.horizontal && styles.contentContainerHorizontal,\n this.props.contentContainerStyle,\n ];\n if (__DEV__ && this.props.style) {\n var style = flattenStyle(this.props.style);\n var childLayoutProps = ['alignItems', 'justifyContent']\n .filter((prop) => style && style[prop] !== undefined);\n invariant(\n childLayoutProps.length === 0,\n 'ScrollView child layout (' + JSON.stringify(childLayoutProps) +\n ') must by applied through the contentContainerStyle prop.'\n );\n }\n if (__DEV__) {\n if (this.props.onScroll && !this.props.scrollEventThrottle) {\n var onScroll = this.props.onScroll;\n this.props.onScroll = function() {\n console.log(\n 'You specified `onScroll` on a <ScrollView> but not ' +\n '`scrollEventThrottle`. You will only receive one event. ' +\n 'Using `16` you get all the events but be aware that it may ' +\n 'cause frame drops, use a bigger number if you don\\'t need as ' +\n 'much precision.'\n );\n onScroll.apply(this, arguments);\n };\n }\n }\n\n var contentContainer =\n <View\n ref={INNERVIEW}\n style={contentContainerStyle}\n removeClippedSubviews={this.props.removeClippedSubviews}>\n {this.props.children}\n </View>;\n\n var alwaysBounceHorizontal =\n this.props.alwaysBounceHorizontal !== undefined ?\n this.props.alwaysBounceHorizontal :\n this.props.horizontal;\n\n var alwaysBounceVertical =\n this.props.alwaysBounceVertical !== undefined ?\n this.props.alwaysBounceVertical :\n !this.props.horizontal;\n\n var props = {\n ...this.props,\n alwaysBounceHorizontal,\n alwaysBounceVertical,\n style: ([styles.base, this.props.style]: ?Array<any>),\n onTouchStart: this.scrollResponderHandleTouchStart,\n onTouchMove: this.scrollResponderHandleTouchMove,\n onTouchEnd: this.scrollResponderHandleTouchEnd,\n onScrollBeginDrag: this.scrollResponderHandleScrollBeginDrag,\n onScrollEndDrag: this.scrollResponderHandleScrollEndDrag,\n onMomentumScrollBegin: this.scrollResponderHandleMomentumScrollBegin,\n onMomentumScrollEnd: this.scrollResponderHandleMomentumScrollEnd,\n onStartShouldSetResponder: this.scrollResponderHandleStartShouldSetResponder,\n onStartShouldSetResponderCapture: this.scrollResponderHandleStartShouldSetResponderCapture,\n onScrollShouldSetResponder: this.scrollResponderHandleScrollShouldSetResponder,\n onScroll: this.scrollResponderHandleScroll,\n onResponderGrant: this.scrollResponderHandleResponderGrant,\n onResponderTerminationRequest: this.scrollResponderHandleTerminationRequest,\n onResponderTerminate: this.scrollResponderHandleTerminate,\n onResponderRelease: this.scrollResponderHandleResponderRelease,\n onResponderReject: this.scrollResponderHandleResponderReject,\n };\n\n var ScrollViewClass;\n if (Platform.OS === 'ios') {\n ScrollViewClass = RCTScrollView;\n } else if (Platform.OS === 'android') {\n if (this.props.horizontal) {\n ScrollViewClass = AndroidHorizontalScrollView;\n } else {\n ScrollViewClass = AndroidScrollView;\n }\n var keyboardDismissModeConstants = {\n 'none': RCTScrollViewConsts.KeyboardDismissMode.None, // default\n 'interactive': RCTScrollViewConsts.KeyboardDismissMode.Interactive,\n 'on-drag': RCTScrollViewConsts.KeyboardDismissMode.OnDrag,\n };\n props.keyboardDismissMode = props.keyboardDismissMode ?\n keyboardDismissModeConstants[props.keyboardDismissMode] : undefined;\n }\n invariant(\n ScrollViewClass !== undefined,\n 'ScrollViewClass must not be undefined'\n );\n\n return (\n <ScrollViewClass {...props} ref={SCROLLVIEW}>\n {contentContainer}\n </ScrollViewClass>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n base: {\n flex: 1,\n },\n contentContainerHorizontal: {\n alignSelf: 'flex-start',\n flexDirection: 'row',\n },\n});\n\nvar validAttributes = {\n ...ReactNativeViewAttributes.UIView,\n alwaysBounceHorizontal: true,\n alwaysBounceVertical: true,\n automaticallyAdjustContentInsets: true,\n bounces: true,\n centerContent: true,\n contentInset: {diff: insetsDiffer},\n contentOffset: {diff: pointsDiffer},\n decelerationRate: true,\n horizontal: true,\n keyboardDismissMode: true,\n keyboardShouldPersistTaps: true,\n maximumZoomScale: true,\n minimumZoomScale: true,\n pagingEnabled: true,\n removeClippedSubviews: true,\n scrollEnabled: true,\n scrollIndicatorInsets: {diff: insetsDiffer},\n scrollsToTop: true,\n showsHorizontalScrollIndicator: true,\n showsVerticalScrollIndicator: true,\n stickyHeaderIndices: {diff: deepDiffer},\n scrollEventThrottle: true,\n zoomScale: true,\n};\n\nif (Platform.OS === 'android') {\n var AndroidScrollView = createReactNativeComponentClass({\n validAttributes: validAttributes,\n uiViewClassName: 'RCTScrollView',\n });\n var AndroidHorizontalScrollView = createReactNativeComponentClass({\n validAttributes: validAttributes,\n uiViewClassName: 'AndroidHorizontalScrollView',\n });\n} else if (Platform.OS === 'ios') {\n var RCTScrollView = requireNativeComponent('RCTScrollView', ScrollView);\n}\n\nmodule.exports = ScrollView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/PointPropType.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PropTypes=require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\n\nvar PointPropType=createStrictShapeTypeChecker({\nx:PropTypes.number,\ny:PropTypes.number});\n\n\nmodule.exports = PointPropType;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PointPropType\n * @flow\n */\n'use strict';\n\nvar PropTypes = require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\n\nvar PointPropType = createStrictShapeTypeChecker({\n x: PropTypes.number,\n y: PropTypes.number,\n});\n\nmodule.exports = PointPropType;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/PointPropType.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ScrollResponder.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('NativeModules');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar React=require('React');\nvar Subscribable=require('Subscribable');\nvar TextInputState=require('TextInputState');\n\nvar RCTUIManager=NativeModules.UIManager;\nvar RCTUIManagerDeprecated=NativeModules.UIManager;\nvar RCTScrollViewConsts=RCTUIManager.RCTScrollView.Constants;\n\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar IS_ANIMATING_TOUCH_START_THRESHOLD_MS=16;\n\n\n\n\n\n\n\n\n\n\nvar ScrollResponderMixin={\nmixins:[Subscribable.Mixin],\nstatics:RCTScrollViewConsts,\nscrollResponderMixinGetInitialState:function(){\nreturn {\nisTouching:false,\nlastMomentumScrollBeginTime:0,\nlastMomentumScrollEndTime:0,\n\n\n\n\n\n\nobservedScrollSinceBecomingResponder:false,\nbecameResponderWhileAnimating:false};},\n\n\n\n\n\n\nscrollResponderHandleScrollShouldSetResponder:function(){\nreturn this.state.isTouching;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleStartShouldSetResponder:function(){\nreturn false;},\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleStartShouldSetResponderCapture:function(e){\n\nvar currentlyFocusedTextInput=TextInputState.currentlyFocusedField();\nif(!this.props.keyboardShouldPersistTaps && \ncurrentlyFocusedTextInput != null && \ne.target !== currentlyFocusedTextInput){\nreturn true;}\n\nreturn this.scrollResponderIsAnimating();},\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleResponderReject:function(){\nwarning(false,\"ScrollView doesn't take rejection well - scrolls anyway\");},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleTerminationRequest:function(){\nreturn !this.state.observedScrollSinceBecomingResponder;},\n\n\n\n\n\n\n\nscrollResponderHandleTouchEnd:function(e){\nvar nativeEvent=e.nativeEvent;\nthis.state.isTouching = nativeEvent.touches.length !== 0;\nthis.props.onTouchEnd && this.props.onTouchEnd(e);},\n\n\n\n\n\nscrollResponderHandleResponderRelease:function(e){\nthis.props.onResponderRelease && this.props.onResponderRelease(e);\n\n\n\nvar currentlyFocusedTextInput=TextInputState.currentlyFocusedField();\nif(!this.props.keyboardShouldPersistTaps && \ncurrentlyFocusedTextInput != null && \ne.target !== currentlyFocusedTextInput && \n!this.state.observedScrollSinceBecomingResponder && \n!this.state.becameResponderWhileAnimating){\nthis.props.onScrollResponderKeyboardDismissed && \nthis.props.onScrollResponderKeyboardDismissed(e);\nTextInputState.blurTextInput(currentlyFocusedTextInput);}},\n\n\n\nscrollResponderHandleScroll:function(e){\nthis.state.observedScrollSinceBecomingResponder = true;\nthis.props.onScroll && this.props.onScroll(e);},\n\n\n\n\n\nscrollResponderHandleResponderGrant:function(e){\nthis.state.observedScrollSinceBecomingResponder = false;\nthis.props.onResponderGrant && this.props.onResponderGrant(e);\nthis.state.becameResponderWhileAnimating = this.scrollResponderIsAnimating();},\n\n\n\n\n\n\n\n\n\nscrollResponderHandleScrollBeginDrag:function(e){\nthis.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);},\n\n\n\n\n\nscrollResponderHandleScrollEndDrag:function(e){\nthis.props.onScrollEndDrag && this.props.onScrollEndDrag(e);},\n\n\n\n\n\nscrollResponderHandleMomentumScrollBegin:function(e){\nthis.state.lastMomentumScrollBeginTime = Date.now();\nthis.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);},\n\n\n\n\n\nscrollResponderHandleMomentumScrollEnd:function(e){\nthis.state.lastMomentumScrollEndTime = Date.now();\nthis.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleTouchStart:function(e){\nthis.state.isTouching = true;\nthis.props.onTouchStart && this.props.onTouchStart(e);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleTouchMove:function(e){\nthis.props.onTouchMove && this.props.onTouchMove(e);},\n\n\n\n\n\n\n\nscrollResponderIsAnimating:function(){\nvar now=Date.now();\nvar timeSinceLastMomentumScrollEnd=now - this.state.lastMomentumScrollEndTime;\nvar isAnimating=timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS || \nthis.state.lastMomentumScrollEndTime < this.state.lastMomentumScrollBeginTime;\nreturn isAnimating;},\n\n\n\n\n\n\n\nscrollResponderScrollTo:function(offsetX,offsetY){\nRCTUIManagerDeprecated.scrollTo(React.findNodeHandle(this),offsetX,offsetY);},\n\n\n\n\n\n\nscrollResponderZoomTo:function(rect){\nRCTUIManagerDeprecated.zoomToRect(React.findNodeHandle(this),rect);},\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderScrollNativeHandleToKeyboard:function(nodeHandle,additionalOffset,preventNegativeScrollOffset){\nthis.additionalScrollOffset = additionalOffset || 0;\nthis.preventNegativeScrollOffset = !!preventNegativeScrollOffset;\nRCTUIManager.measureLayout(\nnodeHandle,\nReact.findNodeHandle(this),\nthis.scrollResponderTextInputFocusError,\nthis.scrollResponderInputMeasureAndScrollToKeyboard);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderInputMeasureAndScrollToKeyboard:function(left,top,width,height){\nif(this.keyboardWillOpenTo){\nvar scrollOffsetY=\ntop - this.keyboardWillOpenTo.endCoordinates.screenY + height + \nthis.additionalScrollOffset;\n\n\n\n\n\nif(this.preventNegativeScrollOffset){\nscrollOffsetY = Math.max(0,scrollOffsetY);}\n\nthis.scrollResponderScrollTo(0,scrollOffsetY);}\n\nthis.additionalOffset = 0;\nthis.preventNegativeScrollOffset = false;},\n\n\nscrollResponderTextInputFocusError:function(e){\nconsole.error('Error measuring text field: ',e);},\n\n\n\n\n\n\n\n\ncomponentWillMount:function(){\nthis.keyboardWillOpenTo = null;\nthis.additionalScrollOffset = 0;\nthis.addListenerOn(RCTDeviceEventEmitter,'keyboardWillShow',this.scrollResponderKeyboardWillShow);\nthis.addListenerOn(RCTDeviceEventEmitter,'keyboardWillHide',this.scrollResponderKeyboardWillHide);\nthis.addListenerOn(RCTDeviceEventEmitter,'keyboardDidShow',this.scrollResponderKeyboardDidShow);\nthis.addListenerOn(RCTDeviceEventEmitter,'keyboardDidHide',this.scrollResponderKeyboardDidHide);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderKeyboardWillShow:function(e){\nthis.keyboardWillOpenTo = e;\nthis.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e);},\n\n\nscrollResponderKeyboardWillHide:function(e){\nthis.keyboardWillOpenTo = null;\nthis.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e);},\n\n\nscrollResponderKeyboardDidShow:function(){\nthis.keyboardWillOpenTo = null;\nthis.props.onKeyboardDidShow && this.props.onKeyboardDidShow();},\n\n\nscrollResponderKeyboardDidHide:function(){\nthis.keyboardWillOpenTo = null;\nthis.props.onKeyboardDidHide && this.props.onKeyboardDidHide();}};\n\n\n\n\nvar ScrollResponder={\nMixin:ScrollResponderMixin};\n\n\nmodule.exports = ScrollResponder;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ScrollResponder\n * @flow\n */\n'use strict';\n\nvar NativeModules = require('NativeModules');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar React = require('React');\nvar Subscribable = require('Subscribable');\nvar TextInputState = require('TextInputState');\n\nvar RCTUIManager = NativeModules.UIManager;\nvar RCTUIManagerDeprecated = NativeModules.UIManager;\nvar RCTScrollViewConsts = RCTUIManager.RCTScrollView.Constants;\n\nvar warning = require('warning');\n\n/**\n * Mixin that can be integrated in order to handle scrolling that plays well\n * with `ResponderEventPlugin`. Integrate with your platform specific scroll\n * views, or even your custom built (every-frame animating) scroll views so that\n * all of these systems play well with the `ResponderEventPlugin`.\n *\n * iOS scroll event timing nuances:\n * ===============================\n *\n *\n * Scrolling without bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n * ... physical touch starts ...\n * 2. `onTouchStartCapture` (when you press down to stop the scroll)\n * 3. `onTouchStart` (same, but bubble phase)\n * 4. `onResponderRelease` (when lifting up - you could pause forever before * lifting)\n * 5. `onMomentumScrollEnd`\n *\n *\n * Scrolling with bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n * ... bounce begins ...\n * ... some time elapses ...\n * ... physical touch during bounce ...\n * 2. `onMomentumScrollEnd` (Makes no sense why this occurs first during bounce)\n * 3. `onTouchStartCapture` (immediately after `onMomentumScrollEnd`)\n * 4. `onTouchStart` (same, but bubble phase)\n * 5. `onTouchEnd` (You could hold the touch start for a long time)\n * 6. `onMomentumScrollBegin` (When releasing the view starts bouncing back)\n *\n * So when we receive an `onTouchStart`, how can we tell if we are touching\n * *during* an animation (which then causes the animation to stop)? The only way\n * to tell is if the `touchStart` occurred immediately after the\n * `onMomentumScrollEnd`.\n *\n * This is abstracted out for you, so you can just call this.scrollResponderIsAnimating() if\n * necessary\n *\n * `ScrollResponder` also includes logic for blurring a currently focused input\n * if one is focused while scrolling. The `ScrollResponder` is a natural place\n * to put this logic since it can support not dismissing the keyboard while\n * scrolling, unless a recognized \"tap\"-like gesture has occurred.\n *\n * The public lifecycle API includes events for keyboard interaction, responder\n * interaction, and scrolling (among others). The keyboard callbacks\n * `onKeyboardWill/Did/*` are *global* events, but are invoked on scroll\n * responder's props so that you can guarantee that the scroll responder's\n * internal state has been updated accordingly (and deterministically) by\n * the time the props callbacks are invoke. Otherwise, you would always wonder\n * if the scroll responder is currently in a state where it recognizes new\n * keyboard positions etc. If coordinating scrolling with keyboard movement,\n * *always* use these hooks instead of listening to your own global keyboard\n * events.\n *\n * Public keyboard lifecycle API: (props callbacks)\n *\n * Standard Keyboard Appearance Sequence:\n *\n * this.props.onKeyboardWillShow\n * this.props.onKeyboardDidShow\n *\n * `onScrollResponderKeyboardDismissed` will be invoked if an appropriate\n * tap inside the scroll responder's scrollable region was responsible\n * for the dismissal of the keyboard. There are other reasons why the\n * keyboard could be dismissed.\n *\n * this.props.onScrollResponderKeyboardDismissed\n *\n * Standard Keyboard Hide Sequence:\n *\n * this.props.onKeyboardWillHide\n * this.props.onKeyboardDidHide\n */\n\nvar IS_ANIMATING_TOUCH_START_THRESHOLD_MS = 16;\n\ntype State = {\n isTouching: boolean;\n lastMomentumScrollBeginTime: number;\n lastMomentumScrollEndTime: number;\n observedScrollSinceBecomingResponder: boolean;\n becameResponderWhileAnimating: boolean;\n};\ntype Event = Object;\n\nvar ScrollResponderMixin = {\n mixins: [Subscribable.Mixin],\n statics: RCTScrollViewConsts,\n scrollResponderMixinGetInitialState: function(): State {\n return {\n isTouching: false,\n lastMomentumScrollBeginTime: 0,\n lastMomentumScrollEndTime: 0,\n\n // Reset to false every time becomes responder. This is used to:\n // - Determine if the scroll view has been scrolled and therefore should\n // refuse to give up its responder lock.\n // - Determine if releasing should dismiss the keyboard when we are in\n // tap-to-dismiss mode (!this.props.keyboardShouldPersistTaps).\n observedScrollSinceBecomingResponder: false,\n becameResponderWhileAnimating: false,\n };\n },\n\n /**\n * Invoke this from an `onScroll` event.\n */\n scrollResponderHandleScrollShouldSetResponder: function(): boolean {\n return this.state.isTouching;\n },\n\n /**\n * Merely touch starting is not sufficient for a scroll view to become the\n * responder. Being the \"responder\" means that the very next touch move/end\n * event will result in an action/movement.\n *\n * Invoke this from an `onStartShouldSetResponder` event.\n *\n * `onStartShouldSetResponder` is used when the next move/end will trigger\n * some UI movement/action, but when you want to yield priority to views\n * nested inside of the view.\n *\n * There may be some cases where scroll views actually should return `true`\n * from `onStartShouldSetResponder`: Any time we are detecting a standard tap\n * that gives priority to nested views.\n *\n * - If a single tap on the scroll view triggers an action such as\n * recentering a map style view yet wants to give priority to interaction\n * views inside (such as dropped pins or labels), then we would return true\n * from this method when there is a single touch.\n *\n * - Similar to the previous case, if a two finger \"tap\" should trigger a\n * zoom, we would check the `touches` count, and if `>= 2`, we would return\n * true.\n *\n */\n scrollResponderHandleStartShouldSetResponder: function(): boolean {\n return false;\n },\n\n /**\n * There are times when the scroll view wants to become the responder\n * (meaning respond to the next immediate `touchStart/touchEnd`), in a way\n * that *doesn't* give priority to nested views (hence the capture phase):\n *\n * - Currently animating.\n * - Tapping anywhere that is not the focused input, while the keyboard is\n * up (which should dismiss the keyboard).\n *\n * Invoke this from an `onStartShouldSetResponderCapture` event.\n */\n scrollResponderHandleStartShouldSetResponderCapture: function(e: Event): boolean {\n // First see if we want to eat taps while the keyboard is up\n var currentlyFocusedTextInput = TextInputState.currentlyFocusedField();\n if (!this.props.keyboardShouldPersistTaps &&\n currentlyFocusedTextInput != null &&\n e.target !== currentlyFocusedTextInput) {\n return true;\n }\n return this.scrollResponderIsAnimating();\n },\n\n /**\n * Invoke this from an `onResponderReject` event.\n *\n * Some other element is not yielding its role as responder. Normally, we'd\n * just disable the `UIScrollView`, but a touch has already began on it, the\n * `UIScrollView` will not accept being disabled after that. The easiest\n * solution for now is to accept the limitation of disallowing this\n * altogether. To improve this, find a way to disable the `UIScrollView` after\n * a touch has already started.\n */\n scrollResponderHandleResponderReject: function() {\n warning(false, \"ScrollView doesn't take rejection well - scrolls anyway\");\n },\n\n /**\n * We will allow the scroll view to give up its lock iff it acquired the lock\n * during an animation. This is a very useful default that happens to satisfy\n * many common user experiences.\n *\n * - Stop a scroll on the left edge, then turn that into an outer view's\n * backswipe.\n * - Stop a scroll mid-bounce at the top, continue pulling to have the outer\n * view dismiss.\n * - However, without catching the scroll view mid-bounce (while it is\n * motionless), if you drag far enough for the scroll view to become\n * responder (and therefore drag the scroll view a bit), any backswipe\n * navigation of a swipe gesture higher in the view hierarchy, should be\n * rejected.\n */\n scrollResponderHandleTerminationRequest: function(): boolean {\n return !this.state.observedScrollSinceBecomingResponder;\n },\n\n /**\n * Invoke this from an `onTouchEnd` event.\n *\n * @param {SyntheticEvent} e Event.\n */\n scrollResponderHandleTouchEnd: function(e: Event) {\n var nativeEvent = e.nativeEvent;\n this.state.isTouching = nativeEvent.touches.length !== 0;\n this.props.onTouchEnd && this.props.onTouchEnd(e);\n },\n\n /**\n * Invoke this from an `onResponderRelease` event.\n */\n scrollResponderHandleResponderRelease: function(e: Event) {\n this.props.onResponderRelease && this.props.onResponderRelease(e);\n\n // By default scroll views will unfocus a textField\n // if another touch occurs outside of it\n var currentlyFocusedTextInput = TextInputState.currentlyFocusedField();\n if (!this.props.keyboardShouldPersistTaps &&\n currentlyFocusedTextInput != null &&\n e.target !== currentlyFocusedTextInput &&\n !this.state.observedScrollSinceBecomingResponder &&\n !this.state.becameResponderWhileAnimating) {\n this.props.onScrollResponderKeyboardDismissed &&\n this.props.onScrollResponderKeyboardDismissed(e);\n TextInputState.blurTextInput(currentlyFocusedTextInput);\n }\n },\n\n scrollResponderHandleScroll: function(e: Event) {\n this.state.observedScrollSinceBecomingResponder = true;\n this.props.onScroll && this.props.onScroll(e);\n },\n\n /**\n * Invoke this from an `onResponderGrant` event.\n */\n scrollResponderHandleResponderGrant: function(e: Event) {\n this.state.observedScrollSinceBecomingResponder = false;\n this.props.onResponderGrant && this.props.onResponderGrant(e);\n this.state.becameResponderWhileAnimating = this.scrollResponderIsAnimating();\n },\n\n /**\n * Unfortunately, `onScrollBeginDrag` also fires when *stopping* the scroll\n * animation, and there's not an easy way to distinguish a drag vs. stopping\n * momentum.\n *\n * Invoke this from an `onScrollBeginDrag` event.\n */\n scrollResponderHandleScrollBeginDrag: function(e: Event) {\n this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n },\n\n /**\n * Invoke this from an `onScrollEndDrag` event.\n */\n scrollResponderHandleScrollEndDrag: function(e: Event) {\n this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n },\n\n /**\n * Invoke this from an `onMomentumScrollBegin` event.\n */\n scrollResponderHandleMomentumScrollBegin: function(e: Event) {\n this.state.lastMomentumScrollBeginTime = Date.now();\n this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n },\n\n /**\n * Invoke this from an `onMomentumScrollEnd` event.\n */\n scrollResponderHandleMomentumScrollEnd: function(e: Event) {\n this.state.lastMomentumScrollEndTime = Date.now();\n this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n },\n\n /**\n * Invoke this from an `onTouchStart` event.\n *\n * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n * order, after `ResponderEventPlugin`, we can detect that we were *not*\n * permitted to be the responder (presumably because a contained view became\n * responder). The `onResponderReject` won't fire in that case - it only\n * fires when a *current* responder rejects our request.\n *\n * @param {SyntheticEvent} e Touch Start event.\n */\n scrollResponderHandleTouchStart: function(e: Event) {\n this.state.isTouching = true;\n this.props.onTouchStart && this.props.onTouchStart(e);\n },\n\n /**\n * Invoke this from an `onTouchMove` event.\n *\n * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n * order, after `ResponderEventPlugin`, we can detect that we were *not*\n * permitted to be the responder (presumably because a contained view became\n * responder). The `onResponderReject` won't fire in that case - it only\n * fires when a *current* responder rejects our request.\n *\n * @param {SyntheticEvent} e Touch Start event.\n */\n scrollResponderHandleTouchMove: function(e: Event) {\n this.props.onTouchMove && this.props.onTouchMove(e);\n },\n\n /**\n * A helper function for this class that lets us quickly determine if the\n * view is currently animating. This is particularly useful to know when\n * a touch has just started or ended.\n */\n scrollResponderIsAnimating: function(): boolean {\n var now = Date.now();\n var timeSinceLastMomentumScrollEnd = now - this.state.lastMomentumScrollEndTime;\n var isAnimating = timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS ||\n this.state.lastMomentumScrollEndTime < this.state.lastMomentumScrollBeginTime;\n return isAnimating;\n },\n\n /**\n * A helper function to scroll to a specific point in the scrollview.\n * This is currently used to help focus on child textview's, but this\n * can also be used to quickly scroll to any element we want to focus\n */\n scrollResponderScrollTo: function(offsetX: number, offsetY: number) {\n RCTUIManagerDeprecated.scrollTo(React.findNodeHandle(this), offsetX, offsetY);\n },\n\n /**\n * A helper function to zoom to a specific rect in the scrollview.\n * @param {object} rect Should have shape {x, y, width, height}\n */\n scrollResponderZoomTo: function(rect: { x: number; y: number; width: number; height: number; }) {\n RCTUIManagerDeprecated.zoomToRect(React.findNodeHandle(this), rect);\n },\n\n /**\n * This method should be used as the callback to onFocus in a TextInputs'\n * parent view. Note that any module using this mixin needs to return\n * the parent view's ref in getScrollViewRef() in order to use this method.\n * @param {any} nodeHandle The TextInput node handle\n * @param {number} additionalOffset The scroll view's top \"contentInset\".\n * Default is 0.\n * @param {bool} preventNegativeScrolling Whether to allow pulling the content\n * down to make it meet the keyboard's top. Default is false.\n */\n scrollResponderScrollNativeHandleToKeyboard: function(nodeHandle: any, additionalOffset?: number, preventNegativeScrollOffset?: bool) {\n this.additionalScrollOffset = additionalOffset || 0;\n this.preventNegativeScrollOffset = !!preventNegativeScrollOffset;\n RCTUIManager.measureLayout(\n nodeHandle,\n React.findNodeHandle(this),\n this.scrollResponderTextInputFocusError,\n this.scrollResponderInputMeasureAndScrollToKeyboard\n );\n },\n\n /**\n * The calculations performed here assume the scroll view takes up the entire\n * screen - even if has some content inset. We then measure the offsets of the\n * keyboard, and compensate both for the scroll view's \"contentInset\".\n *\n * @param {number} left Position of input w.r.t. table view.\n * @param {number} top Position of input w.r.t. table view.\n * @param {number} width Width of the text input.\n * @param {number} height Height of the text input.\n */\n scrollResponderInputMeasureAndScrollToKeyboard: function(left: number, top: number, width: number, height: number) {\n if (this.keyboardWillOpenTo) {\n var scrollOffsetY =\n top - this.keyboardWillOpenTo.endCoordinates.screenY + height +\n this.additionalScrollOffset;\n\n // By default, this can scroll with negative offset, pulling the content\n // down so that the target component's bottom meets the keyboard's top.\n // If requested otherwise, cap the offset at 0 minimum to avoid content\n // shifting down.\n if (this.preventNegativeScrollOffset) {\n scrollOffsetY = Math.max(0, scrollOffsetY);\n }\n this.scrollResponderScrollTo(0, scrollOffsetY);\n }\n this.additionalOffset = 0;\n this.preventNegativeScrollOffset = false;\n },\n\n scrollResponderTextInputFocusError: function(e: Event) {\n console.error('Error measuring text field: ', e);\n },\n\n /**\n * `componentWillMount` is the closest thing to a standard \"constructor\" for\n * React components.\n *\n * The `keyboardWillShow` is called before input focus.\n */\n componentWillMount: function() {\n this.keyboardWillOpenTo = null;\n this.additionalScrollOffset = 0;\n this.addListenerOn(RCTDeviceEventEmitter, 'keyboardWillShow', this.scrollResponderKeyboardWillShow);\n this.addListenerOn(RCTDeviceEventEmitter, 'keyboardWillHide', this.scrollResponderKeyboardWillHide);\n this.addListenerOn(RCTDeviceEventEmitter, 'keyboardDidShow', this.scrollResponderKeyboardDidShow);\n this.addListenerOn(RCTDeviceEventEmitter, 'keyboardDidHide', this.scrollResponderKeyboardDidHide);\n },\n\n /**\n * Warning, this may be called several times for a single keyboard opening.\n * It's best to store the information in this method and then take any action\n * at a later point (either in `keyboardDidShow` or other).\n *\n * Here's the order that events occur in:\n * - focus\n * - willShow {startCoordinates, endCoordinates} several times\n * - didShow several times\n * - blur\n * - willHide {startCoordinates, endCoordinates} several times\n * - didHide several times\n *\n * The `ScrollResponder` providesModule callbacks for each of these events.\n * Even though any user could have easily listened to keyboard events\n * themselves, using these `props` callbacks ensures that ordering of events\n * is consistent - and not dependent on the order that the keyboard events are\n * subscribed to. This matters when telling the scroll view to scroll to where\n * the keyboard is headed - the scroll responder better have been notified of\n * the keyboard destination before being instructed to scroll to where the\n * keyboard will be. Stick to the `ScrollResponder` callbacks, and everything\n * will work.\n *\n * WARNING: These callbacks will fire even if a keyboard is displayed in a\n * different navigation pane. Filter out the events to determine if they are\n * relevant to you. (For example, only if you receive these callbacks after\n * you had explicitly focused a node etc).\n */\n scrollResponderKeyboardWillShow: function(e: Event) {\n this.keyboardWillOpenTo = e;\n this.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e);\n },\n\n scrollResponderKeyboardWillHide: function(e: Event) {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e);\n },\n\n scrollResponderKeyboardDidShow: function() {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardDidShow && this.props.onKeyboardDidShow();\n },\n\n scrollResponderKeyboardDidHide: function() {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardDidHide && this.props.onKeyboardDidHide();\n }\n\n};\n\nvar ScrollResponder = {\n Mixin: ScrollResponderMixin,\n};\n\nmodule.exports = ScrollResponder;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ScrollResponder.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Subscribable.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Subscribable={};\n\nSubscribable.Mixin = {\n\ncomponentWillMount:function(){\nthis._subscribableSubscriptions = [];},\n\n\ncomponentWillUnmount:function(){\nthis._subscribableSubscriptions.forEach(\nfunction(subscription){return subscription.remove();});\n\nthis._subscribableSubscriptions = null;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\naddListenerOn:function(\neventEmitter,\neventType,\nlistener,\ncontext)\n{\nthis._subscribableSubscriptions.push(\neventEmitter.addListener(eventType,listener,context));}};\n\n\n\n\nmodule.exports = Subscribable;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Subscribable\n * @flow\n */\n'use strict';\n\nimport type EventEmitter from 'EventEmitter';\n\n/**\n * Subscribable provides a mixin for safely subscribing a component to an\n * eventEmitter\n *\n * This will be replaced with the observe interface that will be coming soon to\n * React Core\n */\n\nvar Subscribable = {};\n\nSubscribable.Mixin = {\n\n componentWillMount: function() {\n this._subscribableSubscriptions = [];\n },\n\n componentWillUnmount: function() {\n this._subscribableSubscriptions.forEach(\n (subscription) => subscription.remove()\n );\n this._subscribableSubscriptions = null;\n },\n\n /**\n * Special form of calling `addListener` that *guarantees* that a\n * subscription *must* be tied to a component instance, and therefore will\n * be cleaned up when the component is unmounted. It is impossible to create\n * the subscription and pass it in - this method must be the one to create\n * the subscription and therefore can guarantee it is retained in a way that\n * will be cleaned up.\n *\n * @param {EventEmitter} eventEmitter emitter to subscribe to.\n * @param {string} eventType Type of event to listen to.\n * @param {function} listener Function to invoke when event occurs.\n * @param {object} context Object to use as listener context.\n */\n addListenerOn: function(\n eventEmitter: EventEmitter,\n eventType: string,\n listener: Function,\n context: Object\n ) {\n this._subscribableSubscriptions.push(\n eventEmitter.addListener(eventType, listener, context)\n );\n }\n};\n\nmodule.exports = Subscribable;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Subscribable.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/StaticRenderer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\n\nvar StaticRenderer=React.createClass({displayName:'StaticRenderer',\npropTypes:{\nshouldUpdate:React.PropTypes.bool.isRequired,\nrender:React.PropTypes.func.isRequired},\n\n\nshouldComponentUpdate:function(nextProps){\nreturn nextProps.shouldUpdate;},\n\n\nrender:function(){\nreturn this.props.render();}});\n\n\n\nmodule.exports = StaticRenderer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StaticRenderer\n * @flow\n */\n'use strict';\n\nvar React = require('React');\n\nvar StaticRenderer = React.createClass({\n propTypes: {\n shouldUpdate: React.PropTypes.bool.isRequired,\n render: React.PropTypes.func.isRequired,\n },\n\n shouldComponentUpdate: function(nextProps: { shouldUpdate: boolean }): boolean {\n return nextProps.shouldUpdate;\n },\n\n render: function(): ReactElement {\n return this.props.render();\n },\n});\n\nmodule.exports = StaticRenderer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/StaticRenderer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-timer-mixin/TimerMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\nvar GLOBAL=typeof window === 'undefined'?global:window;\n\nvar setter=function(_setter,_clearer,array){\nreturn function(callback,delta){\nvar id=_setter((function(){\n_clearer.call(this,id);\ncallback.apply(this,arguments);}).\nbind(this),delta);\n\nif(!this[array]){\nthis[array] = [id];}else \n{\nthis[array].push(id);}\n\nreturn id;};};\n\n\n\nvar clearer=function(_clearer,array){\nreturn function(id){\nif(this[array]){\nvar index=this[array].indexOf(id);\nif(index !== -1){\nthis[array].splice(index,1);}}\n\n\n_clearer(id);};};\n\n\n\nvar _timeouts='TimerMixin_timeouts';\nvar _clearTimeout=clearer(GLOBAL.clearTimeout,_timeouts);\nvar _setTimeout=setter(GLOBAL.setTimeout,_clearTimeout,_timeouts);\n\nvar _intervals='TimerMixin_intervals';\nvar _clearInterval=clearer(GLOBAL.clearInterval,_intervals);\nvar _setInterval=setter(GLOBAL.setInterval,function(){},_intervals);\n\nvar _immediates='TimerMixin_immediates';\nvar _clearImmediate=clearer(GLOBAL.clearImmediate,_immediates);\nvar _setImmediate=setter(GLOBAL.setImmediate,_clearImmediate,_immediates);\n\nvar _rafs='TimerMixin_rafs';\nvar _cancelAnimationFrame=clearer(GLOBAL.cancelAnimationFrame,_rafs);\nvar _requestAnimationFrame=setter(GLOBAL.requestAnimationFrame,_cancelAnimationFrame,_rafs);\n\nvar TimerMixin={\ncomponentWillUnmount:function(){\nthis[_timeouts] && this[_timeouts].forEach(this.clearTimeout);\nthis[_intervals] && this[_intervals].forEach(this.clearInterval);\nthis[_immediates] && this[_immediates].forEach(this.clearImmediate);\nthis[_rafs] && this[_rafs].forEach(this.cancelAnimationFrame);},\n\n\nsetTimeout:_setTimeout,\nclearTimeout:_clearTimeout,\n\nsetInterval:_setInterval,\nclearInterval:_clearInterval,\n\nsetImmediate:_setImmediate,\nclearImmediate:_clearImmediate,\n\nrequestAnimationFrame:_requestAnimationFrame,\ncancelAnimationFrame:_cancelAnimationFrame};\n\n\nmodule.exports = TimerMixin;","sourceCode":"/*\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar GLOBAL = typeof window === 'undefined' ? global : window;\n\nvar setter = function(_setter, _clearer, array) {\n return function(callback, delta) {\n var id = _setter(function() {\n _clearer.call(this, id);\n callback.apply(this, arguments);\n }.bind(this), delta);\n\n if (!this[array]) {\n this[array] = [id];\n } else {\n this[array].push(id);\n }\n return id;\n };\n};\n\nvar clearer = function(_clearer, array) {\n return function(id) {\n if (this[array]) {\n var index = this[array].indexOf(id);\n if (index !== -1) {\n this[array].splice(index, 1);\n }\n }\n _clearer(id);\n };\n};\n\nvar _timeouts = 'TimerMixin_timeouts';\nvar _clearTimeout = clearer(GLOBAL.clearTimeout, _timeouts);\nvar _setTimeout = setter(GLOBAL.setTimeout, _clearTimeout, _timeouts);\n\nvar _intervals = 'TimerMixin_intervals';\nvar _clearInterval = clearer(GLOBAL.clearInterval, _intervals);\nvar _setInterval = setter(GLOBAL.setInterval, function() {/* noop */}, _intervals);\n\nvar _immediates = 'TimerMixin_immediates';\nvar _clearImmediate = clearer(GLOBAL.clearImmediate, _immediates);\nvar _setImmediate = setter(GLOBAL.setImmediate, _clearImmediate, _immediates);\n\nvar _rafs = 'TimerMixin_rafs';\nvar _cancelAnimationFrame = clearer(GLOBAL.cancelAnimationFrame, _rafs);\nvar _requestAnimationFrame = setter(GLOBAL.requestAnimationFrame, _cancelAnimationFrame, _rafs);\n\nvar TimerMixin = {\n componentWillUnmount: function() {\n this[_timeouts] && this[_timeouts].forEach(this.clearTimeout);\n this[_intervals] && this[_intervals].forEach(this.clearInterval);\n this[_immediates] && this[_immediates].forEach(this.clearImmediate);\n this[_rafs] && this[_rafs].forEach(this.cancelAnimationFrame);\n },\n\n setTimeout: _setTimeout,\n clearTimeout: _clearTimeout,\n\n setInterval: _setInterval,\n clearInterval: _clearInterval,\n\n setImmediate: _setImmediate,\n clearImmediate: _clearImmediate,\n\n requestAnimationFrame: _requestAnimationFrame,\n cancelAnimationFrame: _cancelAnimationFrame,\n};\n\nmodule.exports = TimerMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-timer-mixin/TimerMixin.js"},"mtime":1435958530000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/MapView/MapView.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar Platform=require('Platform');\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar View=require('View');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar deepDiffer=require('deepDiffer');\nvar insetsDiffer=require('insetsDiffer');\nvar merge=require('merge');\nvar requireNativeComponent=require('requireNativeComponent');\n\n\n\n\n\n\n\n\n\nvar MapView=React.createClass({displayName:'MapView',\nmixins:[NativeMethodsMixin],\n\ncheckAnnotationIds:function(annotations){\n\nvar newAnnotations=annotations.map(function(annotation){\nif(!annotation.id){\n\nannotation.id = encodeURIComponent(JSON.stringify(annotation));}\n\n\nreturn annotation;});\n\n\nthis.setState({\nannotations:newAnnotations});},\n\n\n\ncomponentWillMount:function(){\nif(this.props.annotations){\nthis.checkAnnotationIds(this.props.annotations);}},\n\n\n\ncomponentWillReceiveProps:function(nextProps){\nif(nextProps.annotations){\nthis.checkAnnotationIds(nextProps.annotations);}},\n\n\n\npropTypes:{\n\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\n\n\n\n\n\nshowsUserLocation:React.PropTypes.bool,\n\n\n\n\n\nzoomEnabled:React.PropTypes.bool,\n\n\n\n\n\n\n\n\nrotateEnabled:React.PropTypes.bool,\n\n\n\n\n\n\n\n\npitchEnabled:React.PropTypes.bool,\n\n\n\n\n\nscrollEnabled:React.PropTypes.bool,\n\n\n\n\n\n\n\n\nmapType:React.PropTypes.oneOf([\n'standard',\n'satellite',\n'hybrid']),\n\n\n\n\n\n\n\n\nregion:React.PropTypes.shape({\n\n\n\nlatitude:React.PropTypes.number.isRequired,\nlongitude:React.PropTypes.number.isRequired,\n\n\n\n\n\nlatitudeDelta:React.PropTypes.number.isRequired,\nlongitudeDelta:React.PropTypes.number.isRequired}),\n\n\n\n\n\nannotations:React.PropTypes.arrayOf(React.PropTypes.shape({\n\n\n\nlatitude:React.PropTypes.number.isRequired,\nlongitude:React.PropTypes.number.isRequired,\n\n\n\n\nanimateDrop:React.PropTypes.bool,\n\n\n\n\ntitle:React.PropTypes.string,\nsubtitle:React.PropTypes.string,\n\n\n\n\nhasLeftCallout:React.PropTypes.bool,\nhasRightCallout:React.PropTypes.bool,\n\n\n\n\nonLeftCalloutPress:React.PropTypes.func,\nonRightCalloutPress:React.PropTypes.func,\n\n\n\n\nid:React.PropTypes.string})),\n\n\n\n\n\n\nmaxDelta:React.PropTypes.number,\n\n\n\n\nminDelta:React.PropTypes.number,\n\n\n\n\n\nlegalLabelInsets:EdgeInsetsPropType,\n\n\n\n\nonRegionChange:React.PropTypes.func,\n\n\n\n\nonRegionChangeComplete:React.PropTypes.func,\n\n\n\n\nonAnnotationPress:React.PropTypes.func},\n\n\n_onChange:function(event){\nif(event.nativeEvent.continuous){\nthis.props.onRegionChange && \nthis.props.onRegionChange(event.nativeEvent.region);}else \n{\nthis.props.onRegionChangeComplete && \nthis.props.onRegionChangeComplete(event.nativeEvent.region);}},\n\n\n\n_onPress:function(event){\nif(event.nativeEvent.action === 'annotation-click'){\nthis.props.onAnnotationPress && this.props.onAnnotationPress(event.nativeEvent.annotation);}\n\n\nif(event.nativeEvent.action === 'callout-click'){\nif(!this.props.annotations){\nreturn;}\n\n\n\nfor(var i=0;i < this.props.annotations.length;i++) {\nvar annotation=this.props.annotations[i];\nif(annotation.id === event.nativeEvent.annotationId){\n\nif(event.nativeEvent.side === 'left'){\nannotation.onLeftCalloutPress && annotation.onLeftCalloutPress(event.nativeEvent);}else \nif(event.nativeEvent.side === 'right'){\nannotation.onRightCalloutPress && annotation.onRightCalloutPress(event.nativeEvent);}}}}},\n\n\n\n\n\n\n\nrender:function(){\nreturn React.createElement(RCTMap,_extends({},this.props,{onPress:this._onPress,onChange:this._onChange}));}});\n\n\n\nif(Platform.OS === 'android'){\nvar RCTMap=createReactNativeComponentClass({\nvalidAttributes:merge(\nReactNativeViewAttributes.UIView,{\nactive:true,\nshowsUserLocation:true,\nzoomEnabled:true,\nrotateEnabled:true,\npitchEnabled:true,\nscrollEnabled:true,\nregion:{diff:deepDiffer},\nannotations:{diff:deepDiffer},\nmaxDelta:true,\nminDelta:true,\nlegalLabelInsets:{diff:insetsDiffer}}),\n\n\nuiViewClassName:'RCTMap'});}else \n\n{\nvar RCTMap=requireNativeComponent('RCTMap',MapView);}\n\n\nmodule.exports = MapView;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule MapView\n * @flow\n */\n'use strict';\n\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar Platform = require('Platform');\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar View = require('View');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar deepDiffer = require('deepDiffer');\nvar insetsDiffer = require('insetsDiffer');\nvar merge = require('merge');\nvar requireNativeComponent = require('requireNativeComponent');\n\ntype Event = Object;\ntype MapRegion = {\n latitude: number;\n longitude: number;\n latitudeDelta: number;\n longitudeDelta: number;\n};\n\nvar MapView = React.createClass({\n mixins: [NativeMethodsMixin],\n\n checkAnnotationIds: function (annotations: Array<Object>) {\n\n var newAnnotations = annotations.map(function (annotation) {\n if (!annotation.id) {\n // TODO: add a base64 (or similar) encoder here\n annotation.id = encodeURIComponent(JSON.stringify(annotation));\n }\n\n return annotation;\n });\n\n this.setState({\n annotations: newAnnotations\n });\n },\n\n componentWillMount: function() {\n if (this.props.annotations) {\n this.checkAnnotationIds(this.props.annotations);\n }\n },\n\n componentWillReceiveProps: function(nextProps: Object) {\n if (nextProps.annotations) {\n this.checkAnnotationIds(nextProps.annotations);\n }\n },\n\n propTypes: {\n /**\n * Used to style and layout the `MapView`. See `StyleSheet.js` and\n * `ViewStylePropTypes.js` for more info.\n */\n style: View.propTypes.style,\n\n /**\n * If `true` the app will ask for the user's location and focus on it.\n * Default value is `false`.\n *\n * **NOTE**: You need to add NSLocationWhenInUseUsageDescription key in\n * Info.plist to enable geolocation, otherwise it is going\n * to *fail silently*!\n */\n showsUserLocation: React.PropTypes.bool,\n\n /**\n * If `false` the user won't be able to pinch/zoom the map.\n * Default `value` is true.\n */\n zoomEnabled: React.PropTypes.bool,\n\n /**\n * When this property is set to `true` and a valid camera is associated with\n * the map, the cameras heading angle is used to rotate the plane of the\n * map around its center point. When this property is set to `false`, the\n * cameras heading angle is ignored and the map is always oriented so\n * that true north is situated at the top of the map view\n */\n rotateEnabled: React.PropTypes.bool,\n\n /**\n * When this property is set to `true` and a valid camera is associated\n * with the map, the cameras pitch angle is used to tilt the plane\n * of the map. When this property is set to `false`, the cameras pitch\n * angle is ignored and the map is always displayed as if the user\n * is looking straight down onto it.\n */\n pitchEnabled: React.PropTypes.bool,\n\n /**\n * If `false` the user won't be able to change the map region being displayed.\n * Default value is `true`.\n */\n scrollEnabled: React.PropTypes.bool,\n\n /**\n * The map type to be displayed.\n *\n * - standard: standard road map (default)\n * - satellite: satellite view\n * - hybrid: satellite view with roads and points of interest overlayed\n */\n mapType: React.PropTypes.oneOf([\n 'standard',\n 'satellite',\n 'hybrid',\n ]),\n\n /**\n * The region to be displayed by the map.\n *\n * The region is defined by the center coordinates and the span of\n * coordinates to display.\n */\n region: React.PropTypes.shape({\n /**\n * Coordinates for the center of the map.\n */\n latitude: React.PropTypes.number.isRequired,\n longitude: React.PropTypes.number.isRequired,\n\n /**\n * Distance between the minimun and the maximum latitude/longitude\n * to be displayed.\n */\n latitudeDelta: React.PropTypes.number.isRequired,\n longitudeDelta: React.PropTypes.number.isRequired,\n }),\n\n /**\n * Map annotations with title/subtitle.\n */\n annotations: React.PropTypes.arrayOf(React.PropTypes.shape({\n /**\n * The location of the annotation.\n */\n latitude: React.PropTypes.number.isRequired,\n longitude: React.PropTypes.number.isRequired,\n\n /**\n * Whether the pin drop should be animated or not\n */\n animateDrop: React.PropTypes.bool,\n\n /**\n * Annotation title/subtile.\n */\n title: React.PropTypes.string,\n subtitle: React.PropTypes.string,\n\n /**\n * Whether the Annotation has callout buttons.\n */\n hasLeftCallout: React.PropTypes.bool,\n hasRightCallout: React.PropTypes.bool,\n\n /**\n * Event handlers for callout buttons.\n */\n onLeftCalloutPress: React.PropTypes.func,\n onRightCalloutPress: React.PropTypes.func,\n\n /**\n * annotation id\n */\n id: React.PropTypes.string\n\n })),\n\n /**\n * Maximum size of area that can be displayed.\n */\n maxDelta: React.PropTypes.number,\n\n /**\n * Minimum size of area that can be displayed.\n */\n minDelta: React.PropTypes.number,\n\n /**\n * Insets for the map's legal label, originally at bottom left of the map.\n * See `EdgeInsetsPropType.js` for more information.\n */\n legalLabelInsets: EdgeInsetsPropType,\n\n /**\n * Callback that is called continuously when the user is dragging the map.\n */\n onRegionChange: React.PropTypes.func,\n\n /**\n * Callback that is called once, when the user is done moving the map.\n */\n onRegionChangeComplete: React.PropTypes.func,\n\n /**\n * Callback that is called once, when the user is clicked on a annotation.\n */\n onAnnotationPress: React.PropTypes.func,\n },\n\n _onChange: function(event: Event) {\n if (event.nativeEvent.continuous) {\n this.props.onRegionChange &&\n this.props.onRegionChange(event.nativeEvent.region);\n } else {\n this.props.onRegionChangeComplete &&\n this.props.onRegionChangeComplete(event.nativeEvent.region);\n }\n },\n\n _onPress: function(event: Event) {\n if (event.nativeEvent.action === 'annotation-click') {\n this.props.onAnnotationPress && this.props.onAnnotationPress(event.nativeEvent.annotation);\n }\n\n if (event.nativeEvent.action === 'callout-click') {\n if (!this.props.annotations) {\n return;\n }\n\n // Find the annotation with the id of what has been pressed\n for (var i = 0; i < this.props.annotations.length; i++) {\n var annotation = this.props.annotations[i];\n if (annotation.id === event.nativeEvent.annotationId) {\n // Pass the right function\n if (event.nativeEvent.side === 'left') {\n annotation.onLeftCalloutPress && annotation.onLeftCalloutPress(event.nativeEvent);\n } else if (event.nativeEvent.side === 'right') {\n annotation.onRightCalloutPress && annotation.onRightCalloutPress(event.nativeEvent);\n }\n }\n }\n\n }\n },\n\n render: function() {\n return <RCTMap {...this.props} onPress={this._onPress} onChange={this._onChange} />;\n },\n});\n\nif (Platform.OS === 'android') {\n var RCTMap = createReactNativeComponentClass({\n validAttributes: merge(\n ReactNativeViewAttributes.UIView, {\n active: true,\n showsUserLocation: true,\n zoomEnabled: true,\n rotateEnabled: true,\n pitchEnabled: true,\n scrollEnabled: true,\n region: {diff: deepDiffer},\n annotations: {diff: deepDiffer},\n maxDelta: true,\n minDelta: true,\n legalLabelInsets: {diff: insetsDiffer},\n }\n ),\n uiViewClassName: 'RCTMap',\n });\n} else {\n var RCTMap = requireNativeComponent('RCTMap', MapView);\n}\n\nmodule.exports = MapView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/MapView/MapView.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigator.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AnimationsDebugModule=require('NativeModules').AnimationsDebugModule;\nvar Dimensions=require('Dimensions');\nvar InteractionMixin=require('InteractionMixin');\nvar Map=require('Map');\nvar NavigationContext=require('NavigationContext');\nvar NavigatorBreadcrumbNavigationBar=require('NavigatorBreadcrumbNavigationBar');\nvar NavigatorNavigationBar=require('NavigatorNavigationBar');\nvar NavigatorSceneConfigs=require('NavigatorSceneConfigs');\nvar PanResponder=require('PanResponder');\nvar React=require('React');\nvar StaticContainer=require('StaticContainer.react');\nvar StyleSheet=require('StyleSheet');\nvar Subscribable=require('Subscribable');\nvar TimerMixin=require('react-timer-mixin');\nvar View=require('View');\n\nvar clamp=require('clamp');\nvar flattenStyle=require('flattenStyle');\nvar invariant=require('invariant');\nvar rebound=require('rebound');\n\nvar PropTypes=React.PropTypes;\n\n\n\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar SCREEN_HEIGHT=Dimensions.get('window').height;\nvar SCENE_DISABLED_NATIVE_PROPS={\nstyle:{\nleft:SCREEN_WIDTH,\nopacity:0}};\n\n\n\nvar __uid=0;\nfunction getuid(){\nreturn __uid++;}\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nflex:1,\noverflow:'hidden'},\n\ndefaultSceneStyle:{\nposition:'absolute',\nleft:0,\nright:0,\nbottom:0,\ntop:0},\n\nbaseScene:{\nposition:'absolute',\noverflow:'hidden',\nleft:0,\nright:0,\nbottom:0,\ntop:0},\n\ndisabledScene:{\nleft:SCREEN_WIDTH},\n\ntransitioner:{\nflex:1,\nbackgroundColor:'transparent',\noverflow:'hidden'}});\n\n\n\nvar GESTURE_ACTIONS=[\n'pop',\n'jumpBack',\n'jumpForward'];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Navigator=React.createClass({displayName:'Navigator',\n\npropTypes:{\n\n\n\n\n\n\n\n\n\nconfigureScene:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\nrenderScene:PropTypes.func.isRequired,\n\n\n\n\n\n\n\ninitialRoute:PropTypes.object,\n\n\n\n\n\n\ninitialRouteStack:PropTypes.arrayOf(PropTypes.object),\n\n\n\n\n\n\n\nonWillFocus:PropTypes.func,\n\n\n\n\n\n\n\n\nonDidFocus:PropTypes.func,\n\n\n\n\nonItemRef:PropTypes.func,\n\n\n\n\n\nnavigationBar:PropTypes.node,\n\n\n\n\nnavigator:PropTypes.object,\n\n\n\n\nsceneStyle:View.propTypes.style},\n\n\nstatics:{\nBreadcrumbNavigationBar:NavigatorBreadcrumbNavigationBar,\nNavigationBar:NavigatorNavigationBar,\nSceneConfigs:NavigatorSceneConfigs},\n\n\nmixins:[TimerMixin,InteractionMixin,Subscribable.Mixin],\n\ngetDefaultProps:function(){\nreturn {\nconfigureScene:function(){return NavigatorSceneConfigs.PushFromRight;},\nsceneStyle:styles.defaultSceneStyle};},\n\n\n\ngetInitialState:function(){var _this=this;\nthis._renderedSceneMap = new Map();\n\nvar routeStack=this.props.initialRouteStack || [this.props.initialRoute];\ninvariant(\nrouteStack.length >= 1,\n'Navigator requires props.initialRoute or props.initialRouteStack.');\n\nvar initialRouteIndex=routeStack.length - 1;\nif(this.props.initialRoute){\ninitialRouteIndex = routeStack.indexOf(this.props.initialRoute);\ninvariant(\ninitialRouteIndex !== -1,\n'initialRoute is not in initialRouteStack.');}\n\n\nreturn {\nsceneConfigStack:routeStack.map(\nfunction(route){return _this.props.configureScene(route);}),\n\nidStack:routeStack.map(function(){return getuid();}),\nrouteStack:routeStack,\npresentedIndex:initialRouteIndex,\ntransitionFromIndex:null,\nactiveGesture:null,\npendingGestureProgress:null,\ntransitionQueue:[]};},\n\n\n\ncomponentWillMount:function(){var _this2=this;\n\nthis.__defineGetter__('navigationContext',this._getNavigationContext);\n\nthis._subRouteFocus = [];\nthis.parentNavigator = this.props.navigator;\nthis._handlers = {};\nthis.springSystem = new rebound.SpringSystem();\nthis.spring = this.springSystem.createSpring();\nthis.spring.setRestSpeedThreshold(0.05);\nthis.spring.setCurrentValue(0).setAtRest();\nthis.spring.addListener({\nonSpringEndStateChange:function(){\nif(!_this2._interactionHandle){\n_this2._interactionHandle = _this2.createInteractionHandle();}},\n\n\nonSpringUpdate:function(){\n_this2._handleSpringUpdate();},\n\nonSpringAtRest:function(){\n_this2._completeTransition();}});\n\n\nthis.panGesture = PanResponder.create({\nonMoveShouldSetPanResponder:this._handleMoveShouldSetPanResponder,\nonPanResponderGrant:this._handlePanResponderGrant,\nonPanResponderRelease:this._handlePanResponderRelease,\nonPanResponderMove:this._handlePanResponderMove,\nonPanResponderTerminate:this._handlePanResponderTerminate});\n\nthis._itemRefs = {};\nthis._interactionHandle = null;\nthis._emitWillFocus(this.state.routeStack[this.state.presentedIndex]);},\n\n\ncomponentDidMount:function(){\nthis._handleSpringUpdate();\nthis._emitDidFocus(this.state.routeStack[this.state.presentedIndex]);},\n\n\ncomponentWillUnmount:function(){\nif(this._navigationContext){\nthis._navigationContext.dispose();\nthis._navigationContext = null;}},\n\n\n\n\n\n\n\n\n\n\nimmediatelyResetRouteStack:function(nextRouteStack){var _this3=this;\nvar destIndex=nextRouteStack.length - 1;\nthis.setState({\nidStack:nextRouteStack.map(getuid),\nrouteStack:nextRouteStack,\nsceneConfigStack:nextRouteStack.map(\nthis.props.configureScene),\n\npresentedIndex:destIndex,\nactiveGesture:null,\ntransitionFromIndex:null,\ntransitionQueue:[]},\nfunction(){\n_this3._handleSpringUpdate();});},\n\n\n\n_transitionTo:function(destIndex,velocity,jumpSpringTo,cb){\nif(destIndex === this.state.presentedIndex){\nreturn;}\n\nif(this.state.transitionFromIndex !== null){\nthis.state.transitionQueue.push({\ndestIndex:destIndex,\nvelocity:velocity,\ncb:cb});\n\nreturn;}\n\nthis.state.transitionFromIndex = this.state.presentedIndex;\nthis.state.presentedIndex = destIndex;\nthis.state.transitionCb = cb;\nthis._onAnimationStart();\nif(AnimationsDebugModule){\nAnimationsDebugModule.startRecordingFps();}\n\nvar sceneConfig=this.state.sceneConfigStack[this.state.transitionFromIndex] || \nthis.state.sceneConfigStack[this.state.presentedIndex];\ninvariant(\nsceneConfig,\n'Cannot configure scene at index ' + this.state.transitionFromIndex);\n\nif(jumpSpringTo != null){\nthis.spring.setCurrentValue(jumpSpringTo);}\n\nthis.spring.setOvershootClampingEnabled(true);\nthis.spring.getSpringConfig().friction = sceneConfig.springFriction;\nthis.spring.getSpringConfig().tension = sceneConfig.springTension;\nthis.spring.setVelocity(velocity || sceneConfig.defaultTransitionVelocity);\nthis.spring.setEndValue(1);},\n\n\n\n\n\n\n_handleSpringUpdate:function(){\n\nif(this.state.transitionFromIndex != null){\nthis._transitionBetween(\nthis.state.transitionFromIndex,\nthis.state.presentedIndex,\nthis.spring.getCurrentValue());}else \n\nif(this.state.activeGesture != null){\nvar presentedToIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nthis._transitionBetween(\nthis.state.presentedIndex,\npresentedToIndex,\nthis.spring.getCurrentValue());}},\n\n\n\n\n\n\n\n_completeTransition:function(){\nif(this.spring.getCurrentValue() !== 1 && this.spring.getCurrentValue() !== 0){\n\n\nif(this.state.pendingGestureProgress){\nthis.state.pendingGestureProgress = null;}\n\nreturn;}\n\nthis._onAnimationEnd();\nvar presentedIndex=this.state.presentedIndex;\nvar didFocusRoute=this._subRouteFocus[presentedIndex] || this.state.routeStack[presentedIndex];\nthis._emitDidFocus(didFocusRoute);\nif(AnimationsDebugModule){\nAnimationsDebugModule.stopRecordingFps(Date.now());}\n\nthis.state.transitionFromIndex = null;\nthis.spring.setCurrentValue(0).setAtRest();\nthis._hideScenes();\nif(this.state.transitionCb){\nthis.state.transitionCb();\nthis.state.transitionCb = null;}\n\nif(this._interactionHandle){\nthis.clearInteractionHandle(this._interactionHandle);\nthis._interactionHandle = null;}\n\nif(this.state.pendingGestureProgress){\n\n\nvar gestureToIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nthis._enableScene(gestureToIndex);\nthis.spring.setEndValue(this.state.pendingGestureProgress);\nreturn;}\n\nif(this.state.transitionQueue.length){\nvar queuedTransition=this.state.transitionQueue.shift();\nthis._enableScene(queuedTransition.destIndex);\nthis._emitWillFocus(this.state.routeStack[queuedTransition.destIndex]);\nthis._transitionTo(\nqueuedTransition.destIndex,\nqueuedTransition.velocity,\nnull,\nqueuedTransition.cb);}},\n\n\n\n\n_emitDidFocus:function(route){\nthis.navigationContext.emit('didfocus',{route:route});\n\nif(this.props.onDidFocus){\nthis.props.onDidFocus(route);}},\n\n\n\n_emitWillFocus:function(route){\nthis.navigationContext.emit('willfocus',{route:route});\n\nvar navBar=this._navBar;\nif(navBar && navBar.handleWillFocus){\nnavBar.handleWillFocus(route);}\n\nif(this.props.onWillFocus){\nthis.props.onWillFocus(route);}},\n\n\n\n\n\n\n_hideScenes:function(){\nvar gesturingToIndex=null;\nif(this.state.activeGesture){\ngesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);}\n\nfor(var i=0;i < this.state.routeStack.length;i++) {\nif(i === this.state.presentedIndex || \ni === this.state.transitionFromIndex || \ni === gesturingToIndex){\ncontinue;}\n\nthis._disableScene(i);}},\n\n\n\n\n\n\n_disableScene:function(sceneIndex){\nthis.refs['scene_' + sceneIndex] && \nthis.refs['scene_' + sceneIndex].setNativeProps(SCENE_DISABLED_NATIVE_PROPS);},\n\n\n\n\n\n_enableScene:function(sceneIndex){\n\nvar sceneStyle=flattenStyle([styles.baseScene,this.props.sceneStyle]);\n\nvar enabledSceneNativeProps={\nleft:sceneStyle.left};\n\nif(sceneIndex !== this.state.transitionFromIndex && \nsceneIndex !== this.state.presentedIndex){\n\n\nenabledSceneNativeProps.opacity = 0;}\n\nthis.refs['scene_' + sceneIndex] && \nthis.refs['scene_' + sceneIndex].setNativeProps(enabledSceneNativeProps);},\n\n\n_onAnimationStart:function(){\nvar fromIndex=this.state.presentedIndex;\nvar toIndex=this.state.presentedIndex;\nif(this.state.transitionFromIndex != null){\nfromIndex = this.state.transitionFromIndex;}else \nif(this.state.activeGesture){\ntoIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);}\n\nthis._setRenderSceneToHarwareTextureAndroid(fromIndex,true);\nthis._setRenderSceneToHarwareTextureAndroid(toIndex,true);\nvar navBar=this._navBar;\nif(navBar && navBar.onAnimationStart){\nnavBar.onAnimationStart(fromIndex,toIndex);}},\n\n\n\n_onAnimationEnd:function(){\nvar max=this.state.routeStack.length - 1;\nfor(var index=0;index <= max;index++) {\nthis._setRenderSceneToHarwareTextureAndroid(index,false);}\n\n\nvar navBar=this._navBar;\nif(navBar && navBar.onAnimationEnd){\nnavBar.onAnimationEnd();}},\n\n\n\n_setRenderSceneToHarwareTextureAndroid:function(sceneIndex,shouldRenderToHardwareTexture){\nvar viewAtIndex=this.refs['scene_' + sceneIndex];\nif(viewAtIndex === null || viewAtIndex === undefined){\nreturn;}\n\nviewAtIndex.setNativeProps({renderToHardwareTextureAndroid:shouldRenderToHardwareTexture});},\n\n\n_handleTouchStart:function(){\nthis._eligibleGestures = GESTURE_ACTIONS;},\n\n\n_handleMoveShouldSetPanResponder:function(e,gestureState){\nvar sceneConfig=this.state.sceneConfigStack[this.state.presentedIndex];\nthis._expectingGestureGrant = this._matchGestureAction(this._eligibleGestures,sceneConfig.gestures,gestureState);\nreturn !!this._expectingGestureGrant;},\n\n\n_doesGestureOverswipe:function(gestureName){\nvar wouldOverswipeBack=this.state.presentedIndex <= 0 && (\ngestureName === 'pop' || gestureName === 'jumpBack');\nvar wouldOverswipeForward=this.state.presentedIndex >= this.state.routeStack.length - 1 && \ngestureName === 'jumpForward';\nreturn wouldOverswipeForward || wouldOverswipeBack;},\n\n\n_handlePanResponderGrant:function(e,gestureState){\ninvariant(\nthis._expectingGestureGrant,\n'Responder granted unexpectedly.');\n\nthis._attachGesture(this._expectingGestureGrant);\nthis._onAnimationStart();\nthis._expectingGestureGrant = null;},\n\n\n_deltaForGestureAction:function(gestureAction){\nswitch(gestureAction){\ncase 'pop':\ncase 'jumpBack':\nreturn -1;\ncase 'jumpForward':\nreturn 1;\ndefault:\ninvariant(false,'Unsupported gesture action ' + gestureAction);\nreturn;}},\n\n\n\n_handlePanResponderRelease:function(e,gestureState){var _this4=this;\nvar sceneConfig=this.state.sceneConfigStack[this.state.presentedIndex];\nvar releaseGestureAction=this.state.activeGesture;\nif(!releaseGestureAction){\n\nreturn;}\n\nvar releaseGesture=sceneConfig.gestures[releaseGestureAction];\nvar destIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nif(this.spring.getCurrentValue() === 0){\n\nthis.spring.setCurrentValue(0).setAtRest();\nthis._completeTransition();\nreturn;}\n\nvar isTravelVertical=releaseGesture.direction === 'top-to-bottom' || releaseGesture.direction === 'bottom-to-top';\nvar isTravelInverted=releaseGesture.direction === 'right-to-left' || releaseGesture.direction === 'bottom-to-top';\nvar velocity,gestureDistance;\nif(isTravelVertical){\nvelocity = isTravelInverted?-gestureState.vy:gestureState.vy;\ngestureDistance = isTravelInverted?-gestureState.dy:gestureState.dy;}else \n{\nvelocity = isTravelInverted?-gestureState.vx:gestureState.vx;\ngestureDistance = isTravelInverted?-gestureState.dx:gestureState.dx;}\n\nvar transitionVelocity=clamp(-10,velocity,10);\nif(Math.abs(velocity) < releaseGesture.notMoving){\n\nvar hasGesturedEnoughToComplete=gestureDistance > releaseGesture.fullDistance * releaseGesture.stillCompletionRatio;\ntransitionVelocity = hasGesturedEnoughToComplete?releaseGesture.snapVelocity:-releaseGesture.snapVelocity;}\n\nif(transitionVelocity < 0 || this._doesGestureOverswipe(releaseGestureAction)){\n\n\nif(this.state.transitionFromIndex == null){\n\nvar transitionBackToPresentedIndex=this.state.presentedIndex;\n\nthis.state.presentedIndex = destIndex;\nthis._transitionTo(\ntransitionBackToPresentedIndex,\n-transitionVelocity,\n1 - this.spring.getCurrentValue());}}else \n\n\n{\n\nthis._emitWillFocus(this.state.routeStack[destIndex]);\nthis._transitionTo(\ndestIndex,\ntransitionVelocity,\nnull,\nfunction(){\nif(releaseGestureAction === 'pop'){\n_this4._cleanScenesPastIndex(destIndex);}});}\n\n\n\n\nthis._detachGesture();},\n\n\n_handlePanResponderTerminate:function(e,gestureState){\nvar destIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nthis._detachGesture();\nvar transitionBackToPresentedIndex=this.state.presentedIndex;\n\nthis.state.presentedIndex = destIndex;\nthis._transitionTo(\ntransitionBackToPresentedIndex,\nnull,\n1 - this.spring.getCurrentValue());},\n\n\n\n_attachGesture:function(gestureId){\nthis.state.activeGesture = gestureId;\nvar gesturingToIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nthis._enableScene(gesturingToIndex);},\n\n\n_detachGesture:function(){\nthis.state.activeGesture = null;\nthis.state.pendingGestureProgress = null;\nthis._hideScenes();},\n\n\n_handlePanResponderMove:function(e,gestureState){\nvar sceneConfig=this.state.sceneConfigStack[this.state.presentedIndex];\nif(this.state.activeGesture){\nvar gesture=sceneConfig.gestures[this.state.activeGesture];\nreturn this._moveAttachedGesture(gesture,gestureState);}\n\nvar matchedGesture=this._matchGestureAction(GESTURE_ACTIONS,sceneConfig.gestures,gestureState);\nif(matchedGesture){\nthis._attachGesture(matchedGesture);}},\n\n\n\n_moveAttachedGesture:function(gesture,gestureState){\nvar isTravelVertical=gesture.direction === 'top-to-bottom' || gesture.direction === 'bottom-to-top';\nvar isTravelInverted=gesture.direction === 'right-to-left' || gesture.direction === 'bottom-to-top';\nvar distance=isTravelVertical?gestureState.dy:gestureState.dx;\ndistance = isTravelInverted?-distance:distance;\nvar gestureDetectMovement=gesture.gestureDetectMovement;\nvar nextProgress=(distance - gestureDetectMovement) / (\ngesture.fullDistance - gestureDetectMovement);\nif(nextProgress < 0 && gesture.isDetachable){\nvar gesturingToIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nthis._transitionBetween(this.state.presentedIndex,gesturingToIndex,0);\nthis._detachGesture();\nif(this.state.pendingGestureProgress != null){\nthis.spring.setCurrentValue(0);}\n\nreturn;}\n\nif(this._doesGestureOverswipe(this.state.activeGesture)){\nvar frictionConstant=gesture.overswipe.frictionConstant;\nvar frictionByDistance=gesture.overswipe.frictionByDistance;\nvar frictionRatio=1 / (frictionConstant + Math.abs(nextProgress) * frictionByDistance);\nnextProgress *= frictionRatio;}\n\nnextProgress = clamp(0,nextProgress,1);\nif(this.state.transitionFromIndex != null){\nthis.state.pendingGestureProgress = nextProgress;}else \nif(this.state.pendingGestureProgress){\nthis.spring.setEndValue(nextProgress);}else \n{\nthis.spring.setCurrentValue(nextProgress);}},\n\n\n\n_matchGestureAction:function(eligibleGestures,gestures,gestureState){var _this5=this;\nif(!gestures){\nreturn null;}\n\nvar matchedGesture=null;\neligibleGestures.some(function(gestureName,gestureIndex){\nvar gesture=gestures[gestureName];\nif(!gesture){\nreturn;}\n\nif(gesture.overswipe == null && _this5._doesGestureOverswipe(gestureName)){\n\nreturn false;}\n\nvar isTravelVertical=gesture.direction === 'top-to-bottom' || gesture.direction === 'bottom-to-top';\nvar isTravelInverted=gesture.direction === 'right-to-left' || gesture.direction === 'bottom-to-top';\nvar currentLoc=isTravelVertical?gestureState.moveY:gestureState.moveX;\nvar travelDist=isTravelVertical?gestureState.dy:gestureState.dx;\nvar oppositeAxisTravelDist=\nisTravelVertical?gestureState.dx:gestureState.dy;\nvar edgeHitWidth=gesture.edgeHitWidth;\nif(isTravelInverted){\ncurrentLoc = -currentLoc;\ntravelDist = -travelDist;\noppositeAxisTravelDist = -oppositeAxisTravelDist;\nedgeHitWidth = isTravelVertical?\n-(SCREEN_HEIGHT - edgeHitWidth):\n-(SCREEN_WIDTH - edgeHitWidth);}\n\nvar moveStartedInRegion=gesture.edgeHitWidth == null || \ncurrentLoc < edgeHitWidth;\nif(!moveStartedInRegion){\nreturn false;}\n\nvar moveTravelledFarEnough=travelDist >= gesture.gestureDetectMovement;\nif(!moveTravelledFarEnough){\nreturn false;}\n\nvar directionIsCorrect=Math.abs(travelDist) > Math.abs(oppositeAxisTravelDist) * gesture.directionRatio;\nif(directionIsCorrect){\nmatchedGesture = gestureName;\nreturn true;}else \n{\n_this5._eligibleGestures = _this5._eligibleGestures.slice().splice(gestureIndex,1);}});\n\n\nreturn matchedGesture;},\n\n\n_transitionSceneStyle:function(fromIndex,toIndex,progress,index){\nvar viewAtIndex=this.refs['scene_' + index];\nif(viewAtIndex === null || viewAtIndex === undefined){\nreturn;}\n\n\nvar sceneConfigIndex=fromIndex < toIndex?toIndex:fromIndex;\nvar sceneConfig=this.state.sceneConfigStack[sceneConfigIndex];\n\nif(!sceneConfig){\nsceneConfig = this.state.sceneConfigStack[sceneConfigIndex - 1];}\n\nvar styleToUse={};\nvar useFn=index < fromIndex || index < toIndex?\nsceneConfig.animationInterpolators.out:\nsceneConfig.animationInterpolators.into;\nvar directionAdjustedProgress=fromIndex < toIndex?progress:1 - progress;\nvar didChange=useFn(styleToUse,directionAdjustedProgress);\nif(didChange){\nviewAtIndex.setNativeProps({style:styleToUse});}},\n\n\n\n_transitionBetween:function(fromIndex,toIndex,progress){\nthis._transitionSceneStyle(fromIndex,toIndex,progress,fromIndex);\nthis._transitionSceneStyle(fromIndex,toIndex,progress,toIndex);\nvar navBar=this._navBar;\nif(navBar && navBar.updateProgress && toIndex >= 0 && fromIndex >= 0){\nnavBar.updateProgress(progress,fromIndex,toIndex);}},\n\n\n\n_handleResponderTerminationRequest:function(){\nreturn false;},\n\n\n_getDestIndexWithinBounds:function(n){\nvar currentIndex=this.state.presentedIndex;\nvar destIndex=currentIndex + n;\ninvariant(\ndestIndex >= 0,\n'Cannot jump before the first route.');\n\nvar maxIndex=this.state.routeStack.length - 1;\ninvariant(\nmaxIndex >= destIndex,\n'Cannot jump past the last route.');\n\nreturn destIndex;},\n\n\n_jumpN:function(n){\nvar destIndex=this._getDestIndexWithinBounds(n);\nthis._enableScene(destIndex);\nthis._emitWillFocus(this.state.routeStack[destIndex]);\nthis._transitionTo(destIndex);},\n\n\njumpTo:function(route){\nvar destIndex=this.state.routeStack.indexOf(route);\ninvariant(\ndestIndex !== -1,\n'Cannot jump to route that is not in the route stack');\n\nthis._jumpN(destIndex - this.state.presentedIndex);},\n\n\njumpForward:function(){\nthis._jumpN(1);},\n\n\njumpBack:function(){\nthis._jumpN(-1);},\n\n\npush:function(route){var _this6=this;\ninvariant(!!route,'Must supply route to push');\nvar activeLength=this.state.presentedIndex + 1;\nvar activeStack=this.state.routeStack.slice(0,activeLength);\nvar activeIDStack=this.state.idStack.slice(0,activeLength);\nvar activeAnimationConfigStack=this.state.sceneConfigStack.slice(0,activeLength);\nvar nextStack=activeStack.concat([route]);\nvar destIndex=nextStack.length - 1;\nvar nextIDStack=activeIDStack.concat([getuid()]);\nvar nextAnimationConfigStack=activeAnimationConfigStack.concat([\nthis.props.configureScene(route)]);\n\nthis._emitWillFocus(nextStack[destIndex]);\nthis.setState({\nidStack:nextIDStack,\nrouteStack:nextStack,\nsceneConfigStack:nextAnimationConfigStack},\nfunction(){\n_this6._enableScene(destIndex);\n_this6._transitionTo(destIndex);});},\n\n\n\n_popN:function(n){var _this7=this;\nif(n === 0){\nreturn;}\n\ninvariant(\nthis.state.presentedIndex - n >= 0,\n'Cannot pop below zero');\n\nvar popIndex=this.state.presentedIndex - n;\nthis._enableScene(popIndex);\nthis._emitWillFocus(this.state.routeStack[popIndex]);\nthis._transitionTo(\npopIndex,\nnull,\nnull,\nfunction(){\n_this7._cleanScenesPastIndex(popIndex);});},\n\n\n\n\npop:function(){\nthis._popN(1);},\n\n\n\n\n\n\n\n\nreplaceAtIndex:function(route,index,cb){var _this8=this;\ninvariant(!!route,'Must supply route to replace');\nif(index < 0){\nindex += this.state.routeStack.length;}\n\n\nif(this.state.routeStack.length <= index){\nreturn;}\n\n\n\n\nvar nextIDStack=this.state.idStack.slice();\nvar nextRouteStack=this.state.routeStack.slice();\nvar nextAnimationModeStack=this.state.sceneConfigStack.slice();\nnextIDStack[index] = getuid();\nnextRouteStack[index] = route;\nnextAnimationModeStack[index] = this.props.configureScene(route);\n\nif(index === this.state.presentedIndex){\nthis._emitWillFocus(route);}\n\nthis.setState({\nidStack:nextIDStack,\nrouteStack:nextRouteStack,\nsceneConfigStack:nextAnimationModeStack},\nfunction(){\nif(index === _this8.state.presentedIndex){\n_this8._emitDidFocus(route);}\n\ncb && cb();});},\n\n\n\n\n\n\nreplace:function(route){\nthis.replaceAtIndex(route,this.state.presentedIndex);},\n\n\n\n\n\nreplacePrevious:function(route){\nthis.replaceAtIndex(route,this.state.presentedIndex - 1);},\n\n\npopToTop:function(){\nthis.popToRoute(this.state.routeStack[0]);},\n\n\npopToRoute:function(route){\nvar indexOfRoute=this.state.routeStack.indexOf(route);\ninvariant(\nindexOfRoute !== -1,\n'Calling popToRoute for a route that doesn\\'t exist!');\n\nvar numToPop=this.state.presentedIndex - indexOfRoute;\nthis._popN(numToPop);},\n\n\nreplacePreviousAndPop:function(route){\nif(this.state.routeStack.length < 2){\nreturn;}\n\nthis.replacePrevious(route);\nthis.pop();},\n\n\nresetTo:function(route){var _this9=this;\ninvariant(!!route,'Must supply route to push');\nthis.replaceAtIndex(route,0,function(){\n\n\nif(_this9.state.presentedIndex > 0){\n_this9._popN(_this9.state.presentedIndex);}});},\n\n\n\n\ngetCurrentRoutes:function(){\n\nreturn this.state.routeStack.slice();},\n\n\n_handleItemRef:function(itemId,route,ref){\nthis._itemRefs[itemId] = ref;\nvar itemIndex=this.state.idStack.indexOf(itemId);\nif(itemIndex === -1){\nreturn;}\n\nthis.props.onItemRef && this.props.onItemRef(ref,itemIndex,route);},\n\n\n_cleanScenesPastIndex:function(index){var _this10=this;\nvar newStackLength=index + 1;\n\nif(newStackLength < this.state.routeStack.length){\nthis.state.idStack.slice(newStackLength).map(function(removingId){\n_this10._itemRefs[removingId] = null;});\n\nthis.setState({\nsceneConfigStack:this.state.sceneConfigStack.slice(0,newStackLength),\nidStack:this.state.idStack.slice(0,newStackLength),\nrouteStack:this.state.routeStack.slice(0,newStackLength)});}},\n\n\n\n\n_renderScene:function(route,i){var _this11=this;\nvar child=this.props.renderScene(\nroute,\nthis);\n\nvar disabledSceneStyle=null;\nif(i !== this.state.presentedIndex){\ndisabledSceneStyle = styles.disabledScene;}\n\nvar originalRef=child.ref;\nif(originalRef != null && typeof originalRef !== 'function'){\nconsole.warn(\n'String refs are not supported for navigator scenes. Use a callback ' + \n'ref instead. Ignoring ref: ' + originalRef);\n\noriginalRef = null;}\n\nreturn (\nReact.createElement(View,{\nkey:this.state.idStack[i],\nref:'scene_' + i,\nonStartShouldSetResponderCapture:function(){\nreturn _this11.state.transitionFromIndex != null || _this11.state.transitionFromIndex != null;},\n\nstyle:[styles.baseScene,this.props.sceneStyle,disabledSceneStyle]},\nReact.cloneElement(child,{\nref:function(component){\n_this11._handleItemRef(_this11.state.idStack[i],route,component);\nif(originalRef){\noriginalRef(component);}}})));},\n\n\n\n\n\n\n\n_renderNavigationBar:function(){var _this12=this;\nif(!this.props.navigationBar){\nreturn null;}\n\nreturn React.cloneElement(this.props.navigationBar,{\nref:function(navBar){_this12._navBar = navBar;},\nnavigator:this,\nnavState:this.state});},\n\n\n\nrender:function(){var _this13=this;\nvar newRenderedSceneMap=new Map();\nvar scenes=this.state.routeStack.map(function(route,index){\nvar renderedScene;\nif(_this13._renderedSceneMap.has(route) && \nindex !== _this13.state.presentedIndex){\nrenderedScene = _this13._renderedSceneMap.get(route);}else \n{\nrenderedScene = _this13._renderScene(route,index);}\n\nnewRenderedSceneMap.set(route,renderedScene);\nreturn renderedScene;});\n\nthis._renderedSceneMap = newRenderedSceneMap;\nreturn (\nReact.createElement(View,{style:[styles.container,this.props.style]},\nReact.createElement(View,_extends({\nstyle:styles.transitioner},\nthis.panGesture.panHandlers,{\nonTouchStart:this._handleTouchStart,\nonResponderTerminationRequest:\nthis._handleResponderTerminationRequest}),\n\nscenes),\n\nthis._renderNavigationBar()));},\n\n\n\n\n_getNavigationContext:function(){\nif(!this._navigationContext){\nthis._navigationContext = new NavigationContext();}\n\nreturn this._navigationContext;}});\n\n\n\nmodule.exports = Navigator;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule Navigator\n */\n /* eslint-disable no-extra-boolean-cast*/\n'use strict';\n\nvar AnimationsDebugModule = require('NativeModules').AnimationsDebugModule;\nvar Dimensions = require('Dimensions');\nvar InteractionMixin = require('InteractionMixin');\nvar Map = require('Map');\nvar NavigationContext = require('NavigationContext');\nvar NavigatorBreadcrumbNavigationBar = require('NavigatorBreadcrumbNavigationBar');\nvar NavigatorNavigationBar = require('NavigatorNavigationBar');\nvar NavigatorSceneConfigs = require('NavigatorSceneConfigs');\nvar PanResponder = require('PanResponder');\nvar React = require('React');\nvar StaticContainer = require('StaticContainer.react');\nvar StyleSheet = require('StyleSheet');\nvar Subscribable = require('Subscribable');\nvar TimerMixin = require('react-timer-mixin');\nvar View = require('View');\n\nvar clamp = require('clamp');\nvar flattenStyle = require('flattenStyle');\nvar invariant = require('invariant');\nvar rebound = require('rebound');\n\nvar PropTypes = React.PropTypes;\n\n// TODO: this is not ideal because there is no guarantee that the navigator\n// is full screen, hwoever we don't have a good way to measure the actual\n// size of the navigator right now, so this is the next best thing.\nvar SCREEN_WIDTH = Dimensions.get('window').width;\nvar SCREEN_HEIGHT = Dimensions.get('window').height;\nvar SCENE_DISABLED_NATIVE_PROPS = {\n style: {\n left: SCREEN_WIDTH,\n opacity: 0,\n },\n};\n\nvar __uid = 0;\nfunction getuid() {\n return __uid++;\n}\n\n// styles moved to the top of the file so getDefaultProps can refer to it\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n defaultSceneStyle: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n },\n baseScene: {\n position: 'absolute',\n overflow: 'hidden',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n },\n disabledScene: {\n left: SCREEN_WIDTH,\n },\n transitioner: {\n flex: 1,\n backgroundColor: 'transparent',\n overflow: 'hidden',\n }\n});\n\nvar GESTURE_ACTIONS = [\n 'pop',\n 'jumpBack',\n 'jumpForward',\n];\n\n/**\n * Use `Navigator` to transition between different scenes in your app. To\n * accomplish this, provide route objects to the navigator to identify each\n * scene, and also a `renderScene` function that the navigator can use to\n * render the scene for a given route.\n *\n * To change the animation or gesture properties of the scene, provide a\n * `configureScene` prop to get the config object for a given route. See\n * `Navigator.SceneConfigs` for default animations and more info on\n * scene config options.\n *\n * ### Basic Usage\n *\n * ```\n * <Navigator\n * initialRoute={{name: 'My First Scene', index: 0}}\n * renderScene={(route, navigator) =>\n * <MySceneComponent\n * name={route.name}\n * onForward={() => {\n * var nextIndex = route.index + 1;\n * navigator.push({\n * name: 'Scene ' + nextIndex,\n * index: nextIndex,\n * });\n * }}\n * onBack={() => {\n * if (route.index > 0) {\n * navigator.pop();\n * }\n * }}\n * />\n * }\n * />\n * ```\n *\n * ### Navigator Methods\n *\n * If you have a ref to the Navigator element, you can invoke several methods\n * on it to trigger navigation:\n *\n * - `getCurrentRoutes()` - returns the current list of routes\n * - `jumpBack()` - Jump backward without unmounting the current scene\n * - `jumpForward()` - Jump forward to the next scene in the route stack\n * - `jumpTo(route)` - Transition to an existing scene without unmounting\n * - `push(route)` - Navigate forward to a new scene, squashing any scenes\n * that you could `jumpForward` to\n * - `pop()` - Transition back and unmount the current scene\n * - `replace(route)` - Replace the current scene with a new route\n * - `replaceAtIndex(route, index)` - Replace a scene as specified by an index\n * - `replacePrevious(route)` - Replace the previous scene\n * - `immediatelyResetRouteStack(routeStack)` - Reset every scene with an\n * array of routes\n * - `popToRoute(route)` - Pop to a particular scene, as specified by it's\n * route. All scenes after it will be unmounted\n * - `popToTop()` - Pop to the first scene in the stack, unmounting every\n * other scene\n *\n */\nvar Navigator = React.createClass({\n\n propTypes: {\n /**\n * Optional function that allows configuration about scene animations and\n * gestures. Will be invoked with the route and should return a scene\n * configuration object\n *\n * ```\n * (route) => Navigator.SceneConfigs.FloatFromRight\n * ```\n */\n configureScene: PropTypes.func,\n\n /**\n * Required function which renders the scene for a given route. Will be\n * invoked with the route and the navigator object\n *\n * ```\n * (route, navigator) =>\n * <MySceneComponent title={route.title} />\n * ```\n */\n renderScene: PropTypes.func.isRequired,\n\n /**\n * Specify a route to start on. A route is an object that the navigator\n * will use to identify each scene to render. `initialRoute` must be\n * a route in the `initialRouteStack` if both props are provided. The\n * `initialRoute` will default to the last item in the `initialRouteStack`.\n */\n initialRoute: PropTypes.object,\n\n /**\n * Provide a set of routes to initially mount. Required if no initialRoute\n * is provided. Otherwise, it will default to an array containing only the\n * `initialRoute`\n */\n initialRouteStack: PropTypes.arrayOf(PropTypes.object),\n\n /**\n * @deprecated\n * Use `navigationContext.addListener('willfocus', callback)` instead.\n *\n * Will emit the target route upon mounting and before each nav transition\n */\n onWillFocus: PropTypes.func,\n\n /**\n * @deprecated\n * Use `navigationContext.addListener('didfocus', callback)` instead.\n *\n * Will be called with the new route of each scene after the transition is\n * complete or after the initial mounting\n */\n onDidFocus: PropTypes.func,\n\n /**\n * Will be called with (ref, indexInStack, route) when the scene ref changes\n */\n onItemRef: PropTypes.func,\n\n /**\n * Optionally provide a navigation bar that persists across scene\n * transitions\n */\n navigationBar: PropTypes.node,\n\n /**\n * Optionally provide the navigator object from a parent Navigator\n */\n navigator: PropTypes.object,\n\n /**\n * Styles to apply to the container of each scene\n */\n sceneStyle: View.propTypes.style,\n },\n\n statics: {\n BreadcrumbNavigationBar: NavigatorBreadcrumbNavigationBar,\n NavigationBar: NavigatorNavigationBar,\n SceneConfigs: NavigatorSceneConfigs,\n },\n\n mixins: [TimerMixin, InteractionMixin, Subscribable.Mixin],\n\n getDefaultProps: function() {\n return {\n configureScene: () => NavigatorSceneConfigs.PushFromRight,\n sceneStyle: styles.defaultSceneStyle,\n };\n },\n\n getInitialState: function() {\n this._renderedSceneMap = new Map();\n\n var routeStack = this.props.initialRouteStack || [this.props.initialRoute];\n invariant(\n routeStack.length >= 1,\n 'Navigator requires props.initialRoute or props.initialRouteStack.'\n );\n var initialRouteIndex = routeStack.length - 1;\n if (this.props.initialRoute) {\n initialRouteIndex = routeStack.indexOf(this.props.initialRoute);\n invariant(\n initialRouteIndex !== -1,\n 'initialRoute is not in initialRouteStack.'\n );\n }\n return {\n sceneConfigStack: routeStack.map(\n (route) => this.props.configureScene(route)\n ),\n idStack: routeStack.map(() => getuid()),\n routeStack,\n presentedIndex: initialRouteIndex,\n transitionFromIndex: null,\n activeGesture: null,\n pendingGestureProgress: null,\n transitionQueue: [],\n };\n },\n\n componentWillMount: function() {\n // TODO(t7489503): Don't need this once ES6 Class landed.\n this.__defineGetter__('navigationContext', this._getNavigationContext);\n\n this._subRouteFocus = [];\n this.parentNavigator = this.props.navigator;\n this._handlers = {};\n this.springSystem = new rebound.SpringSystem();\n this.spring = this.springSystem.createSpring();\n this.spring.setRestSpeedThreshold(0.05);\n this.spring.setCurrentValue(0).setAtRest();\n this.spring.addListener({\n onSpringEndStateChange: () => {\n if (!this._interactionHandle) {\n this._interactionHandle = this.createInteractionHandle();\n }\n },\n onSpringUpdate: () => {\n this._handleSpringUpdate();\n },\n onSpringAtRest: () => {\n this._completeTransition();\n },\n });\n this.panGesture = PanResponder.create({\n onMoveShouldSetPanResponder: this._handleMoveShouldSetPanResponder,\n onPanResponderGrant: this._handlePanResponderGrant,\n onPanResponderRelease: this._handlePanResponderRelease,\n onPanResponderMove: this._handlePanResponderMove,\n onPanResponderTerminate: this._handlePanResponderTerminate,\n });\n this._itemRefs = {};\n this._interactionHandle = null;\n this._emitWillFocus(this.state.routeStack[this.state.presentedIndex]);\n },\n\n componentDidMount: function() {\n this._handleSpringUpdate();\n this._emitDidFocus(this.state.routeStack[this.state.presentedIndex]);\n },\n\n componentWillUnmount: function() {\n if (this._navigationContext) {\n this._navigationContext.dispose();\n this._navigationContext = null;\n }\n },\n\n /**\n * @param {RouteStack} nextRouteStack Next route stack to reinitialize. This\n * doesn't accept stack item `id`s, which implies that all existing items are\n * destroyed, and then potentially recreated according to `routeStack`. Does\n * not animate, immediately replaces and rerenders navigation bar and stack\n * items.\n */\n immediatelyResetRouteStack: function(nextRouteStack) {\n var destIndex = nextRouteStack.length - 1;\n this.setState({\n idStack: nextRouteStack.map(getuid),\n routeStack: nextRouteStack,\n sceneConfigStack: nextRouteStack.map(\n this.props.configureScene\n ),\n presentedIndex: destIndex,\n activeGesture: null,\n transitionFromIndex: null,\n transitionQueue: [],\n }, () => {\n this._handleSpringUpdate();\n });\n },\n\n _transitionTo: function(destIndex, velocity, jumpSpringTo, cb) {\n if (destIndex === this.state.presentedIndex) {\n return;\n }\n if (this.state.transitionFromIndex !== null) {\n this.state.transitionQueue.push({\n destIndex,\n velocity,\n cb,\n });\n return;\n }\n this.state.transitionFromIndex = this.state.presentedIndex;\n this.state.presentedIndex = destIndex;\n this.state.transitionCb = cb;\n this._onAnimationStart();\n if (AnimationsDebugModule) {\n AnimationsDebugModule.startRecordingFps();\n }\n var sceneConfig = this.state.sceneConfigStack[this.state.transitionFromIndex] ||\n this.state.sceneConfigStack[this.state.presentedIndex];\n invariant(\n sceneConfig,\n 'Cannot configure scene at index ' + this.state.transitionFromIndex\n );\n if (jumpSpringTo != null) {\n this.spring.setCurrentValue(jumpSpringTo);\n }\n this.spring.setOvershootClampingEnabled(true);\n this.spring.getSpringConfig().friction = sceneConfig.springFriction;\n this.spring.getSpringConfig().tension = sceneConfig.springTension;\n this.spring.setVelocity(velocity || sceneConfig.defaultTransitionVelocity);\n this.spring.setEndValue(1);\n },\n\n /**\n * This happens for each frame of either a gesture or a transition. If both are\n * happening, we only set values for the transition and the gesture will catch up later\n */\n _handleSpringUpdate: function() {\n // Prioritize handling transition in progress over a gesture:\n if (this.state.transitionFromIndex != null) {\n this._transitionBetween(\n this.state.transitionFromIndex,\n this.state.presentedIndex,\n this.spring.getCurrentValue()\n );\n } else if (this.state.activeGesture != null) {\n var presentedToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._transitionBetween(\n this.state.presentedIndex,\n presentedToIndex,\n this.spring.getCurrentValue()\n );\n }\n },\n\n /**\n * This happens at the end of a transition started by transitionTo, and when the spring catches up to a pending gesture\n */\n _completeTransition: function() {\n if (this.spring.getCurrentValue() !== 1 && this.spring.getCurrentValue() !== 0) {\n // The spring has finished catching up to a gesture in progress. Remove the pending progress\n // and we will be in a normal activeGesture state\n if (this.state.pendingGestureProgress) {\n this.state.pendingGestureProgress = null;\n }\n return;\n }\n this._onAnimationEnd();\n var presentedIndex = this.state.presentedIndex;\n var didFocusRoute = this._subRouteFocus[presentedIndex] || this.state.routeStack[presentedIndex];\n this._emitDidFocus(didFocusRoute);\n if (AnimationsDebugModule) {\n AnimationsDebugModule.stopRecordingFps(Date.now());\n }\n this.state.transitionFromIndex = null;\n this.spring.setCurrentValue(0).setAtRest();\n this._hideScenes();\n if (this.state.transitionCb) {\n this.state.transitionCb();\n this.state.transitionCb = null;\n }\n if (this._interactionHandle) {\n this.clearInteractionHandle(this._interactionHandle);\n this._interactionHandle = null;\n }\n if (this.state.pendingGestureProgress) {\n // A transition completed, but there is already another gesture happening.\n // Enable the scene and set the spring to catch up with the new gesture\n var gestureToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._enableScene(gestureToIndex);\n this.spring.setEndValue(this.state.pendingGestureProgress);\n return;\n }\n if (this.state.transitionQueue.length) {\n var queuedTransition = this.state.transitionQueue.shift();\n this._enableScene(queuedTransition.destIndex);\n this._emitWillFocus(this.state.routeStack[queuedTransition.destIndex]);\n this._transitionTo(\n queuedTransition.destIndex,\n queuedTransition.velocity,\n null,\n queuedTransition.cb\n );\n }\n },\n\n _emitDidFocus: function(route) {\n this.navigationContext.emit('didfocus', {route: route});\n\n if (this.props.onDidFocus) {\n this.props.onDidFocus(route);\n }\n },\n\n _emitWillFocus: function(route) {\n this.navigationContext.emit('willfocus', {route: route});\n\n var navBar = this._navBar;\n if (navBar && navBar.handleWillFocus) {\n navBar.handleWillFocus(route);\n }\n if (this.props.onWillFocus) {\n this.props.onWillFocus(route);\n }\n },\n\n /**\n * Hides all scenes that we are not currently on, gesturing to, or transitioning from\n */\n _hideScenes: function() {\n var gesturingToIndex = null;\n if (this.state.activeGesture) {\n gesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n }\n for (var i = 0; i < this.state.routeStack.length; i++) {\n if (i === this.state.presentedIndex ||\n i === this.state.transitionFromIndex ||\n i === gesturingToIndex) {\n continue;\n }\n this._disableScene(i);\n }\n },\n\n /**\n * Push a scene off the screen, so that opacity:0 scenes will not block touches sent to the presented scenes\n */\n _disableScene: function(sceneIndex) {\n this.refs['scene_' + sceneIndex] &&\n this.refs['scene_' + sceneIndex].setNativeProps(SCENE_DISABLED_NATIVE_PROPS);\n },\n\n /**\n * Put the scene back into the state as defined by props.sceneStyle, so transitions can happen normally\n */\n _enableScene: function(sceneIndex) {\n // First, determine what the defined styles are for scenes in this navigator\n var sceneStyle = flattenStyle([styles.baseScene, this.props.sceneStyle]);\n // Then restore the left value for this scene\n var enabledSceneNativeProps = {\n left: sceneStyle.left,\n };\n if (sceneIndex !== this.state.transitionFromIndex &&\n sceneIndex !== this.state.presentedIndex) {\n // If we are not in a transition from this index, make sure opacity is 0\n // to prevent the enabled scene from flashing over the presented scene\n enabledSceneNativeProps.opacity = 0;\n }\n this.refs['scene_' + sceneIndex] &&\n this.refs['scene_' + sceneIndex].setNativeProps(enabledSceneNativeProps);\n },\n\n _onAnimationStart: function() {\n var fromIndex = this.state.presentedIndex;\n var toIndex = this.state.presentedIndex;\n if (this.state.transitionFromIndex != null) {\n fromIndex = this.state.transitionFromIndex;\n } else if (this.state.activeGesture) {\n toIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n }\n this._setRenderSceneToHarwareTextureAndroid(fromIndex, true);\n this._setRenderSceneToHarwareTextureAndroid(toIndex, true);\n var navBar = this._navBar;\n if (navBar && navBar.onAnimationStart) {\n navBar.onAnimationStart(fromIndex, toIndex);\n }\n },\n\n _onAnimationEnd: function() {\n var max = this.state.routeStack.length - 1;\n for (var index = 0; index <= max; index++) {\n this._setRenderSceneToHarwareTextureAndroid(index, false);\n }\n\n var navBar = this._navBar;\n if (navBar && navBar.onAnimationEnd) {\n navBar.onAnimationEnd();\n }\n },\n\n _setRenderSceneToHarwareTextureAndroid: function(sceneIndex, shouldRenderToHardwareTexture) {\n var viewAtIndex = this.refs['scene_' + sceneIndex];\n if (viewAtIndex === null || viewAtIndex === undefined) {\n return;\n }\n viewAtIndex.setNativeProps({renderToHardwareTextureAndroid: shouldRenderToHardwareTexture});\n },\n\n _handleTouchStart: function() {\n this._eligibleGestures = GESTURE_ACTIONS;\n },\n\n _handleMoveShouldSetPanResponder: function(e, gestureState) {\n var sceneConfig = this.state.sceneConfigStack[this.state.presentedIndex];\n this._expectingGestureGrant = this._matchGestureAction(this._eligibleGestures, sceneConfig.gestures, gestureState);\n return !! this._expectingGestureGrant;\n },\n\n _doesGestureOverswipe: function(gestureName) {\n var wouldOverswipeBack = this.state.presentedIndex <= 0 &&\n (gestureName === 'pop' || gestureName === 'jumpBack');\n var wouldOverswipeForward = this.state.presentedIndex >= this.state.routeStack.length - 1 &&\n gestureName === 'jumpForward';\n return wouldOverswipeForward || wouldOverswipeBack;\n },\n\n _handlePanResponderGrant: function(e, gestureState) {\n invariant(\n this._expectingGestureGrant,\n 'Responder granted unexpectedly.'\n );\n this._attachGesture(this._expectingGestureGrant);\n this._onAnimationStart();\n this._expectingGestureGrant = null;\n },\n\n _deltaForGestureAction: function(gestureAction) {\n switch (gestureAction) {\n case 'pop':\n case 'jumpBack':\n return -1;\n case 'jumpForward':\n return 1;\n default:\n invariant(false, 'Unsupported gesture action ' + gestureAction);\n return;\n }\n },\n\n _handlePanResponderRelease: function(e, gestureState) {\n var sceneConfig = this.state.sceneConfigStack[this.state.presentedIndex];\n var releaseGestureAction = this.state.activeGesture;\n if (!releaseGestureAction) {\n // The gesture may have been detached while responder, so there is no action here\n return;\n }\n var releaseGesture = sceneConfig.gestures[releaseGestureAction];\n var destIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n if (this.spring.getCurrentValue() === 0) {\n // The spring is at zero, so the gesture is already complete\n this.spring.setCurrentValue(0).setAtRest();\n this._completeTransition();\n return;\n }\n var isTravelVertical = releaseGesture.direction === 'top-to-bottom' || releaseGesture.direction === 'bottom-to-top';\n var isTravelInverted = releaseGesture.direction === 'right-to-left' || releaseGesture.direction === 'bottom-to-top';\n var velocity, gestureDistance;\n if (isTravelVertical) {\n velocity = isTravelInverted ? -gestureState.vy : gestureState.vy;\n gestureDistance = isTravelInverted ? -gestureState.dy : gestureState.dy;\n } else {\n velocity = isTravelInverted ? -gestureState.vx : gestureState.vx;\n gestureDistance = isTravelInverted ? -gestureState.dx : gestureState.dx;\n }\n var transitionVelocity = clamp(-10, velocity, 10);\n if (Math.abs(velocity) < releaseGesture.notMoving) {\n // The gesture velocity is so slow, is \"not moving\"\n var hasGesturedEnoughToComplete = gestureDistance > releaseGesture.fullDistance * releaseGesture.stillCompletionRatio;\n transitionVelocity = hasGesturedEnoughToComplete ? releaseGesture.snapVelocity : -releaseGesture.snapVelocity;\n }\n if (transitionVelocity < 0 || this._doesGestureOverswipe(releaseGestureAction)) {\n // This gesture is to an overswiped region or does not have enough velocity to complete\n // If we are currently mid-transition, then this gesture was a pending gesture. Because this gesture takes no action, we can stop here\n if (this.state.transitionFromIndex == null) {\n // There is no current transition, so we need to transition back to the presented index\n var transitionBackToPresentedIndex = this.state.presentedIndex;\n // slight hack: change the presented index for a moment in order to transitionTo correctly\n this.state.presentedIndex = destIndex;\n this._transitionTo(\n transitionBackToPresentedIndex,\n - transitionVelocity,\n 1 - this.spring.getCurrentValue()\n );\n }\n } else {\n // The gesture has enough velocity to complete, so we transition to the gesture's destination\n this._emitWillFocus(this.state.routeStack[destIndex]);\n this._transitionTo(\n destIndex,\n transitionVelocity,\n null,\n () => {\n if (releaseGestureAction === 'pop') {\n this._cleanScenesPastIndex(destIndex);\n }\n }\n );\n }\n this._detachGesture();\n },\n\n _handlePanResponderTerminate: function(e, gestureState) {\n var destIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._detachGesture();\n var transitionBackToPresentedIndex = this.state.presentedIndex;\n // slight hack: change the presented index for a moment in order to transitionTo correctly\n this.state.presentedIndex = destIndex;\n this._transitionTo(\n transitionBackToPresentedIndex,\n null,\n 1 - this.spring.getCurrentValue()\n );\n },\n\n _attachGesture: function(gestureId) {\n this.state.activeGesture = gestureId;\n var gesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._enableScene(gesturingToIndex);\n },\n\n _detachGesture: function() {\n this.state.activeGesture = null;\n this.state.pendingGestureProgress = null;\n this._hideScenes();\n },\n\n _handlePanResponderMove: function(e, gestureState) {\n var sceneConfig = this.state.sceneConfigStack[this.state.presentedIndex];\n if (this.state.activeGesture) {\n var gesture = sceneConfig.gestures[this.state.activeGesture];\n return this._moveAttachedGesture(gesture, gestureState);\n }\n var matchedGesture = this._matchGestureAction(GESTURE_ACTIONS, sceneConfig.gestures, gestureState);\n if (matchedGesture) {\n this._attachGesture(matchedGesture);\n }\n },\n\n _moveAttachedGesture: function(gesture, gestureState) {\n var isTravelVertical = gesture.direction === 'top-to-bottom' || gesture.direction === 'bottom-to-top';\n var isTravelInverted = gesture.direction === 'right-to-left' || gesture.direction === 'bottom-to-top';\n var distance = isTravelVertical ? gestureState.dy : gestureState.dx;\n distance = isTravelInverted ? - distance : distance;\n var gestureDetectMovement = gesture.gestureDetectMovement;\n var nextProgress = (distance - gestureDetectMovement) /\n (gesture.fullDistance - gestureDetectMovement);\n if (nextProgress < 0 && gesture.isDetachable) {\n var gesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._transitionBetween(this.state.presentedIndex, gesturingToIndex, 0);\n this._detachGesture();\n if (this.state.pendingGestureProgress != null) {\n this.spring.setCurrentValue(0);\n }\n return;\n }\n if (this._doesGestureOverswipe(this.state.activeGesture)) {\n var frictionConstant = gesture.overswipe.frictionConstant;\n var frictionByDistance = gesture.overswipe.frictionByDistance;\n var frictionRatio = 1 / ((frictionConstant) + (Math.abs(nextProgress) * frictionByDistance));\n nextProgress *= frictionRatio;\n }\n nextProgress = clamp(0, nextProgress, 1);\n if (this.state.transitionFromIndex != null) {\n this.state.pendingGestureProgress = nextProgress;\n } else if (this.state.pendingGestureProgress) {\n this.spring.setEndValue(nextProgress);\n } else {\n this.spring.setCurrentValue(nextProgress);\n }\n },\n\n _matchGestureAction: function(eligibleGestures, gestures, gestureState) {\n if (!gestures) {\n return null;\n }\n var matchedGesture = null;\n eligibleGestures.some((gestureName, gestureIndex) => {\n var gesture = gestures[gestureName];\n if (!gesture) {\n return;\n }\n if (gesture.overswipe == null && this._doesGestureOverswipe(gestureName)) {\n // cannot swipe past first or last scene without overswiping\n return false;\n }\n var isTravelVertical = gesture.direction === 'top-to-bottom' || gesture.direction === 'bottom-to-top';\n var isTravelInverted = gesture.direction === 'right-to-left' || gesture.direction === 'bottom-to-top';\n var currentLoc = isTravelVertical ? gestureState.moveY : gestureState.moveX;\n var travelDist = isTravelVertical ? gestureState.dy : gestureState.dx;\n var oppositeAxisTravelDist =\n isTravelVertical ? gestureState.dx : gestureState.dy;\n var edgeHitWidth = gesture.edgeHitWidth;\n if (isTravelInverted) {\n currentLoc = -currentLoc;\n travelDist = -travelDist;\n oppositeAxisTravelDist = -oppositeAxisTravelDist;\n edgeHitWidth = isTravelVertical ?\n -(SCREEN_HEIGHT - edgeHitWidth) :\n -(SCREEN_WIDTH - edgeHitWidth);\n }\n var moveStartedInRegion = gesture.edgeHitWidth == null ||\n currentLoc < edgeHitWidth;\n if (!moveStartedInRegion) {\n return false;\n }\n var moveTravelledFarEnough = travelDist >= gesture.gestureDetectMovement;\n if (!moveTravelledFarEnough) {\n return false;\n }\n var directionIsCorrect = Math.abs(travelDist) > Math.abs(oppositeAxisTravelDist) * gesture.directionRatio;\n if (directionIsCorrect) {\n matchedGesture = gestureName;\n return true;\n } else {\n this._eligibleGestures = this._eligibleGestures.slice().splice(gestureIndex, 1);\n }\n });\n return matchedGesture;\n },\n\n _transitionSceneStyle: function(fromIndex, toIndex, progress, index) {\n var viewAtIndex = this.refs['scene_' + index];\n if (viewAtIndex === null || viewAtIndex === undefined) {\n return;\n }\n // Use toIndex animation when we move forwards. Use fromIndex when we move back\n var sceneConfigIndex = fromIndex < toIndex ? toIndex : fromIndex;\n var sceneConfig = this.state.sceneConfigStack[sceneConfigIndex];\n // this happens for overswiping when there is no scene at toIndex\n if (!sceneConfig) {\n sceneConfig = this.state.sceneConfigStack[sceneConfigIndex - 1];\n }\n var styleToUse = {};\n var useFn = index < fromIndex || index < toIndex ?\n sceneConfig.animationInterpolators.out :\n sceneConfig.animationInterpolators.into;\n var directionAdjustedProgress = fromIndex < toIndex ? progress : 1 - progress;\n var didChange = useFn(styleToUse, directionAdjustedProgress);\n if (didChange) {\n viewAtIndex.setNativeProps({style: styleToUse});\n }\n },\n\n _transitionBetween: function(fromIndex, toIndex, progress) {\n this._transitionSceneStyle(fromIndex, toIndex, progress, fromIndex);\n this._transitionSceneStyle(fromIndex, toIndex, progress, toIndex);\n var navBar = this._navBar;\n if (navBar && navBar.updateProgress && toIndex >= 0 && fromIndex >= 0) {\n navBar.updateProgress(progress, fromIndex, toIndex);\n }\n },\n\n _handleResponderTerminationRequest: function() {\n return false;\n },\n\n _getDestIndexWithinBounds: function(n) {\n var currentIndex = this.state.presentedIndex;\n var destIndex = currentIndex + n;\n invariant(\n destIndex >= 0,\n 'Cannot jump before the first route.'\n );\n var maxIndex = this.state.routeStack.length - 1;\n invariant(\n maxIndex >= destIndex,\n 'Cannot jump past the last route.'\n );\n return destIndex;\n },\n\n _jumpN: function(n) {\n var destIndex = this._getDestIndexWithinBounds(n);\n this._enableScene(destIndex);\n this._emitWillFocus(this.state.routeStack[destIndex]);\n this._transitionTo(destIndex);\n },\n\n jumpTo: function(route) {\n var destIndex = this.state.routeStack.indexOf(route);\n invariant(\n destIndex !== -1,\n 'Cannot jump to route that is not in the route stack'\n );\n this._jumpN(destIndex - this.state.presentedIndex);\n },\n\n jumpForward: function() {\n this._jumpN(1);\n },\n\n jumpBack: function() {\n this._jumpN(-1);\n },\n\n push: function(route) {\n invariant(!!route, 'Must supply route to push');\n var activeLength = this.state.presentedIndex + 1;\n var activeStack = this.state.routeStack.slice(0, activeLength);\n var activeIDStack = this.state.idStack.slice(0, activeLength);\n var activeAnimationConfigStack = this.state.sceneConfigStack.slice(0, activeLength);\n var nextStack = activeStack.concat([route]);\n var destIndex = nextStack.length - 1;\n var nextIDStack = activeIDStack.concat([getuid()]);\n var nextAnimationConfigStack = activeAnimationConfigStack.concat([\n this.props.configureScene(route),\n ]);\n this._emitWillFocus(nextStack[destIndex]);\n this.setState({\n idStack: nextIDStack,\n routeStack: nextStack,\n sceneConfigStack: nextAnimationConfigStack,\n }, () => {\n this._enableScene(destIndex);\n this._transitionTo(destIndex);\n });\n },\n\n _popN: function(n) {\n if (n === 0) {\n return;\n }\n invariant(\n this.state.presentedIndex - n >= 0,\n 'Cannot pop below zero'\n );\n var popIndex = this.state.presentedIndex - n;\n this._enableScene(popIndex);\n this._emitWillFocus(this.state.routeStack[popIndex]);\n this._transitionTo(\n popIndex,\n null, // default velocity\n null, // no spring jumping\n () => {\n this._cleanScenesPastIndex(popIndex);\n }\n );\n },\n\n pop: function() {\n this._popN(1);\n },\n\n /**\n * Replace a route in the navigation stack.\n *\n * `index` specifies the route in the stack that should be replaced.\n * If it's negative, it counts from the back.\n */\n replaceAtIndex: function(route, index, cb) {\n invariant(!!route, 'Must supply route to replace');\n if (index < 0) {\n index += this.state.routeStack.length;\n }\n\n if (this.state.routeStack.length <= index) {\n return;\n }\n\n // I don't believe we need to lock for a replace since there's no\n // navigation actually happening\n var nextIDStack = this.state.idStack.slice();\n var nextRouteStack = this.state.routeStack.slice();\n var nextAnimationModeStack = this.state.sceneConfigStack.slice();\n nextIDStack[index] = getuid();\n nextRouteStack[index] = route;\n nextAnimationModeStack[index] = this.props.configureScene(route);\n\n if (index === this.state.presentedIndex) {\n this._emitWillFocus(route);\n }\n this.setState({\n idStack: nextIDStack,\n routeStack: nextRouteStack,\n sceneConfigStack: nextAnimationModeStack,\n }, () => {\n if (index === this.state.presentedIndex) {\n this._emitDidFocus(route);\n }\n cb && cb();\n });\n },\n\n /**\n * Replaces the current scene in the stack.\n */\n replace: function(route) {\n this.replaceAtIndex(route, this.state.presentedIndex);\n },\n\n /**\n * Replace the current route's parent.\n */\n replacePrevious: function(route) {\n this.replaceAtIndex(route, this.state.presentedIndex - 1);\n },\n\n popToTop: function() {\n this.popToRoute(this.state.routeStack[0]);\n },\n\n popToRoute: function(route) {\n var indexOfRoute = this.state.routeStack.indexOf(route);\n invariant(\n indexOfRoute !== -1,\n 'Calling popToRoute for a route that doesn\\'t exist!'\n );\n var numToPop = this.state.presentedIndex - indexOfRoute;\n this._popN(numToPop);\n },\n\n replacePreviousAndPop: function(route) {\n if (this.state.routeStack.length < 2) {\n return;\n }\n this.replacePrevious(route);\n this.pop();\n },\n\n resetTo: function(route) {\n invariant(!!route, 'Must supply route to push');\n this.replaceAtIndex(route, 0, () => {\n // Do not use popToRoute here, because race conditions could prevent the\n // route from existing at this time. Instead, just go to index 0\n if (this.state.presentedIndex > 0) {\n this._popN(this.state.presentedIndex);\n }\n });\n },\n\n getCurrentRoutes: function() {\n // Clone before returning to avoid caller mutating the stack\n return this.state.routeStack.slice();\n },\n\n _handleItemRef: function(itemId, route, ref) {\n this._itemRefs[itemId] = ref;\n var itemIndex = this.state.idStack.indexOf(itemId);\n if (itemIndex === -1) {\n return;\n }\n this.props.onItemRef && this.props.onItemRef(ref, itemIndex, route);\n },\n\n _cleanScenesPastIndex: function(index) {\n var newStackLength = index + 1;\n // Remove any unneeded rendered routes.\n if (newStackLength < this.state.routeStack.length) {\n this.state.idStack.slice(newStackLength).map((removingId) => {\n this._itemRefs[removingId] = null;\n });\n this.setState({\n sceneConfigStack: this.state.sceneConfigStack.slice(0, newStackLength),\n idStack: this.state.idStack.slice(0, newStackLength),\n routeStack: this.state.routeStack.slice(0, newStackLength),\n });\n }\n },\n\n _renderScene: function(route, i) {\n var child = this.props.renderScene(\n route,\n this\n );\n var disabledSceneStyle = null;\n if (i !== this.state.presentedIndex) {\n disabledSceneStyle = styles.disabledScene;\n }\n var originalRef = child.ref;\n if (originalRef != null && typeof originalRef !== 'function') {\n console.warn(\n 'String refs are not supported for navigator scenes. Use a callback ' +\n 'ref instead. Ignoring ref: ' + originalRef\n );\n originalRef = null;\n }\n return (\n <View\n key={this.state.idStack[i]}\n ref={'scene_' + i}\n onStartShouldSetResponderCapture={() => {\n return (this.state.transitionFromIndex != null) || (this.state.transitionFromIndex != null);\n }}\n style={[styles.baseScene, this.props.sceneStyle, disabledSceneStyle]}>\n {React.cloneElement(child, {\n ref: component => {\n this._handleItemRef(this.state.idStack[i], route, component);\n if (originalRef) {\n originalRef(component);\n }\n }\n })}\n </View>\n );\n },\n\n _renderNavigationBar: function() {\n if (!this.props.navigationBar) {\n return null;\n }\n return React.cloneElement(this.props.navigationBar, {\n ref: (navBar) => { this._navBar = navBar; },\n navigator: this,\n navState: this.state,\n });\n },\n\n render: function() {\n var newRenderedSceneMap = new Map();\n var scenes = this.state.routeStack.map((route, index) => {\n var renderedScene;\n if (this._renderedSceneMap.has(route) &&\n index !== this.state.presentedIndex) {\n renderedScene = this._renderedSceneMap.get(route);\n } else {\n renderedScene = this._renderScene(route, index);\n }\n newRenderedSceneMap.set(route, renderedScene);\n return renderedScene;\n });\n this._renderedSceneMap = newRenderedSceneMap;\n return (\n <View style={[styles.container, this.props.style]}>\n <View\n style={styles.transitioner}\n {...this.panGesture.panHandlers}\n onTouchStart={this._handleTouchStart}\n onResponderTerminationRequest={\n this._handleResponderTerminationRequest\n }>\n {scenes}\n </View>\n {this._renderNavigationBar()}\n </View>\n );\n },\n\n _getNavigationContext: function() {\n if (!this._navigationContext) {\n this._navigationContext = new NavigationContext();\n }\n return this._navigationContext;\n }\n});\n\nmodule.exports = Navigator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigator.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Interaction/InteractionMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\nvar InteractionManager=require('InteractionManager');\n\n\n\n\n\n\nvar InteractionMixin={\ncomponentWillUnmount:function(){\nwhile(this._interactionMixinHandles.length) {\nInteractionManager.clearInteractionHandle(\nthis._interactionMixinHandles.pop());}},\n\n\n\n\n_interactionMixinHandles:[],\n\ncreateInteractionHandle:function(){\nvar handle=InteractionManager.createInteractionHandle();\nthis._interactionMixinHandles.push(handle);\nreturn handle;},\n\n\nclearInteractionHandle:function(clearHandle){\nInteractionManager.clearInteractionHandle(clearHandle);\nthis._interactionMixinHandles = this._interactionMixinHandles.filter(\nfunction(handle){return handle !== clearHandle;});},\n\n\n\n\n\n\n\n\nrunAfterInteractions:function(callback){\nInteractionManager.runAfterInteractions(callback);}};\n\n\n\nmodule.exports = InteractionMixin;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule InteractionMixin\n * @flow\n */\n'use strict';\n\nvar InteractionManager = require('InteractionManager');\n\n/**\n * This mixin provides safe versions of InteractionManager start/end methods\n * that ensures `clearInteractionHandle` is always called\n * once per start, even if the component is unmounted.\n */\nvar InteractionMixin = {\n componentWillUnmount: function() {\n while (this._interactionMixinHandles.length) {\n InteractionManager.clearInteractionHandle(\n this._interactionMixinHandles.pop()\n );\n }\n },\n\n _interactionMixinHandles: ([]: Array<number>),\n\n createInteractionHandle: function() {\n var handle = InteractionManager.createInteractionHandle();\n this._interactionMixinHandles.push(handle);\n return handle;\n },\n\n clearInteractionHandle: function(clearHandle: number) {\n InteractionManager.clearInteractionHandle(clearHandle);\n this._interactionMixinHandles = this._interactionMixinHandles.filter(\n handle => handle !== clearHandle\n );\n },\n\n /**\n * Schedule work for after all interactions have completed.\n *\n * @param {function} callback\n */\n runAfterInteractions: function(callback: Function) {\n InteractionManager.runAfterInteractions(callback);\n },\n};\n\nmodule.exports = InteractionMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Interaction/InteractionMixin.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationContext.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'use strict';\n\nvar NavigationEventEmitter=require('NavigationEventEmitter');\n\nvar emptyFunction=require('emptyFunction');\nvar invariant=require('invariant');var \n\n\n\n\n\n\n\nNavigationContext=(function(){\n\n\n\nfunction NavigationContext(){_classCallCheck(this,NavigationContext);\nthis._eventEmitter = new NavigationEventEmitter(this);\nthis._currentRoute = null;\nthis.addListener('willfocus',this._onFocus,this);\nthis.addListener('didfocus',this._onFocus,this);}_createClass(NavigationContext,[{key:'addListener',value:\n\n\n\n\n\n\n\n\nfunction addListener(\neventType,\nlistener,\ncontext)\n{\nvar emitter=this._eventEmitter;\nif(emitter){\nreturn emitter.addListener(eventType,listener,context);}else \n{\nreturn {remove:emptyFunction};}}},{key:'emit',value:\n\n\n\nfunction emit(eventType,data){\nvar emitter=this._eventEmitter;\nif(emitter){\nemitter.emit(eventType,data);}}},{key:'dispose',value:\n\n\n\nfunction dispose(){\nvar emitter=this._eventEmitter;\nif(emitter){\n\nemitter.removeAllListeners();\nthis._eventEmitter = null;\nthis._currentRoute = null;}}},{key:'_onFocus',value:\n\n\n\nfunction _onFocus(event){\ninvariant(\nevent.data && event.data.hasOwnProperty('route'),\n'didfocus event should provide route');\n\nthis._currentRoute = event.data.route;}},{key:'currentRoute',get:function(){return this._currentRoute;}}]);return NavigationContext;})();\n\n\n\nmodule.exports = NavigationContext;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationContext\n */\n'use strict';\n\nvar NavigationEventEmitter = require('NavigationEventEmitter');\n\nvar emptyFunction = require('emptyFunction');\nvar invariant = require('invariant');\n\nimport type * as NavigationEvent from 'NavigationEvent';\nimport type * as EventSubscription from 'EventSubscription';\n\n/**\n * Class that contains the info and methods for app navigation.\n */\nclass NavigationContext {\n _eventEmitter: ?NavigationEventEmitter;\n _currentRoute: any;\n\n constructor() {\n this._eventEmitter = new NavigationEventEmitter(this);\n this._currentRoute = null;\n this.addListener('willfocus', this._onFocus, this);\n this.addListener('didfocus', this._onFocus, this);\n }\n\n // TODO: @flow does not like this getter. Will add @flow check back once\n // getter/setter is supported.\n get currentRoute(): any {\n return this._currentRoute;\n }\n\n addListener(\n eventType: string,\n listener: Function,\n context: ?Object\n ): EventSubscription {\n var emitter = this._eventEmitter;\n if (emitter) {\n return emitter.addListener(eventType, listener, context);\n } else {\n return {remove: emptyFunction};\n }\n }\n\n emit(eventType: String, data: any): void {\n var emitter = this._eventEmitter;\n if (emitter) {\n emitter.emit(eventType, data);\n }\n }\n\n dispose(): void {\n var emitter = this._eventEmitter;\n if (emitter) {\n // clean up everything.\n emitter.removeAllListeners();\n this._eventEmitter = null;\n this._currentRoute = null;\n }\n }\n\n _onFocus(event: NavigationEvent): void {\n invariant(\n event.data && event.data.hasOwnProperty('route'),\n 'didfocus event should provide route'\n );\n this._currentRoute = event.data.route;\n }\n}\n\nmodule.exports = NavigationContext;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationContext.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationEvent.js":{"data":{"code":"'use strict';function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\nNavigationEvent=\n\n\n\n\nfunction NavigationEvent(type,target,data){_classCallCheck(this,NavigationEvent);\nthis.type = type;\nthis.target = target;\nthis.data = data;};\n\n\n\nmodule.exports = NavigationEvent;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule NavigationEvent\n * @flow\n */\n'use strict';\n\nclass NavigationEvent {\n type: String;\n target: Object;\n data: any;\n\n constructor(type: String, target: Object, data: any) {\n this.type = type;\n this.target = target;\n this.data = data;\n }\n}\n\nmodule.exports = NavigationEvent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationEvent.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationEventEmitter.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\nvar NavigationEvent=require('NavigationEvent');var \n\n\n\n\n\n\nNavigationEventEmitter=(function(_EventEmitter){_inherits(NavigationEventEmitter,_EventEmitter);\n\n\n\n\nfunction NavigationEventEmitter(target){_classCallCheck(this,NavigationEventEmitter);\n_get(Object.getPrototypeOf(NavigationEventEmitter.prototype),'constructor',this).call(this);\nthis._emitting = false;\nthis._emitQueue = [];\nthis._target = target;}_createClass(NavigationEventEmitter,[{key:'emit',value:\n\n\nfunction emit(eventType,data){\nif(this._emitting){\n\n\nthis._emitQueue.push({eventType:eventType,data:data});\nreturn;}\n\n\nthis._emitting = true;\nvar event=new NavigationEvent(eventType,this._target,data);\n_get(Object.getPrototypeOf(NavigationEventEmitter.prototype),'emit',this).call(this,eventType,event);\nthis._emitting = false;\n\nwhile(this._emitQueue.length) {\nvar arg=this._emitQueue.shift();\nthis.emit(arg.eventType,arg.data);}}}]);return NavigationEventEmitter;})(EventEmitter);\n\n\n\n\nmodule.exports = NavigationEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationEventEmitter\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\nvar NavigationEvent = require('NavigationEvent');\n\ntype EventParams = {\n eventType: String;\n data: any;\n};\n\nclass NavigationEventEmitter extends EventEmitter {\n _emitQueue: Array<EventParams>;\n _emitting: boolean;\n _target: Object;\n\n constructor(target: Object) {\n super();\n this._emitting = false;\n this._emitQueue = [];\n this._target = target;\n }\n\n emit(eventType: String, data: any): void {\n if (this._emitting) {\n // An event cycle that was previously created hasn't finished yet.\n // Put this event cycle into the queue and will finish them later.\n this._emitQueue.push({eventType, data});\n return;\n }\n\n this._emitting = true;\n var event = new NavigationEvent(eventType, this._target, data);\n super.emit(eventType, event);\n this._emitting = false;\n\n while (this._emitQueue.length) {\n var arg = this._emitQueue.shift();\n this.emit(arg.eventType, arg.data);\n }\n }\n}\n\nmodule.exports = NavigationEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationEventEmitter.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NavigatorBreadcrumbNavigationBarStyles=require('NavigatorBreadcrumbNavigationBarStyles');\nvar NavigatorNavigationBarStyles=require('NavigatorNavigationBarStyles');\nvar React=require('React');\nvar StaticContainer=require('StaticContainer.react');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar invariant=require('invariant');\n\nvar Interpolators=NavigatorBreadcrumbNavigationBarStyles.Interpolators;\nvar PropTypes=React.PropTypes;\n\n\n\n\nvar CRUMB_PROPS=Interpolators.map(function(){return {style:{}};});\nvar ICON_PROPS=Interpolators.map(function(){return {style:{}};});\nvar SEPARATOR_PROPS=Interpolators.map(function(){return {style:{}};});\nvar TITLE_PROPS=Interpolators.map(function(){return {style:{}};});\nvar RIGHT_BUTTON_PROPS=Interpolators.map(function(){return {style:{}};});\n\n\nvar navStatePresentedIndex=function(navState){\nif(navState.presentedIndex !== undefined){\nreturn navState.presentedIndex;}\n\n\nreturn navState.observedTopOfStack;};\n\n\n\n\n\n\n\n\n\n\nvar initStyle=function(index,presentedIndex){\nreturn index === presentedIndex?NavigatorBreadcrumbNavigationBarStyles.Center[index]:\nindex < presentedIndex?NavigatorBreadcrumbNavigationBarStyles.Left[index]:\nNavigatorBreadcrumbNavigationBarStyles.Right[index];};\n\n\nvar NavigatorBreadcrumbNavigationBar=React.createClass({displayName:'NavigatorBreadcrumbNavigationBar',\npropTypes:{\nnavigator:PropTypes.shape({\npush:PropTypes.func,\npop:PropTypes.func,\nreplace:PropTypes.func,\npopToRoute:PropTypes.func,\npopToTop:PropTypes.func}),\n\nrouteMapper:PropTypes.shape({\nrightContentForRoute:PropTypes.func,\ntitleContentForRoute:PropTypes.func,\niconForRoute:PropTypes.func}),\n\nnavState:React.PropTypes.shape({\nrouteStack:React.PropTypes.arrayOf(React.PropTypes.object),\nidStack:React.PropTypes.arrayOf(React.PropTypes.number),\npresentedIndex:React.PropTypes.number}),\n\nstyle:View.propTypes.style},\n\n\nstatics:{\nStyles:NavigatorBreadcrumbNavigationBarStyles},\n\n\n_updateIndexProgress:function(progress,index,fromIndex,toIndex){\nvar amount=toIndex > fromIndex?progress:1 - progress;\nvar oldDistToCenter=index - fromIndex;\nvar newDistToCenter=index - toIndex;\nvar interpolate;\ninvariant(\nInterpolators[index],\n'Cannot find breadcrumb interpolators for ' + index);\n\nif(oldDistToCenter > 0 && newDistToCenter === 0 || \nnewDistToCenter > 0 && oldDistToCenter === 0){\ninterpolate = Interpolators[index].RightToCenter;}else \nif(oldDistToCenter < 0 && newDistToCenter === 0 || \nnewDistToCenter < 0 && oldDistToCenter === 0){\ninterpolate = Interpolators[index].CenterToLeft;}else \nif(oldDistToCenter === newDistToCenter){\ninterpolate = Interpolators[index].RightToCenter;}else \n{\ninterpolate = Interpolators[index].RightToLeft;}\n\n\nif(interpolate.Crumb(CRUMB_PROPS[index].style,amount)){\nthis.refs['crumb_' + index].setNativeProps(CRUMB_PROPS[index]);}\n\nif(interpolate.Icon(ICON_PROPS[index].style,amount)){\nthis.refs['icon_' + index].setNativeProps(ICON_PROPS[index]);}\n\nif(interpolate.Separator(SEPARATOR_PROPS[index].style,amount)){\nthis.refs['separator_' + index].setNativeProps(SEPARATOR_PROPS[index]);}\n\nif(interpolate.Title(TITLE_PROPS[index].style,amount)){\nthis.refs['title_' + index].setNativeProps(TITLE_PROPS[index]);}\n\nvar right=this.refs['right_' + index];\nif(right && \ninterpolate.RightItem(RIGHT_BUTTON_PROPS[index].style,amount)){\nright.setNativeProps(RIGHT_BUTTON_PROPS[index]);}},\n\n\n\nupdateProgress:function(progress,fromIndex,toIndex){\nvar max=Math.max(fromIndex,toIndex);\nvar min=Math.min(fromIndex,toIndex);\nfor(var index=min;index <= max;index++) {\nthis._updateIndexProgress(progress,index,fromIndex,toIndex);}},\n\n\n\nonAnimationStart:function(fromIndex,toIndex){\nvar max=Math.max(fromIndex,toIndex);\nvar min=Math.min(fromIndex,toIndex);\nfor(var index=min;index <= max;index++) {\nthis._setRenderViewsToHardwareTextureAndroid(index,true);}},\n\n\n\nonAnimationEnd:function(){\nvar max=this.props.navState.routeStack.length - 1;\nfor(var index=0;index <= max;index++) {\nthis._setRenderViewsToHardwareTextureAndroid(index,false);}},\n\n\n\n_setRenderViewsToHardwareTextureAndroid:function(index,renderToHardwareTexture){\nvar props={\nrenderToHardwareTextureAndroid:renderToHardwareTexture};\n\n\nthis.refs['icon_' + index].setNativeProps(props);\nthis.refs['separator_' + index].setNativeProps(props);\nthis.refs['title_' + index].setNativeProps(props);\nvar right=this.refs['right_' + index];\nif(right){\nright.setNativeProps(props);}},\n\n\n\nrender:function(){\nvar navState=this.props.navState;\nvar icons=navState && navState.routeStack.map(this._renderOrReturnBreadcrumb);\nvar titles=navState.routeStack.map(this._renderOrReturnTitle);\nvar buttons=navState.routeStack.map(this._renderOrReturnRightButton);\nreturn (\nReact.createElement(View,{style:[styles.breadCrumbContainer,this.props.style]},\ntitles,\nicons,\nbuttons));},\n\n\n\n\n_renderOrReturnBreadcrumb:function(route,index){\nvar uid=this.props.navState.idStack[index];\nvar navBarRouteMapper=this.props.routeMapper;\nvar navOps=this.props.navigator;\nvar alreadyRendered=this.refs['crumbContainer' + uid];\nif(alreadyRendered){\n\nreturn (\nReact.createElement(StaticContainer,{\nref:'crumbContainer' + uid,\nkey:'crumbContainer' + uid,\nshouldUpdate:false}));}\n\n\n\nvar firstStyles=initStyle(index,navStatePresentedIndex(this.props.navState));\nreturn (\nReact.createElement(StaticContainer,{\nref:'crumbContainer' + uid,\nkey:'crumbContainer' + uid,\nshouldUpdate:false},\nReact.createElement(View,{ref:'crumb_' + index,style:firstStyles.Crumb},\nReact.createElement(View,{ref:'icon_' + index,style:firstStyles.Icon},\nnavBarRouteMapper.iconForRoute(route,navOps)),\n\nReact.createElement(View,{ref:'separator_' + index,style:firstStyles.Separator},\nnavBarRouteMapper.separatorForRoute(route,navOps)))));},\n\n\n\n\n\n\n_renderOrReturnTitle:function(route,index){\nvar navState=this.props.navState;\nvar uid=navState.idStack[index];\nvar alreadyRendered=this.refs['titleContainer' + uid];\nif(alreadyRendered){\n\nreturn (\nReact.createElement(StaticContainer,{\nref:'titleContainer' + uid,\nkey:'titleContainer' + uid,\nshouldUpdate:false}));}\n\n\n\nvar navBarRouteMapper=this.props.routeMapper;\nvar titleContent=navBarRouteMapper.titleContentForRoute(\nnavState.routeStack[index],\nthis.props.navigator);\n\nvar firstStyles=initStyle(index,navStatePresentedIndex(this.props.navState));\nreturn (\nReact.createElement(StaticContainer,{\nref:'titleContainer' + uid,\nkey:'titleContainer' + uid,\nshouldUpdate:false},\nReact.createElement(View,{ref:'title_' + index,style:firstStyles.Title},\ntitleContent)));},\n\n\n\n\n\n_renderOrReturnRightButton:function(route,index){\nvar navState=this.props.navState;\nvar navBarRouteMapper=this.props.routeMapper;\nvar uid=navState.idStack[index];\nvar alreadyRendered=this.refs['rightContainer' + uid];\nif(alreadyRendered){\n\nreturn (\nReact.createElement(StaticContainer,{\nref:'rightContainer' + uid,\nkey:'rightContainer' + uid,\nshouldUpdate:false}));}\n\n\n\nvar rightContent=navBarRouteMapper.rightContentForRoute(\nnavState.routeStack[index],\nthis.props.navigator);\n\nif(!rightContent){\nreturn null;}\n\nvar firstStyles=initStyle(index,navStatePresentedIndex(this.props.navState));\nreturn (\nReact.createElement(StaticContainer,{\nref:'rightContainer' + uid,\nkey:'rightContainer' + uid,\nshouldUpdate:false},\nReact.createElement(View,{ref:'right_' + index,style:firstStyles.RightItem},\nrightContent)));}});\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nbreadCrumbContainer:{\noverflow:'hidden',\nposition:'absolute',\nheight:NavigatorNavigationBarStyles.General.TotalNavHeight,\ntop:0,\nleft:0,\nright:0}});\n\n\n\nmodule.exports = NavigatorBreadcrumbNavigationBar;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorBreadcrumbNavigationBar\n */\n'use strict';\n\nvar NavigatorBreadcrumbNavigationBarStyles = require('NavigatorBreadcrumbNavigationBarStyles');\nvar NavigatorNavigationBarStyles = require('NavigatorNavigationBarStyles');\nvar React = require('React');\nvar StaticContainer = require('StaticContainer.react');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar invariant = require('invariant');\n\nvar Interpolators = NavigatorBreadcrumbNavigationBarStyles.Interpolators;\nvar PropTypes = React.PropTypes;\n\n/**\n * Reusable props objects.\n */\nvar CRUMB_PROPS = Interpolators.map(() => {return {style: {}};});\nvar ICON_PROPS = Interpolators.map(() => {return {style: {}};});\nvar SEPARATOR_PROPS = Interpolators.map(() => {return {style: {}};});\nvar TITLE_PROPS = Interpolators.map(() => {return {style: {}};});\nvar RIGHT_BUTTON_PROPS = Interpolators.map(() => {return {style: {}};});\n\n\nvar navStatePresentedIndex = function(navState) {\n if (navState.presentedIndex !== undefined) {\n return navState.presentedIndex;\n }\n // TODO: rename `observedTopOfStack` to `presentedIndex` in `NavigatorIOS`\n return navState.observedTopOfStack;\n};\n\n\n/**\n * The first route is initially rendered using a different style than all\n * future routes.\n *\n * @param {number} index Index of breadcrumb.\n * @return {object} Style config for initial rendering of index.\n */\nvar initStyle = function(index, presentedIndex) {\n return index === presentedIndex ? NavigatorBreadcrumbNavigationBarStyles.Center[index] :\n index < presentedIndex ? NavigatorBreadcrumbNavigationBarStyles.Left[index] :\n NavigatorBreadcrumbNavigationBarStyles.Right[index];\n};\n\nvar NavigatorBreadcrumbNavigationBar = React.createClass({\n propTypes: {\n navigator: PropTypes.shape({\n push: PropTypes.func,\n pop: PropTypes.func,\n replace: PropTypes.func,\n popToRoute: PropTypes.func,\n popToTop: PropTypes.func,\n }),\n routeMapper: PropTypes.shape({\n rightContentForRoute: PropTypes.func,\n titleContentForRoute: PropTypes.func,\n iconForRoute: PropTypes.func,\n }),\n navState: React.PropTypes.shape({\n routeStack: React.PropTypes.arrayOf(React.PropTypes.object),\n idStack: React.PropTypes.arrayOf(React.PropTypes.number),\n presentedIndex: React.PropTypes.number,\n }),\n style: View.propTypes.style,\n },\n\n statics: {\n Styles: NavigatorBreadcrumbNavigationBarStyles,\n },\n\n _updateIndexProgress: function(progress, index, fromIndex, toIndex) {\n var amount = toIndex > fromIndex ? progress : (1 - progress);\n var oldDistToCenter = index - fromIndex;\n var newDistToCenter = index - toIndex;\n var interpolate;\n invariant(\n Interpolators[index],\n 'Cannot find breadcrumb interpolators for ' + index\n );\n if (oldDistToCenter > 0 && newDistToCenter === 0 ||\n newDistToCenter > 0 && oldDistToCenter === 0) {\n interpolate = Interpolators[index].RightToCenter;\n } else if (oldDistToCenter < 0 && newDistToCenter === 0 ||\n newDistToCenter < 0 && oldDistToCenter === 0) {\n interpolate = Interpolators[index].CenterToLeft;\n } else if (oldDistToCenter === newDistToCenter) {\n interpolate = Interpolators[index].RightToCenter;\n } else {\n interpolate = Interpolators[index].RightToLeft;\n }\n\n if (interpolate.Crumb(CRUMB_PROPS[index].style, amount)) {\n this.refs['crumb_' + index].setNativeProps(CRUMB_PROPS[index]);\n }\n if (interpolate.Icon(ICON_PROPS[index].style, amount)) {\n this.refs['icon_' + index].setNativeProps(ICON_PROPS[index]);\n }\n if (interpolate.Separator(SEPARATOR_PROPS[index].style, amount)) {\n this.refs['separator_' + index].setNativeProps(SEPARATOR_PROPS[index]);\n }\n if (interpolate.Title(TITLE_PROPS[index].style, amount)) {\n this.refs['title_' + index].setNativeProps(TITLE_PROPS[index]);\n }\n var right = this.refs['right_' + index];\n if (right &&\n interpolate.RightItem(RIGHT_BUTTON_PROPS[index].style, amount)) {\n right.setNativeProps(RIGHT_BUTTON_PROPS[index]);\n }\n },\n\n updateProgress: function(progress, fromIndex, toIndex) {\n var max = Math.max(fromIndex, toIndex);\n var min = Math.min(fromIndex, toIndex);\n for (var index = min; index <= max; index++) {\n this._updateIndexProgress(progress, index, fromIndex, toIndex);\n }\n },\n\n onAnimationStart: function(fromIndex, toIndex) {\n var max = Math.max(fromIndex, toIndex);\n var min = Math.min(fromIndex, toIndex);\n for (var index = min; index <= max; index++) {\n this._setRenderViewsToHardwareTextureAndroid(index, true);\n }\n },\n\n onAnimationEnd: function() {\n var max = this.props.navState.routeStack.length - 1;\n for (var index = 0; index <= max; index++) {\n this._setRenderViewsToHardwareTextureAndroid(index, false);\n }\n },\n\n _setRenderViewsToHardwareTextureAndroid: function(index, renderToHardwareTexture) {\n var props = {\n renderToHardwareTextureAndroid: renderToHardwareTexture,\n };\n\n this.refs['icon_' + index].setNativeProps(props);\n this.refs['separator_' + index].setNativeProps(props);\n this.refs['title_' + index].setNativeProps(props);\n var right = this.refs['right_' + index];\n if (right) {\n right.setNativeProps(props);\n }\n },\n\n render: function() {\n var navState = this.props.navState;\n var icons = navState && navState.routeStack.map(this._renderOrReturnBreadcrumb);\n var titles = navState.routeStack.map(this._renderOrReturnTitle);\n var buttons = navState.routeStack.map(this._renderOrReturnRightButton);\n return (\n <View style={[styles.breadCrumbContainer, this.props.style]}>\n {titles}\n {icons}\n {buttons}\n </View>\n );\n },\n\n _renderOrReturnBreadcrumb: function(route, index) {\n var uid = this.props.navState.idStack[index];\n var navBarRouteMapper = this.props.routeMapper;\n var navOps = this.props.navigator;\n var alreadyRendered = this.refs['crumbContainer' + uid];\n if (alreadyRendered) {\n // Don't bother re-calculating the children\n return (\n <StaticContainer\n ref={'crumbContainer' + uid}\n key={'crumbContainer' + uid}\n shouldUpdate={false}\n />\n );\n }\n var firstStyles = initStyle(index, navStatePresentedIndex(this.props.navState));\n return (\n <StaticContainer\n ref={'crumbContainer' + uid}\n key={'crumbContainer' + uid}\n shouldUpdate={false}>\n <View ref={'crumb_' + index} style={firstStyles.Crumb}>\n <View ref={'icon_' + index} style={firstStyles.Icon}>\n {navBarRouteMapper.iconForRoute(route, navOps)}\n </View>\n <View ref={'separator_' + index} style={firstStyles.Separator}>\n {navBarRouteMapper.separatorForRoute(route, navOps)}\n </View>\n </View>\n </StaticContainer>\n );\n },\n\n _renderOrReturnTitle: function(route, index) {\n var navState = this.props.navState;\n var uid = navState.idStack[index];\n var alreadyRendered = this.refs['titleContainer' + uid];\n if (alreadyRendered) {\n // Don't bother re-calculating the children\n return (\n <StaticContainer\n ref={'titleContainer' + uid}\n key={'titleContainer' + uid}\n shouldUpdate={false}\n />\n );\n }\n var navBarRouteMapper = this.props.routeMapper;\n var titleContent = navBarRouteMapper.titleContentForRoute(\n navState.routeStack[index],\n this.props.navigator\n );\n var firstStyles = initStyle(index, navStatePresentedIndex(this.props.navState));\n return (\n <StaticContainer\n ref={'titleContainer' + uid}\n key={'titleContainer' + uid}\n shouldUpdate={false}>\n <View ref={'title_' + index} style={firstStyles.Title}>\n {titleContent}\n </View>\n </StaticContainer>\n );\n },\n\n _renderOrReturnRightButton: function(route, index) {\n var navState = this.props.navState;\n var navBarRouteMapper = this.props.routeMapper;\n var uid = navState.idStack[index];\n var alreadyRendered = this.refs['rightContainer' + uid];\n if (alreadyRendered) {\n // Don't bother re-calculating the children\n return (\n <StaticContainer\n ref={'rightContainer' + uid}\n key={'rightContainer' + uid}\n shouldUpdate={false}\n />\n );\n }\n var rightContent = navBarRouteMapper.rightContentForRoute(\n navState.routeStack[index],\n this.props.navigator\n );\n if (!rightContent) {\n return null;\n }\n var firstStyles = initStyle(index, navStatePresentedIndex(this.props.navState));\n return (\n <StaticContainer\n ref={'rightContainer' + uid}\n key={'rightContainer' + uid}\n shouldUpdate={false}>\n <View ref={'right_' + index} style={firstStyles.RightItem}>\n {rightContent}\n </View>\n </StaticContainer>\n );\n },\n});\n\nvar styles = StyleSheet.create({\n breadCrumbContainer: {\n overflow: 'hidden',\n position: 'absolute',\n height: NavigatorNavigationBarStyles.General.TotalNavHeight,\n top: 0,\n left: 0,\n right: 0,\n },\n});\n\nmodule.exports = NavigatorBreadcrumbNavigationBar;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBarStyles.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\nvar NavigatorNavigationBarStyles=require('NavigatorNavigationBarStyles');\n\nvar buildStyleInterpolator=require('buildStyleInterpolator');\nvar merge=require('merge');\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar STATUS_BAR_HEIGHT=NavigatorNavigationBarStyles.General.StatusBarHeight;\nvar NAV_BAR_HEIGHT=NavigatorNavigationBarStyles.General.NavBarHeight;\n\nvar SPACING=4;\nvar ICON_WIDTH=40;\nvar SEPARATOR_WIDTH=9;\nvar CRUMB_WIDTH=ICON_WIDTH + SEPARATOR_WIDTH;\n\nvar OPACITY_RATIO=100;\nvar ICON_INACTIVE_OPACITY=0.6;\nvar MAX_BREADCRUMBS=10;\n\nvar CRUMB_BASE={\nposition:'absolute',\nflexDirection:'row',\ntop:STATUS_BAR_HEIGHT,\nwidth:CRUMB_WIDTH,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'};\n\n\nvar ICON_BASE={\nwidth:ICON_WIDTH,\nheight:NAV_BAR_HEIGHT};\n\n\nvar SEPARATOR_BASE={\nwidth:SEPARATOR_WIDTH,\nheight:NAV_BAR_HEIGHT};\n\n\nvar TITLE_BASE={\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'};\n\n\n\nvar FIRST_TITLE_BASE=merge(TITLE_BASE,{\nleft:0,\nright:0,\nalignItems:'center',\nheight:NAV_BAR_HEIGHT});\n\n\nvar RIGHT_BUTTON_BASE={\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nright:SPACING,\noverflow:'hidden',\nopacity:1,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'};\n\n\n\n\n\n\nvar LEFT=[];\nvar CENTER=[];\nvar RIGHT=[];\nfor(var i=0;i < MAX_BREADCRUMBS;i++) {\nvar crumbLeft=CRUMB_WIDTH * i + SPACING;\nLEFT[i] = {\nCrumb:merge(CRUMB_BASE,{left:crumbLeft}),\nIcon:merge(ICON_BASE,{opacity:ICON_INACTIVE_OPACITY}),\nSeparator:merge(SEPARATOR_BASE,{opacity:1}),\nTitle:merge(TITLE_BASE,{left:crumbLeft,opacity:0}),\nRightItem:merge(RIGHT_BUTTON_BASE,{opacity:0})};\n\nCENTER[i] = {\nCrumb:merge(CRUMB_BASE,{left:crumbLeft}),\nIcon:merge(ICON_BASE,{opacity:1}),\nSeparator:merge(SEPARATOR_BASE,{opacity:0}),\nTitle:merge(TITLE_BASE,{\nleft:crumbLeft + ICON_WIDTH,\nopacity:1}),\n\nRightItem:merge(RIGHT_BUTTON_BASE,{opacity:1})};\n\nvar crumbRight=SCREEN_WIDTH - 100;\nRIGHT[i] = {\nCrumb:merge(CRUMB_BASE,{left:crumbRight}),\nIcon:merge(ICON_BASE,{opacity:0}),\nSeparator:merge(SEPARATOR_BASE,{opacity:0}),\nTitle:merge(TITLE_BASE,{\nleft:crumbRight + ICON_WIDTH,\nopacity:0}),\n\nRightItem:merge(RIGHT_BUTTON_BASE,{opacity:0})};}\n\n\n\n\nCENTER[0] = {\nCrumb:merge(CRUMB_BASE,{left:SCREEN_WIDTH / 4}),\nIcon:merge(ICON_BASE,{opacity:0}),\nSeparator:merge(SEPARATOR_BASE,{opacity:0}),\nTitle:merge(FIRST_TITLE_BASE,{opacity:1}),\nRightItem:CENTER[0].RightItem};\n\nLEFT[0].Title = merge(FIRST_TITLE_BASE,{left:-SCREEN_WIDTH / 4,opacity:0});\nRIGHT[0].Title = merge(FIRST_TITLE_BASE,{opacity:0});\n\n\nvar buildIndexSceneInterpolator=function(startStyles,endStyles){\nreturn {\nCrumb:buildStyleInterpolator({\nleft:{\ntype:'linear',\nfrom:startStyles.Crumb.left,\nto:endStyles.Crumb.left,\nmin:0,\nmax:1,\nextrapolate:true}}),\n\n\nIcon:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.Icon.opacity,\nto:endStyles.Icon.opacity,\nmin:0,\nmax:1}}),\n\n\nSeparator:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.Separator.opacity,\nto:endStyles.Separator.opacity,\nmin:0,\nmax:1}}),\n\n\nTitle:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.Title.opacity,\nto:endStyles.Title.opacity,\nmin:0,\nmax:1},\n\nleft:{\ntype:'linear',\nfrom:startStyles.Title.left,\nto:endStyles.Title.left,\nmin:0,\nmax:1,\nextrapolate:true}}),\n\n\nRightItem:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.RightItem.opacity,\nto:endStyles.RightItem.opacity,\nmin:0,\nmax:1,\nround:OPACITY_RATIO}})};};\n\n\n\n\n\nvar Interpolators=CENTER.map(function(_,ii){\nreturn {\n\nRightToCenter:buildIndexSceneInterpolator(RIGHT[ii],CENTER[ii]),\n\nCenterToLeft:buildIndexSceneInterpolator(CENTER[ii],LEFT[ii]),\n\nRightToLeft:buildIndexSceneInterpolator(RIGHT[ii],LEFT[ii])};});\n\n\n\n\n\n\n\nmodule.exports = {\nInterpolators:Interpolators,\nLeft:LEFT,\nCenter:CENTER,\nRight:RIGHT,\nIconWidth:ICON_WIDTH,\nIconHeight:NAV_BAR_HEIGHT,\nSeparatorWidth:SEPARATOR_WIDTH,\nSeparatorHeight:NAV_BAR_HEIGHT};","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorBreadcrumbNavigationBarStyles\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar NavigatorNavigationBarStyles = require('NavigatorNavigationBarStyles');\n\nvar buildStyleInterpolator = require('buildStyleInterpolator');\nvar merge = require('merge');\n\nvar SCREEN_WIDTH = Dimensions.get('window').width;\nvar STATUS_BAR_HEIGHT = NavigatorNavigationBarStyles.General.StatusBarHeight;\nvar NAV_BAR_HEIGHT = NavigatorNavigationBarStyles.General.NavBarHeight;\n\nvar SPACING = 4;\nvar ICON_WIDTH = 40;\nvar SEPARATOR_WIDTH = 9;\nvar CRUMB_WIDTH = ICON_WIDTH + SEPARATOR_WIDTH;\n\nvar OPACITY_RATIO = 100;\nvar ICON_INACTIVE_OPACITY = 0.6;\nvar MAX_BREADCRUMBS = 10;\n\nvar CRUMB_BASE = {\n position: 'absolute',\n flexDirection: 'row',\n top: STATUS_BAR_HEIGHT,\n width: CRUMB_WIDTH,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n};\n\nvar ICON_BASE = {\n width: ICON_WIDTH,\n height: NAV_BAR_HEIGHT,\n};\n\nvar SEPARATOR_BASE = {\n width: SEPARATOR_WIDTH,\n height: NAV_BAR_HEIGHT,\n};\n\nvar TITLE_BASE = {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n};\n\n// For first title styles, make sure first title is centered\nvar FIRST_TITLE_BASE = merge(TITLE_BASE, {\n left: 0,\n right: 0,\n alignItems: 'center',\n height: NAV_BAR_HEIGHT,\n});\n\nvar RIGHT_BUTTON_BASE = {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n right: SPACING,\n overflow: 'hidden',\n opacity: 1,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n};\n\n/**\n * Precompute crumb styles so that they don't need to be recomputed on every\n * interaction.\n */\nvar LEFT = [];\nvar CENTER = [];\nvar RIGHT = [];\nfor (var i = 0; i < MAX_BREADCRUMBS; i++) {\n var crumbLeft = CRUMB_WIDTH * i + SPACING;\n LEFT[i] = {\n Crumb: merge(CRUMB_BASE, { left: crumbLeft }),\n Icon: merge(ICON_BASE, { opacity: ICON_INACTIVE_OPACITY }),\n Separator: merge(SEPARATOR_BASE, { opacity: 1 }),\n Title: merge(TITLE_BASE, { left: crumbLeft, opacity: 0 }),\n RightItem: merge(RIGHT_BUTTON_BASE, { opacity: 0 }),\n };\n CENTER[i] = {\n Crumb: merge(CRUMB_BASE, { left: crumbLeft }),\n Icon: merge(ICON_BASE, { opacity: 1 }),\n Separator: merge(SEPARATOR_BASE, { opacity: 0 }),\n Title: merge(TITLE_BASE, {\n left: crumbLeft + ICON_WIDTH,\n opacity: 1,\n }),\n RightItem: merge(RIGHT_BUTTON_BASE, { opacity: 1 }),\n };\n var crumbRight = SCREEN_WIDTH - 100;\n RIGHT[i] = {\n Crumb: merge(CRUMB_BASE, { left: crumbRight}),\n Icon: merge(ICON_BASE, { opacity: 0 }),\n Separator: merge(SEPARATOR_BASE, { opacity: 0 }),\n Title: merge(TITLE_BASE, {\n left: crumbRight + ICON_WIDTH,\n opacity: 0,\n }),\n RightItem: merge(RIGHT_BUTTON_BASE, { opacity: 0 }),\n };\n}\n\n// Special case the CENTER state of the first scene.\nCENTER[0] = {\n Crumb: merge(CRUMB_BASE, {left: SCREEN_WIDTH / 4}),\n Icon: merge(ICON_BASE, {opacity: 0}),\n Separator: merge(SEPARATOR_BASE, {opacity: 0}),\n Title: merge(FIRST_TITLE_BASE, {opacity: 1}),\n RightItem: CENTER[0].RightItem,\n};\nLEFT[0].Title = merge(FIRST_TITLE_BASE, {left: - SCREEN_WIDTH / 4, opacity: 0});\nRIGHT[0].Title = merge(FIRST_TITLE_BASE, {opacity: 0});\n\n\nvar buildIndexSceneInterpolator = function(startStyles, endStyles) {\n return {\n Crumb: buildStyleInterpolator({\n left: {\n type: 'linear',\n from: startStyles.Crumb.left,\n to: endStyles.Crumb.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n Icon: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.Icon.opacity,\n to: endStyles.Icon.opacity,\n min: 0,\n max: 1,\n },\n }),\n Separator: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.Separator.opacity,\n to: endStyles.Separator.opacity,\n min: 0,\n max: 1,\n },\n }),\n Title: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.Title.opacity,\n to: endStyles.Title.opacity,\n min: 0,\n max: 1,\n },\n left: {\n type: 'linear',\n from: startStyles.Title.left,\n to: endStyles.Title.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n RightItem: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.RightItem.opacity,\n to: endStyles.RightItem.opacity,\n min: 0,\n max: 1,\n round: OPACITY_RATIO,\n },\n }),\n };\n};\n\nvar Interpolators = CENTER.map(function(_, ii) {\n return {\n // Animating *into* the center stage from the right\n RightToCenter: buildIndexSceneInterpolator(RIGHT[ii], CENTER[ii]),\n // Animating out of the center stage, to the left\n CenterToLeft: buildIndexSceneInterpolator(CENTER[ii], LEFT[ii]),\n // Both stages (animating *past* the center stage)\n RightToLeft: buildIndexSceneInterpolator(RIGHT[ii], LEFT[ii]),\n };\n});\n\n/**\n * Contains constants that are used in constructing both `StyleSheet`s and\n * inline styles during transitions.\n */\nmodule.exports = {\n Interpolators,\n Left: LEFT,\n Center: CENTER,\n Right: RIGHT,\n IconWidth: ICON_WIDTH,\n IconHeight: NAV_BAR_HEIGHT,\n SeparatorWidth: SEPARATOR_WIDTH,\n SeparatorHeight: NAV_BAR_HEIGHT,\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBarStyles.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorNavigationBarStyles.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\n\nvar buildStyleInterpolator=require('buildStyleInterpolator');\nvar merge=require('merge');\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar NAV_BAR_HEIGHT=44;\nvar STATUS_BAR_HEIGHT=20;\nvar NAV_HEIGHT=NAV_BAR_HEIGHT + STATUS_BAR_HEIGHT;\n\nvar BASE_STYLES={\nTitle:{\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nleft:0,\nalignItems:'center',\nwidth:SCREEN_WIDTH,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'},\n\nLeftButton:{\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nleft:0,\noverflow:'hidden',\nopacity:1,\nwidth:SCREEN_WIDTH / 3,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'},\n\nRightButton:{\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nleft:2 * SCREEN_WIDTH / 3,\noverflow:'hidden',\nopacity:1,\nalignItems:'flex-end',\nwidth:SCREEN_WIDTH / 3,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'}};\n\n\n\n\n\n\n\n\n\n\nvar Stages={\nLeft:{\nTitle:merge(BASE_STYLES.Title,{left:-SCREEN_WIDTH / 2,opacity:0}),\nLeftButton:merge(BASE_STYLES.LeftButton,{left:-SCREEN_WIDTH / 3,opacity:1}),\nRightButton:merge(BASE_STYLES.RightButton,{left:SCREEN_WIDTH / 3,opacity:0})},\n\nCenter:{\nTitle:merge(BASE_STYLES.Title,{left:0,opacity:1}),\nLeftButton:merge(BASE_STYLES.LeftButton,{left:0,opacity:1}),\nRightButton:merge(BASE_STYLES.RightButton,{left:2 * SCREEN_WIDTH / 3 - 0,opacity:1})},\n\nRight:{\nTitle:merge(BASE_STYLES.Title,{left:SCREEN_WIDTH / 2,opacity:0}),\nLeftButton:merge(BASE_STYLES.LeftButton,{left:0,opacity:0}),\nRightButton:merge(BASE_STYLES.RightButton,{left:SCREEN_WIDTH,opacity:0})}};\n\n\n\n\nvar opacityRatio=100;\n\nfunction buildSceneInterpolators(startStyles,endStyles){\nreturn {\nTitle:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.Title.opacity,\nto:endStyles.Title.opacity,\nmin:0,\nmax:1},\n\nleft:{\ntype:'linear',\nfrom:startStyles.Title.left,\nto:endStyles.Title.left,\nmin:0,\nmax:1,\nextrapolate:true}}),\n\n\nLeftButton:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.LeftButton.opacity,\nto:endStyles.LeftButton.opacity,\nmin:0,\nmax:1,\nround:opacityRatio},\n\nleft:{\ntype:'linear',\nfrom:startStyles.LeftButton.left,\nto:endStyles.LeftButton.left,\nmin:0,\nmax:1}}),\n\n\nRightButton:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.RightButton.opacity,\nto:endStyles.RightButton.opacity,\nmin:0,\nmax:1,\nround:opacityRatio},\n\nleft:{\ntype:'linear',\nfrom:startStyles.RightButton.left,\nto:endStyles.RightButton.left,\nmin:0,\nmax:1,\nextrapolate:true}})};}\n\n\n\n\n\nvar Interpolators={\n\nRightToCenter:buildSceneInterpolators(Stages.Right,Stages.Center),\n\nCenterToLeft:buildSceneInterpolators(Stages.Center,Stages.Left),\n\nRightToLeft:buildSceneInterpolators(Stages.Right,Stages.Left)};\n\n\n\nmodule.exports = {\nGeneral:{\nNavBarHeight:NAV_BAR_HEIGHT,\nStatusBarHeight:STATUS_BAR_HEIGHT,\nTotalNavHeight:NAV_HEIGHT},\n\nInterpolators:Interpolators,\nStages:Stages};","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorNavigationBarStyles\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\n\nvar buildStyleInterpolator = require('buildStyleInterpolator');\nvar merge = require('merge');\n\nvar SCREEN_WIDTH = Dimensions.get('window').width;\nvar NAV_BAR_HEIGHT = 44;\nvar STATUS_BAR_HEIGHT = 20;\nvar NAV_HEIGHT = NAV_BAR_HEIGHT + STATUS_BAR_HEIGHT;\n\nvar BASE_STYLES = {\n Title: {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n left: 0,\n alignItems: 'center',\n width: SCREEN_WIDTH,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n },\n LeftButton: {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n left: 0,\n overflow: 'hidden',\n opacity: 1,\n width: SCREEN_WIDTH / 3,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n },\n RightButton: {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n left: 2 * SCREEN_WIDTH / 3,\n overflow: 'hidden',\n opacity: 1,\n alignItems: 'flex-end',\n width: SCREEN_WIDTH / 3,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n },\n};\n\n// There are 3 stages: left, center, right. All previous navigation\n// items are in the left stage. The current navigation item is in the\n// center stage. All upcoming navigation items are in the right stage.\n// Another way to think of the stages is in terms of transitions. When\n// we move forward in the navigation stack, we perform a\n// right-to-center transition on the new navigation item and a\n// center-to-left transition on the current navigation item.\nvar Stages = {\n Left: {\n Title: merge(BASE_STYLES.Title, { left: - SCREEN_WIDTH / 2, opacity: 0 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { left: - SCREEN_WIDTH / 3, opacity: 1 }),\n RightButton: merge(BASE_STYLES.RightButton, { left: SCREEN_WIDTH / 3, opacity: 0 }),\n },\n Center: {\n Title: merge(BASE_STYLES.Title, { left: 0, opacity: 1 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { left: 0, opacity: 1 }),\n RightButton: merge(BASE_STYLES.RightButton, { left: 2 * SCREEN_WIDTH / 3 - 0, opacity: 1 }),\n },\n Right: {\n Title: merge(BASE_STYLES.Title, { left: SCREEN_WIDTH / 2, opacity: 0 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { left: 0, opacity: 0 }),\n RightButton: merge(BASE_STYLES.RightButton, { left: SCREEN_WIDTH, opacity: 0 }),\n },\n};\n\n\nvar opacityRatio = 100;\n\nfunction buildSceneInterpolators(startStyles, endStyles) {\n return {\n Title: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.Title.opacity,\n to: endStyles.Title.opacity,\n min: 0,\n max: 1,\n },\n left: {\n type: 'linear',\n from: startStyles.Title.left,\n to: endStyles.Title.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n LeftButton: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.LeftButton.opacity,\n to: endStyles.LeftButton.opacity,\n min: 0,\n max: 1,\n round: opacityRatio,\n },\n left: {\n type: 'linear',\n from: startStyles.LeftButton.left,\n to: endStyles.LeftButton.left,\n min: 0,\n max: 1,\n },\n }),\n RightButton: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.RightButton.opacity,\n to: endStyles.RightButton.opacity,\n min: 0,\n max: 1,\n round: opacityRatio,\n },\n left: {\n type: 'linear',\n from: startStyles.RightButton.left,\n to: endStyles.RightButton.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n };\n}\n\nvar Interpolators = {\n // Animating *into* the center stage from the right\n RightToCenter: buildSceneInterpolators(Stages.Right, Stages.Center),\n // Animating out of the center stage, to the left\n CenterToLeft: buildSceneInterpolators(Stages.Center, Stages.Left),\n // Both stages (animating *past* the center stage)\n RightToLeft: buildSceneInterpolators(Stages.Right, Stages.Left),\n};\n\n\nmodule.exports = {\n General: {\n NavBarHeight: NAV_BAR_HEIGHT,\n StatusBarHeight: STATUS_BAR_HEIGHT,\n TotalNavHeight: NAV_HEIGHT,\n },\n Interpolators,\n Stages,\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorNavigationBarStyles.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/buildStyleInterpolator.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nkeyOf=require('keyOf');\n\nvar X_DIM=keyOf({x:null});\nvar Y_DIM=keyOf({y:null});\nvar Z_DIM=keyOf({z:null});\nvar W_DIM=keyOf({w:null});\n\nvar TRANSFORM_ROTATE_NAME=keyOf({transformRotateRadians:null});\n\nvar ShouldAllocateReusableOperationVars={\ntransformRotateRadians:true,\ntransformScale:true,\ntransformTranslate:true};\n\n\nvar InitialOperationField={\ntransformRotateRadians:[0,0,0,1],\ntransformTranslate:[0,0,0],\ntransformScale:[1,1,1]};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ARGUMENT_NAMES_RE=/([^\\s,]+)/g;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar inline=function(func,replaceWithArgs){\nvar fnStr=func.toString();\nvar parameterNames=fnStr.slice(fnStr.indexOf('(') + 1,fnStr.indexOf(')')).\nmatch(ARGUMENT_NAMES_RE) || \n[];\nvar replaceRegexStr=parameterNames.map(function(paramName){\nreturn '\\\\b' + paramName + '\\\\b';}).\njoin('|');\nvar replaceRegex=new RegExp(replaceRegexStr,'g');\nvar fnBody=fnStr.substring(fnStr.indexOf('{') + 1,fnStr.lastIndexOf('}'));\nvar newFnBody=fnBody.replace(replaceRegex,function(parameterName){\nvar indexInParameterNames=parameterNames.indexOf(parameterName);\nvar replacementName=replaceWithArgs[indexInParameterNames];\nreturn replacementName;});\n\nreturn newFnBody.split('\\n');};\n\n\n\n\n\n\nvar MatrixOps={\nunroll:function(matVar,m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15){\nm0 = matVar[0];\nm1 = matVar[1];\nm2 = matVar[2];\nm3 = matVar[3];\nm4 = matVar[4];\nm5 = matVar[5];\nm6 = matVar[6];\nm7 = matVar[7];\nm8 = matVar[8];\nm9 = matVar[9];\nm10 = matVar[10];\nm11 = matVar[11];\nm12 = matVar[12];\nm13 = matVar[13];\nm14 = matVar[14];\nm15 = matVar[15];},\n\n\nmatrixDiffers:function(retVar,matVar,m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15){\nretVar = retVar || \nm0 !== matVar[0] || \nm1 !== matVar[1] || \nm2 !== matVar[2] || \nm3 !== matVar[3] || \nm4 !== matVar[4] || \nm5 !== matVar[5] || \nm6 !== matVar[6] || \nm7 !== matVar[7] || \nm8 !== matVar[8] || \nm9 !== matVar[9] || \nm10 !== matVar[10] || \nm11 !== matVar[11] || \nm12 !== matVar[12] || \nm13 !== matVar[13] || \nm14 !== matVar[14] || \nm15 !== matVar[15];},\n\n\ntransformScale:function(matVar,opVar){\n\nvar x=opVar[0];\nvar y=opVar[1];\nvar z=opVar[2];\nmatVar[0] = matVar[0] * x;\nmatVar[1] = matVar[1] * x;\nmatVar[2] = matVar[2] * x;\nmatVar[3] = matVar[3] * x;\nmatVar[4] = matVar[4] * y;\nmatVar[5] = matVar[5] * y;\nmatVar[6] = matVar[6] * y;\nmatVar[7] = matVar[7] * y;\nmatVar[8] = matVar[8] * z;\nmatVar[9] = matVar[9] * z;\nmatVar[10] = matVar[10] * z;\nmatVar[11] = matVar[11] * z;\nmatVar[12] = matVar[12];\nmatVar[13] = matVar[13];\nmatVar[14] = matVar[14];\nmatVar[15] = matVar[15];},\n\n\n\n\n\n\ntransformTranslate:function(matVar,opVar){\n\nvar x=opVar[0];\nvar y=opVar[1];\nvar z=opVar[2];\nmatVar[12] = matVar[0] * x + matVar[4] * y + matVar[8] * z + matVar[12];\nmatVar[13] = matVar[1] * x + matVar[5] * y + matVar[9] * z + matVar[13];\nmatVar[14] = matVar[2] * x + matVar[6] * y + matVar[10] * z + matVar[14];\nmatVar[15] = matVar[3] * x + matVar[7] * y + matVar[11] * z + matVar[15];},\n\n\n\n\n\n\ntransformRotateRadians:function(matVar,q){\n\nvar xQuat=q[0],yQuat=q[1],zQuat=q[2],wQuat=q[3];\nvar x2Quat=xQuat + xQuat;\nvar y2Quat=yQuat + yQuat;\nvar z2Quat=zQuat + zQuat;\nvar xxQuat=xQuat * x2Quat;\nvar xyQuat=xQuat * y2Quat;\nvar xzQuat=xQuat * z2Quat;\nvar yyQuat=yQuat * y2Quat;\nvar yzQuat=yQuat * z2Quat;\nvar zzQuat=zQuat * z2Quat;\nvar wxQuat=wQuat * x2Quat;\nvar wyQuat=wQuat * y2Quat;\nvar wzQuat=wQuat * z2Quat;\n\nvar quatMat0=1 - (yyQuat + zzQuat);\nvar quatMat1=xyQuat + wzQuat;\nvar quatMat2=xzQuat - wyQuat;\nvar quatMat4=xyQuat - wzQuat;\nvar quatMat5=1 - (xxQuat + zzQuat);\nvar quatMat6=yzQuat + wxQuat;\nvar quatMat8=xzQuat + wyQuat;\nvar quatMat9=yzQuat - wxQuat;\nvar quatMat10=1 - (xxQuat + yyQuat);\n\n\n\nvar a00=matVar[0];\nvar a01=matVar[1];\nvar a02=matVar[2];\nvar a03=matVar[3];\nvar a10=matVar[4];\nvar a11=matVar[5];\nvar a12=matVar[6];\nvar a13=matVar[7];\nvar a20=matVar[8];\nvar a21=matVar[9];\nvar a22=matVar[10];\nvar a23=matVar[11];\n\nvar b0=quatMat0,b1=quatMat1,b2=quatMat2;\nmatVar[0] = b0 * a00 + b1 * a10 + b2 * a20;\nmatVar[1] = b0 * a01 + b1 * a11 + b2 * a21;\nmatVar[2] = b0 * a02 + b1 * a12 + b2 * a22;\nmatVar[3] = b0 * a03 + b1 * a13 + b2 * a23;\nb0 = quatMat4;b1 = quatMat5;b2 = quatMat6;\nmatVar[4] = b0 * a00 + b1 * a10 + b2 * a20;\nmatVar[5] = b0 * a01 + b1 * a11 + b2 * a21;\nmatVar[6] = b0 * a02 + b1 * a12 + b2 * a22;\nmatVar[7] = b0 * a03 + b1 * a13 + b2 * a23;\nb0 = quatMat8;b1 = quatMat9;b2 = quatMat10;\nmatVar[8] = b0 * a00 + b1 * a10 + b2 * a20;\nmatVar[9] = b0 * a01 + b1 * a11 + b2 * a21;\nmatVar[10] = b0 * a02 + b1 * a12 + b2 * a22;\nmatVar[11] = b0 * a03 + b1 * a13 + b2 * a23;}};\n\n\n\n\n\nvar MatrixOpsInitial={\ntransformScale:function(matVar,opVar){\n\nmatVar[0] = opVar[0];\nmatVar[1] = 0;\nmatVar[2] = 0;\nmatVar[3] = 0;\nmatVar[4] = 0;\nmatVar[5] = opVar[1];\nmatVar[6] = 0;\nmatVar[7] = 0;\nmatVar[8] = 0;\nmatVar[9] = 0;\nmatVar[10] = opVar[2];\nmatVar[11] = 0;\nmatVar[12] = 0;\nmatVar[13] = 0;\nmatVar[14] = 0;\nmatVar[15] = 1;},\n\n\ntransformTranslate:function(matVar,opVar){\n\nmatVar[0] = 1;\nmatVar[1] = 0;\nmatVar[2] = 0;\nmatVar[3] = 0;\nmatVar[4] = 0;\nmatVar[5] = 1;\nmatVar[6] = 0;\nmatVar[7] = 0;\nmatVar[8] = 0;\nmatVar[9] = 0;\nmatVar[10] = 1;\nmatVar[11] = 0;\nmatVar[12] = opVar[0];\nmatVar[13] = opVar[1];\nmatVar[14] = opVar[2];\nmatVar[15] = 1;},\n\n\n\n\n\n\n\ntransformRotateRadians:function(matVar,q){\n\n\nvar xQuat=q[0],yQuat=q[1],zQuat=q[2],wQuat=q[3];\nvar x2Quat=xQuat + xQuat;\nvar y2Quat=yQuat + yQuat;\nvar z2Quat=zQuat + zQuat;\nvar xxQuat=xQuat * x2Quat;\nvar xyQuat=xQuat * y2Quat;\nvar xzQuat=xQuat * z2Quat;\nvar yyQuat=yQuat * y2Quat;\nvar yzQuat=yQuat * z2Quat;\nvar zzQuat=zQuat * z2Quat;\nvar wxQuat=wQuat * x2Quat;\nvar wyQuat=wQuat * y2Quat;\nvar wzQuat=wQuat * z2Quat;\n\nvar quatMat0=1 - (yyQuat + zzQuat);\nvar quatMat1=xyQuat + wzQuat;\nvar quatMat2=xzQuat - wyQuat;\nvar quatMat4=xyQuat - wzQuat;\nvar quatMat5=1 - (xxQuat + zzQuat);\nvar quatMat6=yzQuat + wxQuat;\nvar quatMat8=xzQuat + wyQuat;\nvar quatMat9=yzQuat - wxQuat;\nvar quatMat10=1 - (xxQuat + yyQuat);\n\n\n\nvar b0=quatMat0,b1=quatMat1,b2=quatMat2;\nmatVar[0] = b0;\nmatVar[1] = b1;\nmatVar[2] = b2;\nmatVar[3] = 0;\nb0 = quatMat4;b1 = quatMat5;b2 = quatMat6;\nmatVar[4] = b0;\nmatVar[5] = b1;\nmatVar[6] = b2;\nmatVar[7] = 0;\nb0 = quatMat8;b1 = quatMat9;b2 = quatMat10;\nmatVar[8] = b0;\nmatVar[9] = b1;\nmatVar[10] = b2;\nmatVar[11] = 0;\nmatVar[12] = 0;\nmatVar[13] = 0;\nmatVar[14] = 0;\nmatVar[15] = 1;}};\n\n\n\n\nvar setNextValAndDetectChange=function(name,tmpVarName){\nreturn (\n' if (!didChange) {\\n' + \n' var prevVal = result.' + name + ';\\n' + \n' result.' + name + ' = ' + tmpVarName + ';\\n' + \n' didChange = didChange || (' + tmpVarName + ' !== prevVal);\\n' + \n' } else {\\n' + \n' result.' + name + ' = ' + tmpVarName + ';\\n' + \n' }\\n');};\n\n\n\nvar computeNextValLinear=function(anim,from,to,tmpVarName){\nvar hasRoundRatio=('round' in anim);\nvar roundRatio=anim.round;\nvar fn=' ratio = (value - ' + anim.min + ') / ' + (anim.max - anim.min) + ';\\n';\nif(!anim.extrapolate){\nfn += ' ratio = ratio > 1 ? 1 : (ratio < 0 ? 0 : ratio);\\n';}\n\n\nvar roundOpen=hasRoundRatio?'Math.round(' + roundRatio + ' * ':'';\nvar roundClose=hasRoundRatio?') / ' + roundRatio:'';\nfn += \n' ' + tmpVarName + ' = ' + \nroundOpen + \n'(' + from + ' * (1 - ratio) + ' + to + ' * ratio)' + \nroundClose + ';\\n';\nreturn fn;};\n\n\nvar computeNextValLinearScalar=function(anim){\nreturn computeNextValLinear(anim,anim.from,anim.to,'nextScalarVal');};\n\n\nvar computeNextValConstant=function(anim){\nvar constantExpression=JSON.stringify(anim.value);\nreturn ' nextScalarVal = ' + constantExpression + ';\\n';};\n\n\nvar computeNextValStep=function(anim){\nreturn (\n' nextScalarVal = value >= ' + (\nanim.threshold + ' ? ' + anim.to + ' : ' + anim.from) + ';\\n');};\n\n\n\nvar computeNextValIdentity=function(anim){\nreturn ' nextScalarVal = value;\\n';};\n\n\nvar operationVar=function(name){\nreturn name + 'ReuseOp';};\n\n\nvar createReusableOperationVars=function(anims){\nvar ret='';\nfor(var name in anims) {\nif(ShouldAllocateReusableOperationVars[name]){\nret += 'var ' + operationVar(name) + ' = [];\\n';}}\n\n\nreturn ret;};\n\n\nvar newlines=function(statements){\nreturn '\\n' + statements.join('\\n') + '\\n';};\n\n\n\n\n\n\n\n\nvar computeNextMatrixOperationField=function(anim,name,dimension,index){\nvar fieldAccess=operationVar(name) + '[' + index + ']';\nif(anim.from[dimension] !== undefined && anim.to[dimension] !== undefined){\nreturn ' ' + anim.from[dimension] !== anim.to[dimension]?\ncomputeNextValLinear(anim,anim.from[dimension],anim.to[dimension],fieldAccess):\nfieldAccess + ' = ' + anim.from[dimension] + ';';}else \n{\nreturn ' ' + fieldAccess + ' = ' + InitialOperationField[name][index] + ';';}};\n\n\n\nvar unrolledVars=[];\nfor(var varIndex=0;varIndex < 16;varIndex++) {\nunrolledVars.push('m' + varIndex);}\n\nvar setNextMatrixAndDetectChange=function(orderedMatrixOperations){\nvar fn=[\n' var transformMatrix = result.transformMatrix !== undefined ? ' + \n'result.transformMatrix : (result.transformMatrix = []);'];\n\nfn.push.apply(\nfn,\ninline(MatrixOps.unroll,['transformMatrix'].concat(unrolledVars)));\n\nfor(var i=0;i < orderedMatrixOperations.length;i++) {\nvar opName=orderedMatrixOperations[i];\nif(i === 0){\nfn.push.apply(\nfn,\ninline(MatrixOpsInitial[opName],['transformMatrix',operationVar(opName)]));}else \n\n{\nfn.push.apply(\nfn,\ninline(MatrixOps[opName],['transformMatrix',operationVar(opName)]));}}\n\n\n\nfn.push.apply(\nfn,\ninline(MatrixOps.matrixDiffers,['didChange','transformMatrix'].concat(unrolledVars)));\n\nreturn fn;};\n\n\nvar InterpolateMatrix={\ntransformTranslate:true,\ntransformRotateRadians:true,\ntransformScale:true};\n\n\nvar createFunctionString=function(anims){\n\n\nvar orderedMatrixOperations=[];\n\n\n\nvar fn='return (function() {\\n';\nfn += createReusableOperationVars(anims);\nfn += 'return function(result, value) {\\n';\nfn += ' var didChange = false;\\n';\nfn += ' var nextScalarVal;\\n';\nfn += ' var ratio;\\n';\n\nfor(var name in anims) {\nvar anim=anims[name];\nif(anim.type === 'linear'){\nif(InterpolateMatrix[name]){\norderedMatrixOperations.push(name);\nvar setOperations=[\ncomputeNextMatrixOperationField(anim,name,X_DIM,0),\ncomputeNextMatrixOperationField(anim,name,Y_DIM,1),\ncomputeNextMatrixOperationField(anim,name,Z_DIM,2)];\n\nif(name === TRANSFORM_ROTATE_NAME){\nsetOperations.push(computeNextMatrixOperationField(anim,name,W_DIM,3));}\n\nfn += newlines(setOperations);}else \n{\nfn += computeNextValLinearScalar(anim,'nextScalarVal');\nfn += setNextValAndDetectChange(name,'nextScalarVal');}}else \n\nif(anim.type === 'constant'){\nfn += computeNextValConstant(anim);\nfn += setNextValAndDetectChange(name,'nextScalarVal');}else \nif(anim.type === 'step'){\nfn += computeNextValStep(anim);\nfn += setNextValAndDetectChange(name,'nextScalarVal');}else \nif(anim.type === 'identity'){\nfn += computeNextValIdentity(anim);\nfn += setNextValAndDetectChange(name,'nextScalarVal');}}\n\n\nif(orderedMatrixOperations.length){\nfn += newlines(setNextMatrixAndDetectChange(orderedMatrixOperations));}\n\nfn += ' return didChange;\\n';\nfn += '};\\n';\nfn += '})()';\nreturn fn;};\n\n\n\n\n\n\n\nvar buildStyleInterpolator=function(anims){\nreturn Function(createFunctionString(anims))();};\n\n\n\nmodule.exports = buildStyleInterpolator;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule buildStyleInterpolator\n */\n\n/**\n * Cannot \"use strict\" because we must use eval in this file.\n */\n/* eslint-disable global-strict */\n\nvar keyOf = require('keyOf');\n\nvar X_DIM = keyOf({x: null});\nvar Y_DIM = keyOf({y: null});\nvar Z_DIM = keyOf({z: null});\nvar W_DIM = keyOf({w: null});\n\nvar TRANSFORM_ROTATE_NAME = keyOf({transformRotateRadians: null});\n\nvar ShouldAllocateReusableOperationVars = {\n transformRotateRadians: true,\n transformScale: true,\n transformTranslate: true,\n};\n\nvar InitialOperationField = {\n transformRotateRadians: [0, 0, 0, 1],\n transformTranslate: [0, 0, 0],\n transformScale: [1, 1, 1],\n};\n\n\n/**\n * Creates a highly specialized animation function that may be evaluated every\n * frame. For example:\n *\n * var ToTheLeft = {\n * opacity: {\n * from: 1,\n * to: 0.7,\n * min: 0,\n * max: 1,\n * type: 'linear',\n * extrapolate: false,\n * round: 100,\n * },\n * left: {\n * from: 0,\n * to: -SCREEN_WIDTH * 0.3,\n * min: 0,\n * max: 1,\n * type: 'linear',\n * extrapolate: true,\n * round: PixelRatio.get(),\n * },\n * };\n *\n * var toTheLeft = buildStyleInterpolator(ToTheLeft);\n *\n * Would returns a specialized function of the form:\n *\n * function(result, value) {\n * var didChange = false;\n * var nextScalarVal;\n * var ratio;\n * ratio = (value - 0) / 1;\n * ratio = ratio > 1 ? 1 : (ratio < 0 ? 0 : ratio);\n * nextScalarVal = Math.round(100 * (1 * (1 - ratio) + 0.7 * ratio)) / 100;\n * if (!didChange) {\n * var prevVal = result.opacity;\n * result.opacity = nextScalarVal;\n * didChange = didChange || (nextScalarVal !== prevVal);\n * } else {\n * result.opacity = nextScalarVal;\n * }\n * ratio = (value - 0) / 1;\n * nextScalarVal = Math.round(2 * (0 * (1 - ratio) + -30 * ratio)) / 2;\n * if (!didChange) {\n * var prevVal = result.left;\n * result.left = nextScalarVal;\n * didChange = didChange || (nextScalarVal !== prevVal);\n * } else {\n * result.left = nextScalarVal;\n * }\n * return didChange;\n * }\n */\n\nvar ARGUMENT_NAMES_RE = /([^\\s,]+)/g;\n/**\n * This is obviously a huge hack. Proper tooling would allow actual inlining.\n * This only works in a few limited cases (where there is no function return\n * value, and the function operates mutatively on parameters).\n *\n * Example:\n *\n *\n * var inlineMe(a, b) {\n * a = b + b;\n * };\n *\n * inline(inlineMe, ['hi', 'bye']); // \"hi = bye + bye;\"\n *\n * @param {function} func Any simple function whos arguments can be replaced via a regex.\n * @param {array<string>} replaceWithArgs Corresponding names of variables\n * within an environment, to replace `func` args with.\n * @return {string} Resulting function body string.\n */\nvar inline = function(func, replaceWithArgs) {\n var fnStr = func.toString();\n var parameterNames = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'))\n .match(ARGUMENT_NAMES_RE) ||\n [];\n var replaceRegexStr = parameterNames.map(function(paramName) {\n return '\\\\b' + paramName + '\\\\b';\n }).join('|');\n var replaceRegex = new RegExp(replaceRegexStr, 'g');\n var fnBody = fnStr.substring(fnStr.indexOf('{') + 1, fnStr.lastIndexOf('}'));\n var newFnBody = fnBody.replace(replaceRegex, function(parameterName) {\n var indexInParameterNames = parameterNames.indexOf(parameterName);\n var replacementName = replaceWithArgs[indexInParameterNames];\n return replacementName;\n });\n return newFnBody.split('\\n');\n};\n\n/**\n * Simply a convenient way to inline functions using the function's toString\n * method.\n */\nvar MatrixOps = {\n unroll: function(matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {\n m0 = matVar[0];\n m1 = matVar[1];\n m2 = matVar[2];\n m3 = matVar[3];\n m4 = matVar[4];\n m5 = matVar[5];\n m6 = matVar[6];\n m7 = matVar[7];\n m8 = matVar[8];\n m9 = matVar[9];\n m10 = matVar[10];\n m11 = matVar[11];\n m12 = matVar[12];\n m13 = matVar[13];\n m14 = matVar[14];\n m15 = matVar[15];\n },\n\n matrixDiffers: function(retVar, matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {\n retVar = retVar ||\n m0 !== matVar[0] ||\n m1 !== matVar[1] ||\n m2 !== matVar[2] ||\n m3 !== matVar[3] ||\n m4 !== matVar[4] ||\n m5 !== matVar[5] ||\n m6 !== matVar[6] ||\n m7 !== matVar[7] ||\n m8 !== matVar[8] ||\n m9 !== matVar[9] ||\n m10 !== matVar[10] ||\n m11 !== matVar[11] ||\n m12 !== matVar[12] ||\n m13 !== matVar[13] ||\n m14 !== matVar[14] ||\n m15 !== matVar[15];\n },\n\n transformScale: function(matVar, opVar) {\n // Scaling matVar by opVar\n var x = opVar[0];\n var y = opVar[1];\n var z = opVar[2];\n matVar[0] = matVar[0] * x;\n matVar[1] = matVar[1] * x;\n matVar[2] = matVar[2] * x;\n matVar[3] = matVar[3] * x;\n matVar[4] = matVar[4] * y;\n matVar[5] = matVar[5] * y;\n matVar[6] = matVar[6] * y;\n matVar[7] = matVar[7] * y;\n matVar[8] = matVar[8] * z;\n matVar[9] = matVar[9] * z;\n matVar[10] = matVar[10] * z;\n matVar[11] = matVar[11] * z;\n matVar[12] = matVar[12];\n matVar[13] = matVar[13];\n matVar[14] = matVar[14];\n matVar[15] = matVar[15];\n },\n\n /**\n * All of these matrix transforms are not general purpose utilities, and are\n * only suitable for being inlined for the use of building up interpolators.\n */\n transformTranslate: function(matVar, opVar) {\n // Translating matVar by opVar\n var x = opVar[0];\n var y = opVar[1];\n var z = opVar[2];\n matVar[12] = matVar[0] * x + matVar[4] * y + matVar[8] * z + matVar[12];\n matVar[13] = matVar[1] * x + matVar[5] * y + matVar[9] * z + matVar[13];\n matVar[14] = matVar[2] * x + matVar[6] * y + matVar[10] * z + matVar[14];\n matVar[15] = matVar[3] * x + matVar[7] * y + matVar[11] * z + matVar[15];\n },\n\n /**\n * @param {array} matVar Both the input, and the output matrix.\n * @param {quaternion specification} q Four element array describing rotation.\n */\n transformRotateRadians: function(matVar, q) {\n // Rotating matVar by q\n var xQuat = q[0], yQuat = q[1], zQuat = q[2], wQuat = q[3];\n var x2Quat = xQuat + xQuat;\n var y2Quat = yQuat + yQuat;\n var z2Quat = zQuat + zQuat;\n var xxQuat = xQuat * x2Quat;\n var xyQuat = xQuat * y2Quat;\n var xzQuat = xQuat * z2Quat;\n var yyQuat = yQuat * y2Quat;\n var yzQuat = yQuat * z2Quat;\n var zzQuat = zQuat * z2Quat;\n var wxQuat = wQuat * x2Quat;\n var wyQuat = wQuat * y2Quat;\n var wzQuat = wQuat * z2Quat;\n // Step 1: Inlines the construction of a quaternion matrix (`quatMat`)\n var quatMat0 = 1 - (yyQuat + zzQuat);\n var quatMat1 = xyQuat + wzQuat;\n var quatMat2 = xzQuat - wyQuat;\n var quatMat4 = xyQuat - wzQuat;\n var quatMat5 = 1 - (xxQuat + zzQuat);\n var quatMat6 = yzQuat + wxQuat;\n var quatMat8 = xzQuat + wyQuat;\n var quatMat9 = yzQuat - wxQuat;\n var quatMat10 = 1 - (xxQuat + yyQuat);\n // quatMat3/7/11/12/13/14 = 0, quatMat15 = 1\n\n // Step 2: Inlines multiplication, takes advantage of constant quatMat cells\n var a00 = matVar[0];\n var a01 = matVar[1];\n var a02 = matVar[2];\n var a03 = matVar[3];\n var a10 = matVar[4];\n var a11 = matVar[5];\n var a12 = matVar[6];\n var a13 = matVar[7];\n var a20 = matVar[8];\n var a21 = matVar[9];\n var a22 = matVar[10];\n var a23 = matVar[11];\n\n var b0 = quatMat0, b1 = quatMat1, b2 = quatMat2;\n matVar[0] = b0 * a00 + b1 * a10 + b2 * a20;\n matVar[1] = b0 * a01 + b1 * a11 + b2 * a21;\n matVar[2] = b0 * a02 + b1 * a12 + b2 * a22;\n matVar[3] = b0 * a03 + b1 * a13 + b2 * a23;\n b0 = quatMat4; b1 = quatMat5; b2 = quatMat6;\n matVar[4] = b0 * a00 + b1 * a10 + b2 * a20;\n matVar[5] = b0 * a01 + b1 * a11 + b2 * a21;\n matVar[6] = b0 * a02 + b1 * a12 + b2 * a22;\n matVar[7] = b0 * a03 + b1 * a13 + b2 * a23;\n b0 = quatMat8; b1 = quatMat9; b2 = quatMat10;\n matVar[8] = b0 * a00 + b1 * a10 + b2 * a20;\n matVar[9] = b0 * a01 + b1 * a11 + b2 * a21;\n matVar[10] = b0 * a02 + b1 * a12 + b2 * a22;\n matVar[11] = b0 * a03 + b1 * a13 + b2 * a23;\n }\n};\n\n// Optimized version of general operation applications that can be used when\n// the target matrix is known to be the identity matrix.\nvar MatrixOpsInitial = {\n transformScale: function(matVar, opVar) {\n // Scaling matVar known to be identity by opVar\n matVar[0] = opVar[0];\n matVar[1] = 0;\n matVar[2] = 0;\n matVar[3] = 0;\n matVar[4] = 0;\n matVar[5] = opVar[1];\n matVar[6] = 0;\n matVar[7] = 0;\n matVar[8] = 0;\n matVar[9] = 0;\n matVar[10] = opVar[2];\n matVar[11] = 0;\n matVar[12] = 0;\n matVar[13] = 0;\n matVar[14] = 0;\n matVar[15] = 1;\n },\n\n transformTranslate: function(matVar, opVar) {\n // Translating matVar known to be identity by opVar';\n matVar[0] = 1;\n matVar[1] = 0;\n matVar[2] = 0;\n matVar[3] = 0;\n matVar[4] = 0;\n matVar[5] = 1;\n matVar[6] = 0;\n matVar[7] = 0;\n matVar[8] = 0;\n matVar[9] = 0;\n matVar[10] = 1;\n matVar[11] = 0;\n matVar[12] = opVar[0];\n matVar[13] = opVar[1];\n matVar[14] = opVar[2];\n matVar[15] = 1;\n },\n\n /**\n * @param {array} matVar Both the input, and the output matrix - assumed to be\n * identity.\n * @param {quaternion specification} q Four element array describing rotation.\n */\n transformRotateRadians: function(matVar, q) {\n\n // Rotating matVar which is known to be identity by q\n var xQuat = q[0], yQuat = q[1], zQuat = q[2], wQuat = q[3];\n var x2Quat = xQuat + xQuat;\n var y2Quat = yQuat + yQuat;\n var z2Quat = zQuat + zQuat;\n var xxQuat = xQuat * x2Quat;\n var xyQuat = xQuat * y2Quat;\n var xzQuat = xQuat * z2Quat;\n var yyQuat = yQuat * y2Quat;\n var yzQuat = yQuat * z2Quat;\n var zzQuat = zQuat * z2Quat;\n var wxQuat = wQuat * x2Quat;\n var wyQuat = wQuat * y2Quat;\n var wzQuat = wQuat * z2Quat;\n // Step 1: Inlines the construction of a quaternion matrix (`quatMat`)\n var quatMat0 = 1 - (yyQuat + zzQuat);\n var quatMat1 = xyQuat + wzQuat;\n var quatMat2 = xzQuat - wyQuat;\n var quatMat4 = xyQuat - wzQuat;\n var quatMat5 = 1 - (xxQuat + zzQuat);\n var quatMat6 = yzQuat + wxQuat;\n var quatMat8 = xzQuat + wyQuat;\n var quatMat9 = yzQuat - wxQuat;\n var quatMat10 = 1 - (xxQuat + yyQuat);\n // quatMat3/7/11/12/13/14 = 0, quatMat15 = 1\n\n // Step 2: Inlines the multiplication with identity matrix.\n var b0 = quatMat0, b1 = quatMat1, b2 = quatMat2;\n matVar[0] = b0;\n matVar[1] = b1;\n matVar[2] = b2;\n matVar[3] = 0;\n b0 = quatMat4; b1 = quatMat5; b2 = quatMat6;\n matVar[4] = b0;\n matVar[5] = b1;\n matVar[6] = b2;\n matVar[7] = 0;\n b0 = quatMat8; b1 = quatMat9; b2 = quatMat10;\n matVar[8] = b0;\n matVar[9] = b1;\n matVar[10] = b2;\n matVar[11] = 0;\n matVar[12] = 0;\n matVar[13] = 0;\n matVar[14] = 0;\n matVar[15] = 1;\n }\n};\n\n\nvar setNextValAndDetectChange = function(name, tmpVarName) {\n return (\n ' if (!didChange) {\\n' +\n ' var prevVal = result.' + name + ';\\n' +\n ' result.' + name + ' = ' + tmpVarName + ';\\n' +\n ' didChange = didChange || (' + tmpVarName + ' !== prevVal);\\n' +\n ' } else {\\n' +\n ' result.' + name + ' = ' + tmpVarName + ';\\n' +\n ' }\\n'\n );\n};\n\nvar computeNextValLinear = function(anim, from, to, tmpVarName) {\n var hasRoundRatio = 'round' in anim;\n var roundRatio = anim.round;\n var fn = ' ratio = (value - ' + anim.min + ') / ' + (anim.max - anim.min) + ';\\n';\n if (!anim.extrapolate) {\n fn += ' ratio = ratio > 1 ? 1 : (ratio < 0 ? 0 : ratio);\\n';\n }\n\n var roundOpen = (hasRoundRatio ? 'Math.round(' + roundRatio + ' * ' : '' );\n var roundClose = (hasRoundRatio ? ') / ' + roundRatio : '' );\n fn +=\n ' ' + tmpVarName + ' = ' +\n roundOpen +\n '(' + from + ' * (1 - ratio) + ' + to + ' * ratio)' +\n roundClose + ';\\n';\n return fn;\n};\n\nvar computeNextValLinearScalar = function(anim) {\n return computeNextValLinear(anim, anim.from, anim.to, 'nextScalarVal');\n};\n\nvar computeNextValConstant = function(anim) {\n var constantExpression = JSON.stringify(anim.value);\n return ' nextScalarVal = ' + constantExpression + ';\\n';\n};\n\nvar computeNextValStep = function(anim) {\n return (\n ' nextScalarVal = value >= ' +\n (anim.threshold + ' ? ' + anim.to + ' : ' + anim.from) + ';\\n'\n );\n};\n\nvar computeNextValIdentity = function(anim) {\n return ' nextScalarVal = value;\\n';\n};\n\nvar operationVar = function(name) {\n return name + 'ReuseOp';\n};\n\nvar createReusableOperationVars = function(anims) {\n var ret = '';\n for (var name in anims) {\n if (ShouldAllocateReusableOperationVars[name]) {\n ret += 'var ' + operationVar(name) + ' = [];\\n';\n }\n }\n return ret;\n};\n\nvar newlines = function(statements) {\n return '\\n' + statements.join('\\n') + '\\n';\n};\n\n/**\n * @param {Animation} anim Configuration entry.\n * @param {key} dimension Key to examine in `from`/`to`.\n * @param {number} index Field in operationVar to set.\n * @return {string} Code that sets the operation variable's field.\n */\nvar computeNextMatrixOperationField = function(anim, name, dimension, index) {\n var fieldAccess = operationVar(name) + '[' + index + ']';\n if (anim.from[dimension] !== undefined && anim.to[dimension] !== undefined) {\n return ' ' + anim.from[dimension] !== anim.to[dimension] ?\n computeNextValLinear(anim, anim.from[dimension], anim.to[dimension], fieldAccess) :\n fieldAccess + ' = ' + anim.from[dimension] + ';';\n } else {\n return ' ' + fieldAccess + ' = ' + InitialOperationField[name][index] + ';';\n }\n};\n\nvar unrolledVars = [];\nfor (var varIndex = 0; varIndex < 16; varIndex++) {\n unrolledVars.push('m' + varIndex);\n}\nvar setNextMatrixAndDetectChange = function(orderedMatrixOperations) {\n var fn = [\n ' var transformMatrix = result.transformMatrix !== undefined ? ' +\n 'result.transformMatrix : (result.transformMatrix = []);'\n ];\n fn.push.apply(\n fn,\n inline(MatrixOps.unroll, ['transformMatrix'].concat(unrolledVars))\n );\n for (var i = 0; i < orderedMatrixOperations.length; i++) {\n var opName = orderedMatrixOperations[i];\n if (i === 0) {\n fn.push.apply(\n fn,\n inline(MatrixOpsInitial[opName], ['transformMatrix', operationVar(opName)])\n );\n } else {\n fn.push.apply(\n fn,\n inline(MatrixOps[opName], ['transformMatrix', operationVar(opName)])\n );\n }\n }\n fn.push.apply(\n fn,\n inline(MatrixOps.matrixDiffers, ['didChange', 'transformMatrix'].concat(unrolledVars))\n );\n return fn;\n};\n\nvar InterpolateMatrix = {\n transformTranslate: true,\n transformRotateRadians: true,\n transformScale: true,\n};\n\nvar createFunctionString = function(anims) {\n // We must track the order they appear in so transforms are applied in the\n // correct order.\n var orderedMatrixOperations = [];\n\n // Wrapping function allows the final function to contain state (for\n // caching).\n var fn = 'return (function() {\\n';\n fn += createReusableOperationVars(anims);\n fn += 'return function(result, value) {\\n';\n fn += ' var didChange = false;\\n';\n fn += ' var nextScalarVal;\\n';\n fn += ' var ratio;\\n';\n\n for (var name in anims) {\n var anim = anims[name];\n if (anim.type === 'linear') {\n if (InterpolateMatrix[name]) {\n orderedMatrixOperations.push(name);\n var setOperations = [\n computeNextMatrixOperationField(anim, name, X_DIM, 0),\n computeNextMatrixOperationField(anim, name, Y_DIM, 1),\n computeNextMatrixOperationField(anim, name, Z_DIM, 2)\n ];\n if (name === TRANSFORM_ROTATE_NAME) {\n setOperations.push(computeNextMatrixOperationField(anim, name, W_DIM, 3));\n }\n fn += newlines(setOperations);\n } else {\n fn += computeNextValLinearScalar(anim, 'nextScalarVal');\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n }\n } else if (anim.type === 'constant') {\n fn += computeNextValConstant(anim);\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n } else if (anim.type === 'step') {\n fn += computeNextValStep(anim);\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n } else if (anim.type === 'identity') {\n fn += computeNextValIdentity(anim);\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n }\n }\n if (orderedMatrixOperations.length) {\n fn += newlines(setNextMatrixAndDetectChange(orderedMatrixOperations));\n }\n fn += ' return didChange;\\n';\n fn += '};\\n';\n fn += '})()';\n return fn;\n};\n\n/**\n * @param {object} anims Animation configuration by style property name.\n * @return {function} Function accepting style object, that mutates that style\n * object and returns a boolean describing if any update was actually applied.\n */\nvar buildStyleInterpolator = function(anims) {\n return Function(createFunctionString(anims))();\n};\n\n\nmodule.exports = buildStyleInterpolator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/buildStyleInterpolator.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/StaticContainer/StaticContainer.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\n\nvar onlyChild=require('onlyChild');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nStaticContainer=(function(_React$Component){_inherits(StaticContainer,_React$Component);function StaticContainer(){_classCallCheck(this,StaticContainer);_get(Object.getPrototypeOf(StaticContainer.prototype),'constructor',this).apply(this,arguments);}_createClass(StaticContainer,[{key:'shouldComponentUpdate',value:\n\nfunction shouldComponentUpdate(nextProps){\nreturn !!nextProps.shouldUpdate;}},{key:'render',value:\n\n\nfunction render(){\nvar child=this.props.children;\nreturn child === null || child === false?null:onlyChild(child);}}]);return StaticContainer;})(React.Component);\n\n\n\n\nmodule.exports = StaticContainer;","sourceCode":"/**\n * @generated SignedSource<<2a163cdb088fb963f941e627fd89ce11>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule StaticContainer.react\n * @typechecks\n * @flow\n */\n\nvar React = require('React');\n\nvar onlyChild = require('onlyChild');\n\n/**\n * Renders static content efficiently by allowing React to short-circuit the\n * reconciliation process. This component should be used when you know that a\n * subtree of components will never need to be updated.\n *\n * var someValue = ...; // We know for certain this value will never change.\n * return (\n * <StaticContainer>\n * <MyComponent value={someValue} />\n * </StaticContainer>\n * );\n *\n * Typically, you will not need to use this component and should opt for normal\n * React reconciliation.\n */\nclass StaticContainer extends React.Component {\n\n shouldComponentUpdate(nextProps: Object): boolean {\n return !!nextProps.shouldUpdate;\n }\n\n render() {\n var child = this.props.children;\n return (child === null || child === false) ? null : onlyChild(child);\n }\n\n}\n\nmodule.exports = StaticContainer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/StaticContainer/StaticContainer.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar NavigatorNavigationBarStyles=require('NavigatorNavigationBarStyles');\nvar StaticContainer=require('StaticContainer.react');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar COMPONENT_NAMES=['Title','LeftButton','RightButton'];\n\nvar navStatePresentedIndex=function(navState){\nif(navState.presentedIndex !== undefined){\nreturn navState.presentedIndex;}\n\n\nreturn navState.observedTopOfStack;};\n\n\nvar NavigatorNavigationBar=React.createClass({displayName:'NavigatorNavigationBar',\n\npropTypes:{\nnavigator:React.PropTypes.object,\nrouteMapper:React.PropTypes.shape({\nTitle:React.PropTypes.func.isRequired,\nLeftButton:React.PropTypes.func.isRequired,\nRightButton:React.PropTypes.func.isRequired}),\n\nnavState:React.PropTypes.shape({\nrouteStack:React.PropTypes.arrayOf(React.PropTypes.object),\nidStack:React.PropTypes.arrayOf(React.PropTypes.number),\npresentedIndex:React.PropTypes.number}),\n\nstyle:View.propTypes.style},\n\n\nstatics:{\nStyles:NavigatorNavigationBarStyles},\n\n\n_getReusableProps:function(\ncomponentName,\nindex)\n{\nif(!this._reusableProps){\nthis._reusableProps = {};}\n\nvar propStack=this._reusableProps[componentName];\nif(!propStack){\npropStack = this._reusableProps[componentName] = [];}\n\nvar props=propStack[index];\nif(!props){\nprops = propStack[index] = {style:{}};}\n\nreturn props;},\n\n\n_updateIndexProgress:function(\nprogress,\nindex,\nfromIndex,\ntoIndex)\n{\nvar amount=toIndex > fromIndex?progress:1 - progress;\nvar oldDistToCenter=index - fromIndex;\nvar newDistToCenter=index - toIndex;\nvar interpolate;\nif(oldDistToCenter > 0 && newDistToCenter === 0 || \nnewDistToCenter > 0 && oldDistToCenter === 0){\ninterpolate = NavigatorNavigationBarStyles.Interpolators.RightToCenter;}else \nif(oldDistToCenter < 0 && newDistToCenter === 0 || \nnewDistToCenter < 0 && oldDistToCenter === 0){\ninterpolate = NavigatorNavigationBarStyles.Interpolators.CenterToLeft;}else \nif(oldDistToCenter === newDistToCenter){\ninterpolate = NavigatorNavigationBarStyles.Interpolators.RightToCenter;}else \n{\ninterpolate = NavigatorNavigationBarStyles.Interpolators.RightToLeft;}\n\n\nCOMPONENT_NAMES.forEach(function(componentName){\nvar component=this.refs[componentName + index];\nvar props=this._getReusableProps(componentName,index);\nif(component && interpolate[componentName](props.style,amount)){\ncomponent.setNativeProps(props);}},\n\nthis);},\n\n\nupdateProgress:function(\nprogress,\nfromIndex,\ntoIndex)\n{\nvar max=Math.max(fromIndex,toIndex);\nvar min=Math.min(fromIndex,toIndex);\nfor(var index=min;index <= max;index++) {\nthis._updateIndexProgress(progress,index,fromIndex,toIndex);}},\n\n\n\nrender:function(){\nvar navState=this.props.navState;\nvar components=COMPONENT_NAMES.map(function(componentName){\nreturn navState.routeStack.map(\nthis._renderOrReturnComponent.bind(this,componentName));},\n\nthis);\n\nreturn (\nReact.createElement(View,{style:[styles.navBarContainer,this.props.style]},\ncomponents));},\n\n\n\n\n_renderOrReturnComponent:function(\ncomponentName,\nroute,\nindex)\n{\nvar navState=this.props.navState;\nvar uid=navState.idStack[index];\nvar containerRef=componentName + 'Container' + uid;\nvar alreadyRendered=this.refs[containerRef];\nif(alreadyRendered){\n\nreturn (\nReact.createElement(StaticContainer,{\nref:containerRef,\nkey:containerRef,\nshouldUpdate:false}));}\n\n\n\n\nvar content=this.props.routeMapper[componentName](\nnavState.routeStack[index],\nthis.props.navigator,\nindex,\nthis.props.navState);\n\nif(!content){\nreturn null;}\n\n\nvar initialStage=index === navStatePresentedIndex(this.props.navState)?\nNavigatorNavigationBarStyles.Stages.Center:NavigatorNavigationBarStyles.Stages.Left;\nreturn (\nReact.createElement(StaticContainer,{\nref:containerRef,\nkey:containerRef,\nshouldUpdate:false},\nReact.createElement(View,{ref:componentName + index,style:initialStage[componentName]},\ncontent)));}});\n\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nnavBarContainer:{\nposition:'absolute',\nheight:NavigatorNavigationBarStyles.General.TotalNavHeight,\ntop:0,\nleft:0,\nright:0,\nbackgroundColor:'transparent'}});\n\n\n\nmodule.exports = NavigatorNavigationBar;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorNavigationBar\n */\n'use strict';\n\nvar React = require('React');\nvar NavigatorNavigationBarStyles = require('NavigatorNavigationBarStyles');\nvar StaticContainer = require('StaticContainer.react');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar COMPONENT_NAMES = ['Title', 'LeftButton', 'RightButton'];\n\nvar navStatePresentedIndex = function(navState) {\n if (navState.presentedIndex !== undefined) {\n return navState.presentedIndex;\n }\n // TODO: rename `observedTopOfStack` to `presentedIndex` in `NavigatorIOS`\n return navState.observedTopOfStack;\n};\n\nvar NavigatorNavigationBar = React.createClass({\n\n propTypes: {\n navigator: React.PropTypes.object,\n routeMapper: React.PropTypes.shape({\n Title: React.PropTypes.func.isRequired,\n LeftButton: React.PropTypes.func.isRequired,\n RightButton: React.PropTypes.func.isRequired,\n }),\n navState: React.PropTypes.shape({\n routeStack: React.PropTypes.arrayOf(React.PropTypes.object),\n idStack: React.PropTypes.arrayOf(React.PropTypes.number),\n presentedIndex: React.PropTypes.number,\n }),\n style: View.propTypes.style,\n },\n\n statics: {\n Styles: NavigatorNavigationBarStyles,\n },\n\n _getReusableProps: function(\n /*string*/componentName,\n /*number*/index\n ) /*object*/ {\n if (!this._reusableProps) {\n this._reusableProps = {};\n }\n var propStack = this._reusableProps[componentName];\n if (!propStack) {\n propStack = this._reusableProps[componentName] = [];\n }\n var props = propStack[index];\n if (!props) {\n props = propStack[index] = {style:{}};\n }\n return props;\n },\n\n _updateIndexProgress: function(\n /*number*/progress,\n /*number*/index,\n /*number*/fromIndex,\n /*number*/toIndex\n ) {\n var amount = toIndex > fromIndex ? progress : (1 - progress);\n var oldDistToCenter = index - fromIndex;\n var newDistToCenter = index - toIndex;\n var interpolate;\n if (oldDistToCenter > 0 && newDistToCenter === 0 ||\n newDistToCenter > 0 && oldDistToCenter === 0) {\n interpolate = NavigatorNavigationBarStyles.Interpolators.RightToCenter;\n } else if (oldDistToCenter < 0 && newDistToCenter === 0 ||\n newDistToCenter < 0 && oldDistToCenter === 0) {\n interpolate = NavigatorNavigationBarStyles.Interpolators.CenterToLeft;\n } else if (oldDistToCenter === newDistToCenter) {\n interpolate = NavigatorNavigationBarStyles.Interpolators.RightToCenter;\n } else {\n interpolate = NavigatorNavigationBarStyles.Interpolators.RightToLeft;\n }\n\n COMPONENT_NAMES.forEach(function (componentName) {\n var component = this.refs[componentName + index];\n var props = this._getReusableProps(componentName, index);\n if (component && interpolate[componentName](props.style, amount)) {\n component.setNativeProps(props);\n }\n }, this);\n },\n\n updateProgress: function(\n /*number*/progress,\n /*number*/fromIndex,\n /*number*/toIndex\n ) {\n var max = Math.max(fromIndex, toIndex);\n var min = Math.min(fromIndex, toIndex);\n for (var index = min; index <= max; index++) {\n this._updateIndexProgress(progress, index, fromIndex, toIndex);\n }\n },\n\n render: function() {\n var navState = this.props.navState;\n var components = COMPONENT_NAMES.map(function (componentName) {\n return navState.routeStack.map(\n this._renderOrReturnComponent.bind(this, componentName)\n );\n }, this);\n\n return (\n <View style={[styles.navBarContainer, this.props.style]}>\n {components}\n </View>\n );\n },\n\n _renderOrReturnComponent: function(\n /*string*/componentName,\n /*object*/route,\n /*number*/index\n ) /*object*/ {\n var navState = this.props.navState;\n var uid = navState.idStack[index];\n var containerRef = componentName + 'Container' + uid;\n var alreadyRendered = this.refs[containerRef];\n if (alreadyRendered) {\n // Don't bother re-calculating the children\n return (\n <StaticContainer\n ref={containerRef}\n key={containerRef}\n shouldUpdate={false}\n />\n );\n }\n\n var content = this.props.routeMapper[componentName](\n navState.routeStack[index],\n this.props.navigator,\n index,\n this.props.navState\n );\n if (!content) {\n return null;\n }\n\n var initialStage = index === navStatePresentedIndex(this.props.navState) ?\n NavigatorNavigationBarStyles.Stages.Center : NavigatorNavigationBarStyles.Stages.Left;\n return (\n <StaticContainer\n ref={containerRef}\n key={containerRef}\n shouldUpdate={false}>\n <View ref={componentName + index} style={initialStage[componentName]}>\n {content}\n </View>\n </StaticContainer>\n );\n },\n\n});\n\n\nvar styles = StyleSheet.create({\n navBarContainer: {\n position: 'absolute',\n height: NavigatorNavigationBarStyles.General.TotalNavHeight,\n top: 0,\n left: 0,\n right: 0,\n backgroundColor: 'transparent',\n },\n});\n\nmodule.exports = NavigatorNavigationBar;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorSceneConfigs.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\nvar PixelRatio=require('PixelRatio');\n\nvar buildStyleInterpolator=require('buildStyleInterpolator');\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar SCREEN_HEIGHT=Dimensions.get('window').height;\n\nvar FadeToTheLeft={\n\n\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:-Math.round(Dimensions.get('window').width * 0.3),y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\n\n\n\n\n\n\n\n\n\n\n\ntransformScale:{\nfrom:{x:1,y:1,z:1},\nto:{x:0.95,y:0.95,z:1},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nopacity:{\nfrom:1,\nto:0.3,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100},\n\ntranslateX:{\nfrom:0,\nto:-Math.round(Dimensions.get('window').width * 0.3),\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nscaleX:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nscaleY:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true}};\n\n\n\nvar FadeToTheRight=_extends({},\nFadeToTheLeft,{\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:Math.round(SCREEN_WIDTH * 0.3),y:0,z:0}},\n\ntranslateX:{\nfrom:0,\nto:Math.round(SCREEN_WIDTH * 0.3)}});\n\n\n\nvar FadeIn={\nopacity:{\nfrom:0,\nto:1,\nmin:0.5,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100}};\n\n\n\nvar FadeOut={\nopacity:{\nfrom:1,\nto:0,\nmin:0,\nmax:0.5,\ntype:'linear',\nextrapolate:false,\nround:100}};\n\n\n\nvar ToTheLeft={\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:-Dimensions.get('window').width,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\n\ntranslateX:{\nfrom:0,\nto:-Dimensions.get('window').width,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}};\n\n\n\nvar FromTheRight={\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\n\ntransformTranslate:{\nfrom:{x:Dimensions.get('window').width,y:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\n\ntranslateX:{\nfrom:Dimensions.get('window').width,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\n\nscaleX:{\nvalue:1,\ntype:'constant'},\n\nscaleY:{\nvalue:1,\ntype:'constant'}};\n\n\n\nvar FromTheLeft=_extends({},\nFromTheRight,{\ntransformTranslate:{\nfrom:{x:-SCREEN_WIDTH,y:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateX:{\nfrom:-SCREEN_WIDTH,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}});\n\n\n\nvar ToTheBack={\n\n\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntransformScale:{\nfrom:{x:1,y:1,z:1},\nto:{x:0.95,y:0.95,z:1},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nopacity:{\nfrom:1,\nto:0.3,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100},\n\nscaleX:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nscaleY:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true}};\n\n\n\nvar FromTheFront={\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\n\ntransformTranslate:{\nfrom:{x:0,y:Dimensions.get('window').height,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateY:{\nfrom:Dimensions.get('window').height,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nscaleX:{\nvalue:1,\ntype:'constant'},\n\nscaleY:{\nvalue:1,\ntype:'constant'}};\n\n\n\nvar ToTheBackAndroid={\nopacity:{\nvalue:1,\ntype:'constant'}};\n\n\n\nvar FromTheFrontAndroid={\nopacity:{\nfrom:0,\nto:1,\nmin:0.5,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100},\n\ntransformTranslate:{\nfrom:{x:0,y:100,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateY:{\nfrom:100,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}};\n\n\n\nvar BaseOverswipeConfig={\nfrictionConstant:1,\nfrictionByDistance:1.5};\n\n\nvar BaseLeftToRightGesture={\n\n\nisDetachable:false,\n\n\ngestureDetectMovement:2,\n\n\nnotMoving:0.3,\n\n\ndirectionRatio:0.66,\n\n\nsnapVelocity:2,\n\n\nedgeHitWidth:30,\n\n\nstillCompletionRatio:3 / 5,\n\nfullDistance:SCREEN_WIDTH,\n\ndirection:'left-to-right'};\n\n\n\nvar BaseRightToLeftGesture=_extends({},\nBaseLeftToRightGesture,{\ndirection:'right-to-left'});\n\n\nvar BaseConfig={\n\ngestures:{\npop:BaseLeftToRightGesture},\n\n\n\nspringFriction:26,\nspringTension:200,\n\n\ndefaultTransitionVelocity:1.5,\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheRight),\nout:buildStyleInterpolator(FadeToTheLeft)}};\n\n\n\nvar NavigatorSceneConfigs={\nPushFromRight:_extends({},\nBaseConfig),\n\n\nFloatFromRight:_extends({},\nBaseConfig),\n\n\nFloatFromLeft:_extends({},\nBaseConfig,{\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheLeft),\nout:buildStyleInterpolator(FadeToTheRight)}}),\n\n\nFloatFromBottom:_extends({},\nBaseConfig,{\ngestures:{\npop:_extends({},\nBaseLeftToRightGesture,{\nedgeHitWidth:150,\ndirection:'top-to-bottom',\nfullDistance:SCREEN_HEIGHT})},\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheFront),\nout:buildStyleInterpolator(ToTheBack)}}),\n\n\nFloatFromBottomAndroid:_extends({},\nBaseConfig,{\ngestures:null,\ndefaultTransitionVelocity:3,\nspringFriction:20,\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheFrontAndroid),\nout:buildStyleInterpolator(ToTheBackAndroid)}}),\n\n\nFadeAndroid:_extends({},\nBaseConfig,{\ngestures:null,\nanimationInterpolators:{\ninto:buildStyleInterpolator(FadeIn),\nout:buildStyleInterpolator(FadeOut)}}),\n\n\nHorizontalSwipeJump:_extends({},\nBaseConfig,{\ngestures:{\njumpBack:_extends({},\nBaseLeftToRightGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true}),\n\njumpForward:_extends({},\nBaseRightToLeftGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true})},\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheRight),\nout:buildStyleInterpolator(ToTheLeft)}})};\n\n\n\n\nmodule.exports = NavigatorSceneConfigs;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorSceneConfigs\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar PixelRatio = require('PixelRatio');\n\nvar buildStyleInterpolator = require('buildStyleInterpolator');\n\nvar SCREEN_WIDTH = Dimensions.get('window').width;\nvar SCREEN_HEIGHT = Dimensions.get('window').height;\n\nvar FadeToTheLeft = {\n // Rotate *requires* you to break out each individual component of\n // rotation (x, y, z, w)\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: -Math.round(Dimensions.get('window').width * 0.3), y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n // Uncomment to try rotation:\n // Quick guide to reasoning about rotations:\n // http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/#Quaternions\n // transformRotateRadians: {\n // from: {x: 0, y: 0, z: 0, w: 1},\n // to: {x: 0, y: 0, z: -0.47, w: 0.87},\n // min: 0,\n // max: 1,\n // type: 'linear',\n // extrapolate: true\n // },\n transformScale: {\n from: {x: 1, y: 1, z: 1},\n to: {x: 0.95, y: 0.95, z: 1},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n opacity: {\n from: 1,\n to: 0.3,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n translateX: {\n from: 0,\n to: -Math.round(Dimensions.get('window').width * 0.3),\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n scaleX: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n scaleY: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n};\n\nvar FadeToTheRight = {\n ...FadeToTheLeft,\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: Math.round(SCREEN_WIDTH * 0.3), y: 0, z: 0},\n },\n translateX: {\n from: 0,\n to: Math.round(SCREEN_WIDTH * 0.3),\n }\n};\n\nvar FadeIn = {\n opacity: {\n from: 0,\n to: 1,\n min: 0.5,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n};\n\nvar FadeOut = {\n opacity: {\n from: 1,\n to: 0,\n min: 0,\n max: 0.5,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n};\n\nvar ToTheLeft = {\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: -Dimensions.get('window').width, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n\n translateX: {\n from: 0,\n to: -Dimensions.get('window').width,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar FromTheRight = {\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n\n transformTranslate: {\n from: {x: Dimensions.get('window').width, y: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n\n translateX: {\n from: Dimensions.get('window').width,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n\n scaleX: {\n value: 1,\n type: 'constant',\n },\n scaleY: {\n value: 1,\n type: 'constant',\n },\n};\n\nvar FromTheLeft = {\n ...FromTheRight,\n transformTranslate: {\n from: {x: -SCREEN_WIDTH, y: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateX: {\n from: -SCREEN_WIDTH,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar ToTheBack = {\n // Rotate *requires* you to break out each individual component of\n // rotation (x, y, z, w)\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n transformScale: {\n from: {x: 1, y: 1, z: 1},\n to: {x: 0.95, y: 0.95, z: 1},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n opacity: {\n from: 1,\n to: 0.3,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n scaleX: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n scaleY: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n};\n\nvar FromTheFront = {\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n\n transformTranslate: {\n from: {x: 0, y: Dimensions.get('window').height, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateY: {\n from: Dimensions.get('window').height,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n scaleX: {\n value: 1,\n type: 'constant',\n },\n scaleY: {\n value: 1,\n type: 'constant',\n },\n};\n\nvar ToTheBackAndroid = {\n opacity: {\n value: 1,\n type: 'constant',\n },\n};\n\nvar FromTheFrontAndroid = {\n opacity: {\n from: 0,\n to: 1,\n min: 0.5,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n transformTranslate: {\n from: {x: 0, y: 100, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateY: {\n from: 100,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar BaseOverswipeConfig = {\n frictionConstant: 1,\n frictionByDistance: 1.5,\n};\n\nvar BaseLeftToRightGesture = {\n\n // If the gesture can end and restart during one continuous touch\n isDetachable: false,\n\n // How far the swipe must drag to start transitioning\n gestureDetectMovement: 2,\n\n // Amplitude of release velocity that is considered still\n notMoving: 0.3,\n\n // Fraction of directional move required.\n directionRatio: 0.66,\n\n // Velocity to transition with when the gesture release was \"not moving\"\n snapVelocity: 2,\n\n // Region that can trigger swipe. iOS default is 30px from the left edge\n edgeHitWidth: 30,\n\n // Ratio of gesture completion when non-velocity release will cause action\n stillCompletionRatio: 3 / 5,\n\n fullDistance: SCREEN_WIDTH,\n\n direction: 'left-to-right',\n\n};\n\nvar BaseRightToLeftGesture = {\n ...BaseLeftToRightGesture,\n direction: 'right-to-left',\n};\n\nvar BaseConfig = {\n // A list of all gestures that are enabled on this scene\n gestures: {\n pop: BaseLeftToRightGesture,\n },\n\n // Rebound spring parameters when transitioning FROM this scene\n springFriction: 26,\n springTension: 200,\n\n // Velocity to start at when transitioning without gesture\n defaultTransitionVelocity: 1.5,\n\n // Animation interpolators for horizontal transitioning:\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheRight),\n out: buildStyleInterpolator(FadeToTheLeft),\n },\n};\n\nvar NavigatorSceneConfigs = {\n PushFromRight: {\n ...BaseConfig,\n // We will want to customize this soon\n },\n FloatFromRight: {\n ...BaseConfig,\n // We will want to customize this soon\n },\n FloatFromLeft: {\n ...BaseConfig,\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheLeft),\n out: buildStyleInterpolator(FadeToTheRight),\n },\n },\n FloatFromBottom: {\n ...BaseConfig,\n gestures: {\n pop: {\n ...BaseLeftToRightGesture,\n edgeHitWidth: 150,\n direction: 'top-to-bottom',\n fullDistance: SCREEN_HEIGHT,\n }\n },\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheFront),\n out: buildStyleInterpolator(ToTheBack),\n },\n },\n FloatFromBottomAndroid: {\n ...BaseConfig,\n gestures: null,\n defaultTransitionVelocity: 3,\n springFriction: 20,\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheFrontAndroid),\n out: buildStyleInterpolator(ToTheBackAndroid),\n },\n },\n FadeAndroid: {\n ...BaseConfig,\n gestures: null,\n animationInterpolators: {\n into: buildStyleInterpolator(FadeIn),\n out: buildStyleInterpolator(FadeOut),\n },\n },\n HorizontalSwipeJump: {\n ...BaseConfig,\n gestures: {\n jumpBack: {\n ...BaseLeftToRightGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n jumpForward: {\n ...BaseRightToLeftGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n },\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheRight),\n out: buildStyleInterpolator(ToTheLeft),\n },\n },\n};\n\nmodule.exports = NavigatorSceneConfigs;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorSceneConfigs.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/PanResponder.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar TouchHistoryMath=require('TouchHistoryMath');\n\nvar currentCentroidXOfTouchesChangedAfter=\nTouchHistoryMath.currentCentroidXOfTouchesChangedAfter;\nvar currentCentroidYOfTouchesChangedAfter=\nTouchHistoryMath.currentCentroidYOfTouchesChangedAfter;\nvar previousCentroidXOfTouchesChangedAfter=\nTouchHistoryMath.previousCentroidXOfTouchesChangedAfter;\nvar previousCentroidYOfTouchesChangedAfter=\nTouchHistoryMath.previousCentroidYOfTouchesChangedAfter;\nvar currentCentroidX=TouchHistoryMath.currentCentroidX;\nvar currentCentroidY=TouchHistoryMath.currentCentroidY;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PanResponder={\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_initializeGestureState:function(gestureState){\ngestureState.moveX = 0;\ngestureState.moveY = 0;\ngestureState.x0 = 0;\ngestureState.y0 = 0;\ngestureState.dx = 0;\ngestureState.dy = 0;\ngestureState.vx = 0;\ngestureState.vy = 0;\ngestureState.numberActiveTouches = 0;\n\ngestureState._accountsForMovesUpTo = 0;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_updateGestureStateOnMove:function(gestureState,touchHistory){\ngestureState.numberActiveTouches = touchHistory.numberActiveTouches;\ngestureState.moveX = currentCentroidXOfTouchesChangedAfter(\ntouchHistory,\ngestureState._accountsForMovesUpTo);\n\ngestureState.moveY = currentCentroidYOfTouchesChangedAfter(\ntouchHistory,\ngestureState._accountsForMovesUpTo);\n\nvar movedAfter=gestureState._accountsForMovesUpTo;\nvar prevX=previousCentroidXOfTouchesChangedAfter(touchHistory,movedAfter);\nvar x=currentCentroidXOfTouchesChangedAfter(touchHistory,movedAfter);\nvar prevY=previousCentroidYOfTouchesChangedAfter(touchHistory,movedAfter);\nvar y=currentCentroidYOfTouchesChangedAfter(touchHistory,movedAfter);\nvar nextDX=gestureState.dx + (x - prevX);\nvar nextDY=gestureState.dy + (y - prevY);\n\n\nvar dt=\ntouchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo;\ngestureState.vx = (nextDX - gestureState.dx) / dt;\ngestureState.vy = (nextDY - gestureState.dy) / dt;\n\ngestureState.dx = nextDX;\ngestureState.dy = nextDY;\ngestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncreate:function(config){\nvar gestureState={\n\nstateID:Math.random()};\n\nPanResponder._initializeGestureState(gestureState);\nvar panHandlers={\nonStartShouldSetResponder:function(e){\nreturn config.onStartShouldSetPanResponder === undefined?false:\nconfig.onStartShouldSetPanResponder(e,gestureState);},\n\nonMoveShouldSetResponder:function(e){\nreturn config.onMoveShouldSetPanResponder === undefined?false:\nconfig.onMoveShouldSetPanResponder(e,gestureState);},\n\nonStartShouldSetResponderCapture:function(e){\n\n\nif(e.nativeEvent.touches.length === 1){\nPanResponder._initializeGestureState(gestureState);}\n\ngestureState.numberActiveTouches = e.touchHistory.numberActiveTouches;\nreturn config.onStartShouldSetPanResponderCapture !== undefined?\nconfig.onStartShouldSetPanResponderCapture(e,gestureState):false;},\n\n\nonMoveShouldSetResponderCapture:function(e){\nvar touchHistory=e.touchHistory;\n\n\n\nif(gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp){\nreturn false;}\n\nPanResponder._updateGestureStateOnMove(gestureState,touchHistory);\nreturn config.onMoveShouldSetResponderCapture?\nconfig.onMoveShouldSetPanResponderCapture(e,gestureState):false;},\n\n\nonResponderGrant:function(e){\ngestureState.x0 = currentCentroidX(e.touchHistory);\ngestureState.y0 = currentCentroidY(e.touchHistory);\ngestureState.dx = 0;\ngestureState.dy = 0;\nconfig.onPanResponderGrant && config.onPanResponderGrant(e,gestureState);\n\nreturn config.onShouldBlockNativeResponder === undefined?true:\nconfig.onShouldBlockNativeResponder();},\n\n\nonResponderReject:function(e){\nconfig.onPanResponderReject && config.onPanResponderReject(e,gestureState);},\n\n\nonResponderRelease:function(e){\nconfig.onPanResponderRelease && config.onPanResponderRelease(e,gestureState);\nPanResponder._initializeGestureState(gestureState);},\n\n\nonResponderStart:function(e){\nvar touchHistory=e.touchHistory;\ngestureState.numberActiveTouches = touchHistory.numberActiveTouches;\nconfig.onPanResponderStart && config.onPanResponderStart(e,gestureState);},\n\n\nonResponderMove:function(e){\nvar touchHistory=e.touchHistory;\n\n\nif(gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp){\nreturn;}\n\n\n\nPanResponder._updateGestureStateOnMove(gestureState,touchHistory);\nconfig.onPanResponderMove && config.onPanResponderMove(e,gestureState);},\n\n\nonResponderEnd:function(e){\nvar touchHistory=e.touchHistory;\ngestureState.numberActiveTouches = touchHistory.numberActiveTouches;\nconfig.onPanResponderEnd && config.onPanResponderEnd(e,gestureState);},\n\n\nonResponderTerminate:function(e){\nconfig.onPanResponderTerminate && \nconfig.onPanResponderTerminate(e,gestureState);\nPanResponder._initializeGestureState(gestureState);},\n\n\nonResponderTerminationRequest:function(e){\nreturn config.onPanResponderTerminationRequest === undefined?true:\nconfig.onPanResponderTerminationRequest(e,gestureState);}};\n\n\nreturn {panHandlers:panHandlers};}};\n\n\n\nmodule.exports = PanResponder;","sourceCode":"/**\n * @providesModule PanResponder\n */\n\n\"use strict\";\n\nvar TouchHistoryMath = require('TouchHistoryMath');\n\nvar currentCentroidXOfTouchesChangedAfter =\n TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;\nvar currentCentroidYOfTouchesChangedAfter =\n TouchHistoryMath.currentCentroidYOfTouchesChangedAfter;\nvar previousCentroidXOfTouchesChangedAfter =\n TouchHistoryMath.previousCentroidXOfTouchesChangedAfter;\nvar previousCentroidYOfTouchesChangedAfter =\n TouchHistoryMath.previousCentroidYOfTouchesChangedAfter;\nvar currentCentroidX = TouchHistoryMath.currentCentroidX;\nvar currentCentroidY = TouchHistoryMath.currentCentroidY;\n\n/**\n * `PanResponder` reconciles several touches into a single gesture. It makes\n * single-touch gestures resilient to extra touches, and can be used to\n * recognize simple multi-touch gestures.\n *\n * It provides a predictable wrapper of the responder handlers provided by the\n * [gesture responder system](/react-native/docs/gesture-responder-system.html).\n * For each handler, it provides a new `gestureState` object alongside the\n * normal event.\n *\n * A `gestureState` object has the following:\n *\n * - `stateID` - ID of the gestureState- persisted as long as there at least\n * one touch on screen\n * - `moveX` - the latest screen coordinates of the recently-moved touch\n * - `moveY` - the latest screen coordinates of the recently-moved touch\n * - `x0` - the screen coordinates of the responder grant\n * - `y0` - the screen coordinates of the responder grant\n * - `dx` - accumulated distance of the gesture since the touch started\n * - `dy` - accumulated distance of the gesture since the touch started\n * - `vx` - current velocity of the gesture\n * - `vy` - current velocity of the gesture\n * - `numberActiveTouches` - Number of touches currently on screeen\n *\n * ### Basic Usage\n *\n * ```\n * componentWillMount: function() {\n * this._panGesture = PanResponder.create({\n * // Ask to be the responder:\n * onStartShouldSetPanResponder: (evt, gestureState) => true,\n * onStartShouldSetPanResponderCapture: (evt, gestureState) => true,\n * onMoveShouldSetPanResponder: (evt, gestureState) => true,\n * onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,\n *\n * onPanResponderGrant: (evt, gestureState) => {\n * // The guesture has started. Show visual feedback so the user knows\n * // what is happening!\n *\n * // gestureState.{x,y}0 will be set to zero now\n * },\n * onPanResponderMove: (evt, gestureState) => {\n * // The most recent move distance is gestureState.move{X,Y}\n *\n * // The accumulated gesture distance since becoming responder is\n * // gestureState.d{x,y}\n * },\n * onPanResponderTerminationRequest: (evt, gestureState) => true,\n * onPanResponderRelease: (evt, gestureState) => {\n * // The user has released all touches while this view is the\n * // responder. This typically means a gesture has succeeded\n * },\n * onPanResponderTerminate: (evt, gestureState) => {\n * // Another component has become the responder, so this gesture\n * // should be cancelled\n * },\n * onShouldBlockNativeResponder: (evt, gestureState) => {\n * // Returns whether this component should block native components from becoming the JS\n * // responder. Returns true by default. Is currently only supported on android.\n * return true;\n * },\n * });\n * },\n *\n * render: function() {\n * return (\n * <View {...this._panResponder.panHandlers} />\n * );\n * },\n *\n * ```\n *\n * ### Working Example\n *\n * To see it in action, try the\n * [PanResponder example in UIExplorer](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/ResponderExample.js)\n */\n\nvar PanResponder = {\n\n /**\n *\n * A graphical explanation of the touch data flow:\n *\n * +----------------------------+ +--------------------------------+\n * | ResponderTouchHistoryStore | |TouchHistoryMath |\n * +----------------------------+ +----------+---------------------+\n * |Global store of touchHistory| |Allocation-less math util |\n * |including activeness, start | |on touch history (centroids |\n * |position, prev/cur position.| |and multitouch movement etc) |\n * | | | |\n * +----^-----------------------+ +----^---------------------------+\n * | |\n * | (records relevant history |\n * | of touches relevant for |\n * | implementing higher level |\n * | gestures) |\n * | |\n * +----+-----------------------+ +----|---------------------------+\n * | ResponderEventPlugin | | | Your App/Component |\n * +----------------------------+ +----|---------------------------+\n * |Negotiates which view gets | Low level | | High level |\n * |onResponderMove events. | events w/ | +-+-------+ events w/ |\n * |Also records history into | touchHistory| | Pan | multitouch + |\n * |ResponderTouchHistoryStore. +---------------->Responder+-----> accumulative|\n * +----------------------------+ attached to | | | distance and |\n * each event | +---------+ velocity. |\n * | |\n * | |\n * +--------------------------------+\n *\n *\n *\n * Gesture that calculates cumulative movement over time in a way that just\n * \"does the right thing\" for multiple touches. The \"right thing\" is very\n * nuanced. When moving two touches in opposite directions, the cumulative\n * distance is zero in each dimension. When two touches move in parallel five\n * pixels in the same direction, the cumulative distance is five, not ten. If\n * two touches start, one moves five in a direction, then stops and the other\n * touch moves fives in the same direction, the cumulative distance is ten.\n *\n * This logic requires a kind of processing of time \"clusters\" of touch events\n * so that two touch moves that essentially occur in parallel but move every\n * other frame respectively, are considered part of the same movement.\n *\n * Explanation of some of the non-obvious fields:\n *\n * - moveX/moveY: If no move event has been observed, then `(moveX, moveY)` is\n * invalid. If a move event has been observed, `(moveX, moveY)` is the\n * centroid of the most recently moved \"cluster\" of active touches.\n * (Currently all move have the same timeStamp, but later we should add some\n * threshold for what is considered to be \"moving\"). If a palm is\n * accidentally counted as a touch, but a finger is moving greatly, the palm\n * will move slightly, but we only want to count the single moving touch.\n * - x0/y0: Centroid location (non-cumulative) at the time of becoming\n * responder.\n * - dx/dy: Cumulative touch distance - not the same thing as sum of each touch\n * distance. Accounts for touch moves that are clustered together in time,\n * moving the same direction. Only valid when currently responder (otherwise,\n * it only represents the drag distance below the threshold).\n * - vx/vy: Velocity.\n */\n\n _initializeGestureState: function(gestureState) {\n gestureState.moveX = 0;\n gestureState.moveY = 0;\n gestureState.x0 = 0;\n gestureState.y0 = 0;\n gestureState.dx = 0;\n gestureState.dy = 0;\n gestureState.vx = 0;\n gestureState.vy = 0;\n gestureState.numberActiveTouches = 0;\n // All `gestureState` accounts for timeStamps up until:\n gestureState._accountsForMovesUpTo = 0;\n },\n\n /**\n * This is nuanced and is necessary. It is incorrect to continuously take all\n * active *and* recently moved touches, find the centroid, and track how that\n * result changes over time. Instead, we must take all recently moved\n * touches, and calculate how the centroid has changed just for those\n * recently moved touches, and append that change to an accumulator. This is\n * to (at least) handle the case where the user is moving three fingers, and\n * then one of the fingers stops but the other two continue.\n *\n * This is very different than taking all of the recently moved touches and\n * storing their centroid as `dx/dy`. For correctness, we must *accumulate\n * changes* in the centroid of recently moved touches.\n *\n * There is also some nuance with how we handle multiple moved touches in a\n * single event. With the way `ReactNativeEventEmitter` dispatches touches as\n * individual events, multiple touches generate two 'move' events, each of\n * them triggering `onResponderMove`. But with the way `PanResponder` works,\n * all of the gesture inference is performed on the first dispatch, since it\n * looks at all of the touches (even the ones for which there hasn't been a\n * native dispatch yet). Therefore, `PanResponder` does not call\n * `onResponderMove` passed the first dispatch. This diverges from the\n * typical responder callback pattern (without using `PanResponder`), but\n * avoids more dispatches than necessary.\n */\n _updateGestureStateOnMove: function(gestureState, touchHistory) {\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n gestureState.moveX = currentCentroidXOfTouchesChangedAfter(\n touchHistory,\n gestureState._accountsForMovesUpTo\n );\n gestureState.moveY = currentCentroidYOfTouchesChangedAfter(\n touchHistory,\n gestureState._accountsForMovesUpTo\n );\n var movedAfter = gestureState._accountsForMovesUpTo;\n var prevX = previousCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n var x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n var prevY = previousCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n var y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n var nextDX = gestureState.dx + (x - prevX);\n var nextDY = gestureState.dy + (y - prevY);\n\n // TODO: This must be filtered intelligently.\n var dt =\n (touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo);\n gestureState.vx = (nextDX - gestureState.dx) / dt;\n gestureState.vy = (nextDY - gestureState.dy) / dt;\n\n gestureState.dx = nextDX;\n gestureState.dy = nextDY;\n gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;\n },\n\n /**\n * @param {object} config Enhanced versions of all of the responder callbacks\n * that provide not only the typical `ResponderSyntheticEvent`, but also the\n * `PanResponder` gesture state. Simply replace the word `Responder` with\n * `PanResponder` in each of the typical `onResponder*` callbacks. For\n * example, the `config` object would look like:\n *\n * - `onMoveShouldSetPanResponder: (e, gestureState) => {...}`\n * - `onMoveShouldSetPanResponderCapture: (e, gestureState) => {...}`\n * - `onStartShouldSetPanResponder: (e, gestureState) => {...}`\n * - `onStartShouldSetPanResponderCapture: (e, gestureState) => {...}`\n * - `onPanResponderReject: (e, gestureState) => {...}`\n * - `onPanResponderGrant: (e, gestureState) => {...}`\n * - `onPanResponderStart: (e, gestureState) => {...}`\n * - `onPanResponderEnd: (e, gestureState) => {...}`\n * - `onPanResponderRelease: (e, gestureState) => {...}`\n * - `onPanResponderMove: (e, gestureState) => {...}`\n * - `onPanResponderTerminate: (e, gestureState) => {...}`\n * - `onPanResponderTerminationRequest: (e, gestureState) => {...}`\n * - 'onShouldBlockNativeResponder: (e, gestureState) => {...}'\n *\n * In general, for events that have capture equivalents, we update the\n * gestureState once in the capture phase and can use it in the bubble phase\n * as well.\n *\n * Be careful with onStartShould* callbacks. They only reflect updated\n * `gestureState` for start/end events that bubble/capture to the Node.\n * Once the node is the responder, you can rely on every start/end event\n * being processed by the gesture and `gestureState` being updated\n * accordingly. (numberActiveTouches) may not be totally accurate unless you\n * are the responder.\n */\n create: function(config) {\n var gestureState = {\n // Useful for debugging\n stateID: Math.random(),\n };\n PanResponder._initializeGestureState(gestureState);\n var panHandlers = {\n onStartShouldSetResponder: function(e) {\n return config.onStartShouldSetPanResponder === undefined ? false :\n config.onStartShouldSetPanResponder(e, gestureState);\n },\n onMoveShouldSetResponder: function(e) {\n return config.onMoveShouldSetPanResponder === undefined ? false :\n config.onMoveShouldSetPanResponder(e, gestureState);\n },\n onStartShouldSetResponderCapture: function(e) {\n // TODO: Actually, we should reinitialize the state any time\n // touches.length increases from 0 active to > 0 active.\n if (e.nativeEvent.touches.length === 1) {\n PanResponder._initializeGestureState(gestureState);\n }\n gestureState.numberActiveTouches = e.touchHistory.numberActiveTouches;\n return config.onStartShouldSetPanResponderCapture !== undefined ?\n config.onStartShouldSetPanResponderCapture(e, gestureState) : false;\n },\n\n onMoveShouldSetResponderCapture: function(e) {\n var touchHistory = e.touchHistory;\n // Responder system incorrectly dispatches should* to current responder\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n if (gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp) {\n return false;\n }\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n return config.onMoveShouldSetResponderCapture ?\n config.onMoveShouldSetPanResponderCapture(e, gestureState) : false;\n },\n\n onResponderGrant: function(e) {\n gestureState.x0 = currentCentroidX(e.touchHistory);\n gestureState.y0 = currentCentroidY(e.touchHistory);\n gestureState.dx = 0;\n gestureState.dy = 0;\n config.onPanResponderGrant && config.onPanResponderGrant(e, gestureState);\n // TODO: t7467124 investigate if this can be removed\n return config.onShouldBlockNativeResponder === undefined ? true :\n config.onShouldBlockNativeResponder();\n },\n\n onResponderReject: function(e) {\n config.onPanResponderReject && config.onPanResponderReject(e, gestureState);\n },\n\n onResponderRelease: function(e) {\n config.onPanResponderRelease && config.onPanResponderRelease(e, gestureState);\n PanResponder._initializeGestureState(gestureState);\n },\n\n onResponderStart: function(e) {\n var touchHistory = e.touchHistory;\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n config.onPanResponderStart && config.onPanResponderStart(e, gestureState);\n },\n\n onResponderMove: function(e) {\n var touchHistory = e.touchHistory;\n // Guard against the dispatch of two touch moves when there are two\n // simultaneously changed touches.\n if (gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp) {\n return;\n }\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n config.onPanResponderMove && config.onPanResponderMove(e, gestureState);\n },\n\n onResponderEnd: function(e) {\n var touchHistory = e.touchHistory;\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n config.onPanResponderEnd && config.onPanResponderEnd(e, gestureState);\n },\n\n onResponderTerminate: function(e) {\n config.onPanResponderTerminate &&\n config.onPanResponderTerminate(e, gestureState);\n PanResponder._initializeGestureState(gestureState);\n },\n\n onResponderTerminationRequest: function(e) {\n return config.onPanResponderTerminationRequest === undefined ? true :\n config.onPanResponderTerminationRequest(e, gestureState);\n },\n };\n return {panHandlers: panHandlers};\n },\n};\n\nmodule.exports = PanResponder;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/PanResponder.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/TouchHistoryMath.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar TouchHistoryMath={\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncentroidDimension:function(touchHistory,touchesChangedAfter,isXAxis,ofCurrent){\nvar touchBank=touchHistory.touchBank;\nvar total=0;\nvar count=0;\n\nvar oneTouchData=touchHistory.numberActiveTouches === 1?\ntouchHistory.touchBank[touchHistory.indexOfSingleActiveTouch]:null;\n\nif(oneTouchData !== null){\nif(oneTouchData.touchActive && oneTouchData.currentTimeStamp > touchesChangedAfter){\ntotal += ofCurrent && isXAxis?oneTouchData.currentPageX:\nofCurrent && !isXAxis?oneTouchData.currentPageY:\n!ofCurrent && isXAxis?oneTouchData.previousPageX:\noneTouchData.previousPageY;\ncount = 1;}}else \n\n{\nfor(var i=0;i < touchBank.length;i++) {\nvar touchTrack=touchBank[i];\nif(touchTrack !== null && \ntouchTrack !== undefined && \ntouchTrack.touchActive && \ntouchTrack.currentTimeStamp >= touchesChangedAfter){\nvar toAdd;\nif(ofCurrent && isXAxis){\ntoAdd = touchTrack.currentPageX;}else \nif(ofCurrent && !isXAxis){\ntoAdd = touchTrack.currentPageY;}else \nif(!ofCurrent && isXAxis){\ntoAdd = touchTrack.previousPageX;}else \n{\ntoAdd = touchTrack.previousPageY;}\n\ntotal += toAdd;\ncount++;}}}\n\n\n\nreturn count > 0?total / count:TouchHistoryMath.noCentroid;},\n\n\ncurrentCentroidXOfTouchesChangedAfter:function(touchHistory,touchesChangedAfter){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\ntouchesChangedAfter,\ntrue,\ntrue);},\n\n\n\ncurrentCentroidYOfTouchesChangedAfter:function(touchHistory,touchesChangedAfter){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\ntouchesChangedAfter,\nfalse,\ntrue);},\n\n\n\npreviousCentroidXOfTouchesChangedAfter:function(touchHistory,touchesChangedAfter){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\ntouchesChangedAfter,\ntrue,\nfalse);},\n\n\n\npreviousCentroidYOfTouchesChangedAfter:function(touchHistory,touchesChangedAfter){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\ntouchesChangedAfter,\nfalse,\nfalse);},\n\n\n\ncurrentCentroidX:function(touchHistory){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\n0,\ntrue,\ntrue);},\n\n\n\ncurrentCentroidY:function(touchHistory){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\n0,\nfalse,\ntrue);},\n\n\n\nnoCentroid:-1};\n\n\nmodule.exports = TouchHistoryMath;","sourceCode":"/**\n * @providesModule TouchHistoryMath\n */\n\n\"use strict\";\n\nvar TouchHistoryMath = {\n /**\n * This code is optimized and not intended to look beautiful. This allows\n * computing of touch centroids that have moved after `touchesChangedAfter`\n * timeStamp. You can compute the current centroid involving all touches\n * moves after `touchesChangedAfter`, or you can compute the previous\n * centroid of all touches that were moved after `touchesChangedAfter`.\n *\n * @param {TouchHistoryMath} touchHistory Standard Responder touch track\n * data.\n * @param {number} touchesChangedAfter timeStamp after which moved touches\n * are considered \"actively moving\" - not just \"active\".\n * @param {boolean} isXAxis Consider `x` dimension vs. `y` dimension.\n * @param {boolean} ofCurrent Compute current centroid for actively moving\n * touches vs. previous centroid of now actively moving touches.\n * @return {number} value of centroid in specified dimension.\n */\n centroidDimension: function(touchHistory, touchesChangedAfter, isXAxis, ofCurrent) {\n var touchBank = touchHistory.touchBank;\n var total = 0;\n var count = 0;\n\n var oneTouchData = touchHistory.numberActiveTouches === 1 ?\n touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch] : null;\n\n if (oneTouchData !== null) {\n if (oneTouchData.touchActive && oneTouchData.currentTimeStamp > touchesChangedAfter) {\n total += ofCurrent && isXAxis ? oneTouchData.currentPageX :\n ofCurrent && !isXAxis ? oneTouchData.currentPageY :\n !ofCurrent && isXAxis ? oneTouchData.previousPageX :\n oneTouchData.previousPageY;\n count = 1;\n }\n } else {\n for (var i = 0; i < touchBank.length; i++) {\n var touchTrack = touchBank[i];\n if (touchTrack !== null &&\n touchTrack !== undefined &&\n touchTrack.touchActive &&\n touchTrack.currentTimeStamp >= touchesChangedAfter) {\n var toAdd; // Yuck, program temporarily in invalid state.\n if (ofCurrent && isXAxis) {\n toAdd = touchTrack.currentPageX;\n } else if (ofCurrent && !isXAxis) {\n toAdd = touchTrack.currentPageY;\n } else if (!ofCurrent && isXAxis) {\n toAdd = touchTrack.previousPageX;\n } else {\n toAdd = touchTrack.previousPageY;\n }\n total += toAdd;\n count++;\n }\n }\n }\n return count > 0 ? total / count : TouchHistoryMath.noCentroid;\n },\n\n currentCentroidXOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n true, // isXAxis\n true // ofCurrent\n );\n },\n\n currentCentroidYOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n false, // isXAxis\n true // ofCurrent\n );\n },\n\n previousCentroidXOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n true, // isXAxis\n false // ofCurrent\n );\n },\n\n previousCentroidYOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n false, // isXAxis\n false // ofCurrent\n );\n },\n\n currentCentroidX: function(touchHistory) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n 0, // touchesChangedAfter\n true, // isXAxis\n true // ofCurrent\n );\n },\n\n currentCentroidY: function(touchHistory) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n 0, // touchesChangedAfter\n false, // isXAxis\n true // ofCurrent\n );\n },\n\n noCentroid: -1,\n};\n\nmodule.exports = TouchHistoryMath;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/TouchHistoryMath.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/core/clamp.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclamp(min,value,max){\nif(value < min){\nreturn min;}\n\nif(value > max){\nreturn max;}\n\nreturn value;}\n\n\nmodule.exports = clamp;","sourceCode":"/**\n * @generated SignedSource<<ec51291ea6059cf23faa74f8644d17b1>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule clamp\n * @typechecks\n */\n\n /**\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @return {number}\n */\nfunction clamp(min, value, max) {\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n}\n\nmodule.exports = clamp;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/core/clamp.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/rebound/rebound.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(){\nvar rebound={};\nvar util=rebound.util = {};\nvar concat=Array.prototype.concat;\nvar slice=Array.prototype.slice;\n\n\nutil.bind = function bind(func,context){\nvar args=slice.call(arguments,2);\nreturn function(){\nfunc.apply(context,concat.call(args,slice.call(arguments)));};};\n\n\n\n\nutil.extend = function extend(target,source){\nfor(var key in source) {\nif(source.hasOwnProperty(key)){\ntarget[key] = source[key];}}};\n\n\n\n\n\n\n\n\n\nvar SpringSystem=rebound.SpringSystem = function SpringSystem(looper){\nthis._springRegistry = {};\nthis._activeSprings = [];\nthis.listeners = [];\nthis._idleSpringIndices = [];\nthis.looper = looper || new AnimationLooper();\nthis.looper.springSystem = this;};\n\n\nutil.extend(SpringSystem.prototype,{\n\n_springRegistry:null,\n\n_isIdle:true,\n\n_lastTimeMillis:-1,\n\n_activeSprings:null,\n\nlisteners:null,\n\n_idleSpringIndices:null,\n\n\n\n\n\n\nsetLooper:function(looper){\nthis.looper = looper;\nlooper.springSystem = this;},\n\n\n\n\n\n\ncreateSpring:function(tension,friction){\nvar springConfig;\nif(tension === undefined || friction === undefined){\nspringConfig = SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG;}else \n{\nspringConfig = \nSpringConfig.fromOrigamiTensionAndFriction(tension,friction);}\n\nreturn this.createSpringWithConfig(springConfig);},\n\n\n\n\n\ncreateSpringWithBouncinessAndSpeed:function(bounciness,speed){\nvar springConfig;\nif(bounciness === undefined || speed === undefined){\nspringConfig = SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG;}else \n{\nspringConfig = \nSpringConfig.fromBouncinessAndSpeed(bounciness,speed);}\n\nreturn this.createSpringWithConfig(springConfig);},\n\n\n\ncreateSpringWithConfig:function(springConfig){\nvar spring=new Spring(this);\nthis.registerSpring(spring);\nspring.setSpringConfig(springConfig);\nreturn spring;},\n\n\n\n\n\n\ngetIsIdle:function(){\nreturn this._isIdle;},\n\n\n\n\n\ngetSpringById:function(id){\nreturn this._springRegistry[id];},\n\n\n\n\ngetAllSprings:function(){\nvar vals=[];\nfor(var id in this._springRegistry) {\nif(this._springRegistry.hasOwnProperty(id)){\nvals.push(this._springRegistry[id]);}}\n\n\nreturn vals;},\n\n\n\n\n\n\nregisterSpring:function(spring){\nthis._springRegistry[spring.getId()] = spring;},\n\n\n\n\n\n\nderegisterSpring:function(spring){\nremoveFirst(this._activeSprings,spring);\ndelete this._springRegistry[spring.getId()];},\n\n\nadvance:function(time,deltaTime){\nwhile(this._idleSpringIndices.length > 0) this._idleSpringIndices.pop();\nfor(var i=0,len=this._activeSprings.length;i < len;i++) {\nvar spring=this._activeSprings[i];\nif(spring.systemShouldAdvance()){\nspring.advance(time / 1000.0,deltaTime / 1000.0);}else \n{\nthis._idleSpringIndices.push(this._activeSprings.indexOf(spring));}}\n\n\nwhile(this._idleSpringIndices.length > 0) {\nvar idx=this._idleSpringIndices.pop();\nidx >= 0 && this._activeSprings.splice(idx,1);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nloop:function(currentTimeMillis){\nvar listener;\nif(this._lastTimeMillis === -1){\nthis._lastTimeMillis = currentTimeMillis - 1;}\n\nvar ellapsedMillis=currentTimeMillis - this._lastTimeMillis;\nthis._lastTimeMillis = currentTimeMillis;\n\nvar i=0,len=this.listeners.length;\nfor(i = 0;i < len;i++) {\nlistener = this.listeners[i];\nlistener.onBeforeIntegrate && listener.onBeforeIntegrate(this);}\n\n\nthis.advance(currentTimeMillis,ellapsedMillis);\nif(this._activeSprings.length === 0){\nthis._isIdle = true;\nthis._lastTimeMillis = -1;}\n\n\nfor(i = 0;i < len;i++) {\nlistener = this.listeners[i];\nlistener.onAfterIntegrate && listener.onAfterIntegrate(this);}\n\n\nif(!this._isIdle){\nthis.looper.run();}},\n\n\n\n\n\n\nactivateSpring:function(springId){\nvar spring=this._springRegistry[springId];\nif(this._activeSprings.indexOf(spring) == -1){\nthis._activeSprings.push(spring);}\n\nif(this.getIsIdle()){\nthis._isIdle = false;\nthis.looper.run();}},\n\n\n\n\n\n\naddListener:function(listener){\nthis.listeners.push(listener);},\n\n\n\nremoveListener:function(listener){\nremoveFirst(this.listeners,listener);},\n\n\n\nremoveAllListeners:function(){\nthis.listeners = [];}});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Spring=rebound.Spring = function Spring(springSystem){\nthis._id = 's' + Spring._ID++;\nthis._springSystem = springSystem;\nthis.listeners = [];\nthis._currentState = new PhysicsState();\nthis._previousState = new PhysicsState();\nthis._tempState = new PhysicsState();};\n\n\nutil.extend(Spring,{\n_ID:0,\n\nMAX_DELTA_TIME_SEC:0.064,\n\nSOLVER_TIMESTEP_SEC:0.001});\n\n\n\nutil.extend(Spring.prototype,{\n\n_id:0,\n\n_springConfig:null,\n\n_overshootClampingEnabled:false,\n\n_currentState:null,\n\n_previousState:null,\n\n_tempState:null,\n\n_startValue:0,\n\n_endValue:0,\n\n_wasAtRest:true,\n\n_restSpeedThreshold:0.001,\n\n_displacementFromRestThreshold:0.001,\n\nlisteners:null,\n\n_timeAccumulator:0,\n\n_springSystem:null,\n\n\ndestroy:function(){\nthis.listeners = [];\nthis.frames = [];\nthis._springSystem.deregisterSpring(this);},\n\n\n\n\ngetId:function(){\nreturn this._id;},\n\n\n\n\n\nsetSpringConfig:function(springConfig){\nthis._springConfig = springConfig;\nreturn this;},\n\n\n\ngetSpringConfig:function(){\nreturn this._springConfig;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsetCurrentValue:function(currentValue,skipSetAtRest){\nthis._startValue = currentValue;\nthis._currentState.position = currentValue;\nif(!skipSetAtRest){\nthis.setAtRest();}\n\nthis.notifyPositionUpdated(false,false);\nreturn this;},\n\n\n\n\n\ngetStartValue:function(){\nreturn this._startValue;},\n\n\n\ngetCurrentValue:function(){\nreturn this._currentState.position;},\n\n\n\n\ngetCurrentDisplacementDistance:function(){\nreturn this.getDisplacementDistanceForState(this._currentState);},\n\n\ngetDisplacementDistanceForState:function(state){\nreturn Math.abs(this._endValue - state.position);},\n\n\n\n\n\n\n\n\nsetEndValue:function(endValue){\nif(this._endValue == endValue && this.isAtRest()){\nreturn this;}\n\nthis._startValue = this.getCurrentValue();\nthis._endValue = endValue;\nthis._springSystem.activateSpring(this.getId());\nfor(var i=0,len=this.listeners.length;i < len;i++) {\nvar listener=this.listeners[i];\nvar onChange=listener.onSpringEndStateChange;\nonChange && onChange(this);}\n\nreturn this;},\n\n\n\ngetEndValue:function(){\nreturn this._endValue;},\n\n\n\n\n\n\n\n\n\nsetVelocity:function(velocity){\nif(velocity === this._currentState.velocity){\nreturn this;}\n\nthis._currentState.velocity = velocity;\nthis._springSystem.activateSpring(this.getId());\nreturn this;},\n\n\n\ngetVelocity:function(){\nreturn this._currentState.velocity;},\n\n\n\n\nsetRestSpeedThreshold:function(restSpeedThreshold){\nthis._restSpeedThreshold = restSpeedThreshold;\nreturn this;},\n\n\n\ngetRestSpeedThreshold:function(){\nreturn this._restSpeedThreshold;},\n\n\n\n\n\nsetRestDisplacementThreshold:function(displacementFromRestThreshold){\nthis._displacementFromRestThreshold = displacementFromRestThreshold;},\n\n\n\ngetRestDisplacementThreshold:function(){\nreturn this._displacementFromRestThreshold;},\n\n\n\n\n\n\n\nsetOvershootClampingEnabled:function(enabled){\nthis._overshootClampingEnabled = enabled;\nreturn this;},\n\n\n\nisOvershootClampingEnabled:function(){\nreturn this._overshootClampingEnabled;},\n\n\n\n\n\nisOvershooting:function(){\nvar start=this._startValue;\nvar end=this._endValue;\nreturn this._springConfig.tension > 0 && (\nstart < end && this.getCurrentValue() > end || \nstart > end && this.getCurrentValue() < end);},\n\n\n\n\n\n\n\nadvance:function(time,realDeltaTime){\nvar isAtRest=this.isAtRest();\n\nif(isAtRest && this._wasAtRest){\nreturn;}\n\n\nvar adjustedDeltaTime=realDeltaTime;\nif(realDeltaTime > Spring.MAX_DELTA_TIME_SEC){\nadjustedDeltaTime = Spring.MAX_DELTA_TIME_SEC;}\n\n\nthis._timeAccumulator += adjustedDeltaTime;\n\nvar tension=this._springConfig.tension,\nfriction=this._springConfig.friction,\n\nposition=this._currentState.position,\nvelocity=this._currentState.velocity,\ntempPosition=this._tempState.position,\ntempVelocity=this._tempState.velocity,\n\naVelocity,aAcceleration,\nbVelocity,bAcceleration,\ncVelocity,cAcceleration,\ndVelocity,dAcceleration,\n\ndxdt,dvdt;\n\nwhile(this._timeAccumulator >= Spring.SOLVER_TIMESTEP_SEC) {\n\nthis._timeAccumulator -= Spring.SOLVER_TIMESTEP_SEC;\n\nif(this._timeAccumulator < Spring.SOLVER_TIMESTEP_SEC){\nthis._previousState.position = position;\nthis._previousState.velocity = velocity;}\n\n\naVelocity = velocity;\naAcceleration = \ntension * (this._endValue - tempPosition) - friction * velocity;\n\ntempPosition = position + aVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\ntempVelocity = \nvelocity + aAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\nbVelocity = tempVelocity;\nbAcceleration = \ntension * (this._endValue - tempPosition) - friction * tempVelocity;\n\ntempPosition = position + bVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\ntempVelocity = \nvelocity + bAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\ncVelocity = tempVelocity;\ncAcceleration = \ntension * (this._endValue - tempPosition) - friction * tempVelocity;\n\ntempPosition = position + cVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\ntempVelocity = \nvelocity + cAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\ndVelocity = tempVelocity;\ndAcceleration = \ntension * (this._endValue - tempPosition) - friction * tempVelocity;\n\ndxdt = \n1.0 / 6.0 * (aVelocity + 2.0 * (bVelocity + cVelocity) + dVelocity);\ndvdt = 1.0 / 6.0 * (\naAcceleration + 2.0 * (bAcceleration + cAcceleration) + dAcceleration);\n\n\nposition += dxdt * Spring.SOLVER_TIMESTEP_SEC;\nvelocity += dvdt * Spring.SOLVER_TIMESTEP_SEC;}\n\n\nthis._tempState.position = tempPosition;\nthis._tempState.velocity = tempVelocity;\n\nthis._currentState.position = position;\nthis._currentState.velocity = velocity;\n\nif(this._timeAccumulator > 0){\nthis.interpolate(this._timeAccumulator / Spring.SOLVER_TIMESTEP_SEC);}\n\n\nif(this.isAtRest() || \nthis._overshootClampingEnabled && this.isOvershooting()){\n\nif(this._springConfig.tension > 0){\nthis._startValue = this._endValue;\nthis._currentState.position = this._endValue;}else \n{\nthis._endValue = this._currentState.position;\nthis._startValue = this._endValue;}\n\nthis.setVelocity(0);\nisAtRest = true;}\n\n\nvar notifyActivate=false;\nif(this._wasAtRest){\nthis._wasAtRest = false;\nnotifyActivate = true;}\n\n\nvar notifyAtRest=false;\nif(isAtRest){\nthis._wasAtRest = true;\nnotifyAtRest = true;}\n\n\nthis.notifyPositionUpdated(notifyActivate,notifyAtRest);},\n\n\nnotifyPositionUpdated:function(notifyActivate,notifyAtRest){\nfor(var i=0,len=this.listeners.length;i < len;i++) {\nvar listener=this.listeners[i];\nif(notifyActivate && listener.onSpringActivate){\nlistener.onSpringActivate(this);}\n\n\nif(listener.onSpringUpdate){\nlistener.onSpringUpdate(this);}\n\n\nif(notifyAtRest && listener.onSpringAtRest){\nlistener.onSpringAtRest(this);}}},\n\n\n\n\n\n\n\n\n\nsystemShouldAdvance:function(){\nreturn !this.isAtRest() || !this.wasAtRest();},\n\n\nwasAtRest:function(){\nreturn this._wasAtRest;},\n\n\n\n\n\n\n\n\nisAtRest:function(){\nreturn Math.abs(this._currentState.velocity) < this._restSpeedThreshold && (\nthis.getDisplacementDistanceForState(this._currentState) <= \nthis._displacementFromRestThreshold || \nthis._springConfig.tension === 0);},\n\n\n\n\n\n\nsetAtRest:function(){\nthis._endValue = this._currentState.position;\nthis._tempState.position = this._currentState.position;\nthis._currentState.velocity = 0;\nreturn this;},\n\n\ninterpolate:function(alpha){\nthis._currentState.position = this._currentState.position * \nalpha + this._previousState.position * (1 - alpha);\nthis._currentState.velocity = this._currentState.velocity * \nalpha + this._previousState.velocity * (1 - alpha);},\n\n\ngetListeners:function(){\nreturn this.listeners;},\n\n\naddListener:function(newListener){\nthis.listeners.push(newListener);\nreturn this;},\n\n\nremoveListener:function(listenerToRemove){\nremoveFirst(this.listeners,listenerToRemove);\nreturn this;},\n\n\nremoveAllListeners:function(){\nthis.listeners = [];\nreturn this;},\n\n\ncurrentValueIsApproximately:function(value){\nreturn Math.abs(this.getCurrentValue() - value) <= \nthis.getRestDisplacementThreshold();}});\n\n\n\n\n\n\n\n\n\nvar PhysicsState=function PhysicsState(){};\n\nutil.extend(PhysicsState.prototype,{\nposition:0,\nvelocity:0});\n\n\n\n\n\n\n\n\nvar SpringConfig=rebound.SpringConfig = \nfunction SpringConfig(tension,friction){\nthis.tension = tension;\nthis.friction = friction;};\n\n\n\n\n\n\n\nvar AnimationLooper=rebound.AnimationLooper = function AnimationLooper(){\nthis.springSystem = null;\nvar _this=this;\nvar _run=function(){\n_this.springSystem.loop(Date.now());};\n\n\nthis.run = function(){\nutil.onFrame(_run);};};\n\n\n\n\n\n\n\n\n\nrebound.SimulationLooper = function SimulationLooper(timestep){\nthis.springSystem = null;\nvar time=0;\nvar running=false;\ntimestep = timestep || 16.667;\n\nthis.run = function(){\nif(running){\nreturn;}\n\nrunning = true;\nwhile(!this.springSystem.getIsIdle()) {\nthis.springSystem.loop(time += timestep);}\n\nrunning = false;};};\n\n\n\n\n\n\n\n\nrebound.SteppingSimulationLooper = function(timestep){\nthis.springSystem = null;\nvar time=0;\n\n\n\nthis.run = function(){};\n\n\nthis.step = function(timestep){\nthis.springSystem.loop(time += timestep);};};\n\n\n\n\n\n\n\n\nvar OrigamiValueConverter=rebound.OrigamiValueConverter = {\ntensionFromOrigamiValue:function(oValue){\nreturn (oValue - 30.0) * 3.62 + 194.0;},\n\n\norigamiValueFromTension:function(tension){\nreturn (tension - 194.0) / 3.62 + 30.0;},\n\n\nfrictionFromOrigamiValue:function(oValue){\nreturn (oValue - 8.0) * 3.0 + 25.0;},\n\n\norigamiFromFriction:function(friction){\nreturn (friction - 25.0) / 3.0 + 8.0;}};\n\n\n\n\n\n\n\n\n\n\nvar BouncyConversion=rebound.BouncyConversion = function(bounciness,speed){\nthis.bounciness = bounciness;\nthis.speed = speed;\nvar b=this.normalize(bounciness / 1.7,0,20.0);\nb = this.projectNormal(b,0.0,0.8);\nvar s=this.normalize(speed / 1.7,0,20.0);\nthis.bouncyTension = this.projectNormal(s,0.5,200);\nthis.bouncyFriction = this.quadraticOutInterpolation(\nb,\nthis.b3Nobounce(this.bouncyTension),\n0.01);};\n\n\nutil.extend(BouncyConversion.prototype,{\n\nnormalize:function(value,startValue,endValue){\nreturn (value - startValue) / (endValue - startValue);},\n\n\nprojectNormal:function(n,start,end){\nreturn start + n * (end - start);},\n\n\nlinearInterpolation:function(t,start,end){\nreturn t * end + (1.0 - t) * start;},\n\n\nquadraticOutInterpolation:function(t,start,end){\nreturn this.linearInterpolation(2 * t - t * t,start,end);},\n\n\nb3Friction1:function(x){\nreturn 0.0007 * Math.pow(x,3) - \n0.031 * Math.pow(x,2) + 0.64 * x + 1.28;},\n\n\nb3Friction2:function(x){\nreturn 0.000044 * Math.pow(x,3) - \n0.006 * Math.pow(x,2) + 0.36 * x + 2.;},\n\n\nb3Friction3:function(x){\nreturn 0.00000045 * Math.pow(x,3) - \n0.000332 * Math.pow(x,2) + 0.1078 * x + 5.84;},\n\n\nb3Nobounce:function(tension){\nvar friction=0;\nif(tension <= 18){\nfriction = this.b3Friction1(tension);}else \nif(tension > 18 && tension <= 44){\nfriction = this.b3Friction2(tension);}else \n{\nfriction = this.b3Friction3(tension);}\n\nreturn friction;}});\n\n\n\nutil.extend(SpringConfig,{\n\n\n\n\nfromOrigamiTensionAndFriction:function(tension,friction){\nreturn new SpringConfig(\nOrigamiValueConverter.tensionFromOrigamiValue(tension),\nOrigamiValueConverter.frictionFromOrigamiValue(friction));},\n\n\n\n\n\nfromBouncinessAndSpeed:function(bounciness,speed){\nvar bouncyConversion=new rebound.BouncyConversion(bounciness,speed);\nreturn this.fromOrigamiTensionAndFriction(\nbouncyConversion.bouncyTension,\nbouncyConversion.bouncyFriction);},\n\n\n\n\ncoastingConfigWithOrigamiFriction:function(friction){\nreturn new SpringConfig(\n0,\nOrigamiValueConverter.frictionFromOrigamiValue(friction));}});\n\n\n\n\nSpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG = \nSpringConfig.fromOrigamiTensionAndFriction(40,7);\n\nutil.extend(SpringConfig.prototype,{friction:0,tension:0});\n\n\n\n\nvar colorCache={};\nutil.hexToRGB = function(color){\nif(colorCache[color]){\nreturn colorCache[color];}\n\ncolor = color.replace('#','');\nif(color.length === 3){\ncolor = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];}\n\nvar parts=color.match(/.{2}/g);\n\nvar ret={\nr:parseInt(parts[0],16),\ng:parseInt(parts[1],16),\nb:parseInt(parts[2],16)};\n\n\ncolorCache[color] = ret;\nreturn ret;};\n\n\nutil.rgbToHex = function(r,g,b){\nr = r.toString(16);\ng = g.toString(16);\nb = b.toString(16);\nr = r.length < 2?'0' + r:r;\ng = g.length < 2?'0' + g:g;\nb = b.length < 2?'0' + b:b;\nreturn '#' + r + g + b;};\n\n\nvar MathUtil=rebound.MathUtil = {\n\n\n\n\n\n\n\n\nmapValueInRange:function(value,fromLow,fromHigh,toLow,toHigh){\nvar fromRangeSize=fromHigh - fromLow;\nvar toRangeSize=toHigh - toLow;\nvar valueScale=(value - fromLow) / fromRangeSize;\nreturn toLow + valueScale * toRangeSize;},\n\n\n\n\n\ninterpolateColor:\nfunction(val,startColor,endColor,fromLow,fromHigh,asRGB){\nfromLow = fromLow === undefined?0:fromLow;\nfromHigh = fromHigh === undefined?1:fromHigh;\nstartColor = util.hexToRGB(startColor);\nendColor = util.hexToRGB(endColor);\nvar r=Math.floor(\nutil.mapValueInRange(val,fromLow,fromHigh,startColor.r,endColor.r));\n\nvar g=Math.floor(\nutil.mapValueInRange(val,fromLow,fromHigh,startColor.g,endColor.g));\n\nvar b=Math.floor(\nutil.mapValueInRange(val,fromLow,fromHigh,startColor.b,endColor.b));\n\nif(asRGB){\nreturn 'rgb(' + r + ',' + g + ',' + b + ')';}else \n{\nreturn util.rgbToHex(r,g,b);}},\n\n\n\ndegreesToRadians:function(deg){\nreturn deg * Math.PI / 180;},\n\n\nradiansToDegrees:function(rad){\nreturn rad * 180 / Math.PI;}};\n\n\n\n\nutil.extend(util,MathUtil);\n\n\n\n\n\n\n\nfunction removeFirst(array,item){\nvar idx=array.indexOf(item);\nidx != -1 && array.splice(idx,1);}\n\n\nvar _onFrame;\nif(typeof window !== 'undefined'){\n_onFrame = window.requestAnimationFrame || \nwindow.webkitRequestAnimationFrame || \nwindow.mozRequestAnimationFrame || \nwindow.msRequestAnimationFrame || \nwindow.oRequestAnimationFrame;}\n\nif(!_onFrame && typeof process !== 'undefined' && process.title === 'node'){\n_onFrame = setImmediate;}\n\n\n\nutil.onFrame = function onFrame(func){\nreturn _onFrame(func);};\n\n\n\n\nif(typeof exports != 'undefined'){\nutil.extend(exports,rebound);}else \nif(typeof window != 'undefined'){\nwindow.rebound = rebound;}})();","sourceCode":"// Rebound\n// =======\n// **Rebound** is a simple library that models Spring dynamics for the\n// purpose of driving physical animations.\n//\n// Origin\n// ------\n// [Rebound](http://facebook.github.io/rebound) was originally written\n// in Java to provide a lightweight physics system for\n// [Home](https://play.google.com/store/apps/details?id=com.facebook.home) and\n// [Chat Heads](https://play.google.com/store/apps/details?id=com.facebook.orca)\n// on Android. It's now been adopted by several other Android\n// applications. This JavaScript port was written to provide a quick\n// way to demonstrate Rebound animations on the web for a\n// [conference talk](https://www.youtube.com/watch?v=s5kNm-DgyjY). Since then\n// the JavaScript version has been used to build some really nice interfaces.\n// Check out [brandonwalkin.com](http://brandonwalkin.com) for an\n// example.\n//\n// Overview\n// --------\n// The Library provides a SpringSystem for maintaining a set of Spring\n// objects and iterating those Springs through a physics solver loop\n// until equilibrium is achieved. The Spring class is the basic\n// animation driver provided by Rebound. By attaching a listener to\n// a Spring, you can observe its motion. The observer function is\n// notified of position changes on the spring as it solves for\n// equilibrium. These position updates can be mapped to an animation\n// range to drive animated property updates on your user interface\n// elements (translation, rotation, scale, etc).\n//\n// Example\n// -------\n// Here's a simple example. Pressing and releasing on the logo below\n// will cause it to scale up and down with a springy animation.\n//\n// <div style=\"text-align:center; margin-bottom:50px; margin-top:50px\">\n// <img\n// src=\"http://facebook.github.io/rebound/images/rebound.png\"\n// id=\"logo\"\n// />\n// </div>\n// <script src=\"../rebound.min.js\"></script>\n// <script>\n//\n// function scale(el, val) {\n// el.style.mozTransform =\n// el.style.msTransform =\n// el.style.webkitTransform =\n// el.style.transform = 'scale3d(' + val + ', ' + val + ', 1)';\n// }\n// var el = document.getElementById('logo');\n//\n// var springSystem = new rebound.SpringSystem();\n// var spring = springSystem.createSpring(50, 3);\n// spring.addListener({\n// onSpringUpdate: function(spring) {\n// var val = spring.getCurrentValue();\n// val = rebound.MathUtil.mapValueInRange(val, 0, 1, 1, 0.5);\n// scale(el, val);\n// }\n// });\n//\n// el.addEventListener('mousedown', function() {\n// spring.setEndValue(1);\n// });\n//\n// el.addEventListener('mouseout', function() {\n// spring.setEndValue(0);\n// });\n//\n// el.addEventListener('mouseup', function() {\n// spring.setEndValue(0);\n// });\n//\n// </script>\n//\n// Here's how it works.\n//\n// ```\n// // Get a reference to the logo element.\n// var el = document.getElementById('logo');\n//\n// // create a SpringSystem and a Spring with a bouncy config.\n// var springSystem = new rebound.SpringSystem();\n// var spring = springSystem.createSpring(50, 3);\n//\n// // Add a listener to the spring. Every time the physics\n// // solver updates the Spring's value onSpringUpdate will\n// // be called.\n// spring.addListener({\n// onSpringUpdate: function(spring) {\n// var val = spring.getCurrentValue();\n// val = rebound.MathUtil\n// .mapValueInRange(val, 0, 1, 1, 0.5);\n// scale(el, val);\n// }\n// });\n//\n// // Listen for mouse down/up/out and toggle the\n// //springs endValue from 0 to 1.\n// el.addEventListener('mousedown', function() {\n// spring.setEndValue(1);\n// });\n//\n// el.addEventListener('mouseout', function() {\n// spring.setEndValue(0);\n// });\n//\n// el.addEventListener('mouseup', function() {\n// spring.setEndValue(0);\n// });\n//\n// // Helper for scaling an element with css transforms.\n// function scale(el, val) {\n// el.style.mozTransform =\n// el.style.msTransform =\n// el.style.webkitTransform =\n// el.style.transform = 'scale3d(' +\n// val + ', ' + val + ', 1)';\n// }\n// ```\n\n(function() {\n var rebound = {};\n var util = rebound.util = {};\n var concat = Array.prototype.concat;\n var slice = Array.prototype.slice;\n\n // Bind a function to a context object.\n util.bind = function bind(func, context) {\n var args = slice.call(arguments, 2);\n return function() {\n func.apply(context, concat.call(args, slice.call(arguments)));\n };\n };\n\n // Add all the properties in the source to the target.\n util.extend = function extend(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n };\n\n // SpringSystem\n // ------------\n // **SpringSystem** is a set of Springs that all run on the same physics\n // timing loop. To get started with a Rebound animation you first\n // create a new SpringSystem and then add springs to it.\n var SpringSystem = rebound.SpringSystem = function SpringSystem(looper) {\n this._springRegistry = {};\n this._activeSprings = [];\n this.listeners = [];\n this._idleSpringIndices = [];\n this.looper = looper || new AnimationLooper();\n this.looper.springSystem = this;\n };\n\n util.extend(SpringSystem.prototype, {\n\n _springRegistry: null,\n\n _isIdle: true,\n\n _lastTimeMillis: -1,\n\n _activeSprings: null,\n\n listeners: null,\n\n _idleSpringIndices: null,\n\n // A SpringSystem is iterated by a looper. The looper is responsible\n // for executing each frame as the SpringSystem is resolved to idle.\n // There are three types of Loopers described below AnimationLooper,\n // SimulationLooper, and SteppingSimulationLooper. AnimationLooper is\n // the default as it is the most useful for common UI animations.\n setLooper: function(looper) {\n this.looper = looper;\n looper.springSystem = this;\n },\n\n // Add a new spring to this SpringSystem. This Spring will now be solved for\n // during the physics iteration loop. By default the spring will use the\n // default Origami spring config with 40 tension and 7 friction, but you can\n // also provide your own values here.\n createSpring: function(tension, friction) {\n var springConfig;\n if (tension === undefined || friction === undefined) {\n springConfig = SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG;\n } else {\n springConfig =\n SpringConfig.fromOrigamiTensionAndFriction(tension, friction);\n }\n return this.createSpringWithConfig(springConfig);\n },\n\n // Add a spring with a specified bounciness and speed. To replicate Origami\n // compositions based on PopAnimation patches, use this factory method to\n // create matching springs.\n createSpringWithBouncinessAndSpeed: function(bounciness, speed) {\n var springConfig;\n if (bounciness === undefined || speed === undefined) {\n springConfig = SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG;\n } else {\n springConfig =\n SpringConfig.fromBouncinessAndSpeed(bounciness, speed);\n }\n return this.createSpringWithConfig(springConfig);\n },\n\n // Add a spring with the provided SpringConfig.\n createSpringWithConfig: function(springConfig) {\n var spring = new Spring(this);\n this.registerSpring(spring);\n spring.setSpringConfig(springConfig);\n return spring;\n },\n\n // You can check if a SpringSystem is idle or active by calling\n // getIsIdle. If all of the Springs in the SpringSystem are at rest,\n // i.e. the physics forces have reached equilibrium, then this\n // method will return true.\n getIsIdle: function() {\n return this._isIdle;\n },\n\n // Retrieve a specific Spring from the SpringSystem by id. This\n // can be useful for inspecting the state of a spring before\n // or after an integration loop in the SpringSystem executes.\n getSpringById: function (id) {\n return this._springRegistry[id];\n },\n\n // Get a listing of all the springs registered with this\n // SpringSystem.\n getAllSprings: function() {\n var vals = [];\n for (var id in this._springRegistry) {\n if (this._springRegistry.hasOwnProperty(id)) {\n vals.push(this._springRegistry[id]);\n }\n }\n return vals;\n },\n\n // registerSpring is called automatically as soon as you create\n // a Spring with SpringSystem#createSpring. This method sets the\n // spring up in the registry so that it can be solved in the\n // solver loop.\n registerSpring: function(spring) {\n this._springRegistry[spring.getId()] = spring;\n },\n\n // Deregister a spring with this SpringSystem. The SpringSystem will\n // no longer consider this Spring during its integration loop once\n // this is called. This is normally done automatically for you when\n // you call Spring#destroy.\n deregisterSpring: function(spring) {\n removeFirst(this._activeSprings, spring);\n delete this._springRegistry[spring.getId()];\n },\n\n advance: function(time, deltaTime) {\n while(this._idleSpringIndices.length > 0) this._idleSpringIndices.pop();\n for (var i = 0, len = this._activeSprings.length; i < len; i++) {\n var spring = this._activeSprings[i];\n if (spring.systemShouldAdvance()) {\n spring.advance(time / 1000.0, deltaTime / 1000.0);\n } else {\n this._idleSpringIndices.push(this._activeSprings.indexOf(spring));\n }\n }\n while(this._idleSpringIndices.length > 0) {\n var idx = this._idleSpringIndices.pop();\n idx >= 0 && this._activeSprings.splice(idx, 1);\n }\n },\n\n // This is our main solver loop called to move the simulation\n // forward through time. Before each pass in the solver loop\n // onBeforeIntegrate is called on an any listeners that have\n // registered themeselves with the SpringSystem. This gives you\n // an opportunity to apply any constraints or adjustments to\n // the springs that should be enforced before each iteration\n // loop. Next the advance method is called to move each Spring in\n // the systemShouldAdvance forward to the current time. After the\n // integration step runs in advance, onAfterIntegrate is called\n // on any listeners that have registered themselves with the\n // SpringSystem. This gives you an opportunity to run any post\n // integration constraints or adjustments on the Springs in the\n // SpringSystem.\n loop: function(currentTimeMillis) {\n var listener;\n if (this._lastTimeMillis === -1) {\n this._lastTimeMillis = currentTimeMillis -1;\n }\n var ellapsedMillis = currentTimeMillis - this._lastTimeMillis;\n this._lastTimeMillis = currentTimeMillis;\n\n var i = 0, len = this.listeners.length;\n for (i = 0; i < len; i++) {\n listener = this.listeners[i];\n listener.onBeforeIntegrate && listener.onBeforeIntegrate(this);\n }\n\n this.advance(currentTimeMillis, ellapsedMillis);\n if (this._activeSprings.length === 0) {\n this._isIdle = true;\n this._lastTimeMillis = -1;\n }\n\n for (i = 0; i < len; i++) {\n listener = this.listeners[i];\n listener.onAfterIntegrate && listener.onAfterIntegrate(this);\n }\n\n if (!this._isIdle) {\n this.looper.run();\n }\n },\n\n // activateSpring is used to notify the SpringSystem that a Spring\n // has become displaced. The system responds by starting its solver\n // loop up if it is currently idle.\n activateSpring: function(springId) {\n var spring = this._springRegistry[springId];\n if (this._activeSprings.indexOf(spring) == -1) {\n this._activeSprings.push(spring);\n }\n if (this.getIsIdle()) {\n this._isIdle = false;\n this.looper.run();\n }\n },\n\n // Add a listener to the SpringSystem so that you can receive\n // before/after integration notifications allowing Springs to be\n // constrained or adjusted.\n addListener: function(listener) {\n this.listeners.push(listener);\n },\n\n // Remove a previously added listener on the SpringSystem.\n removeListener: function(listener) {\n removeFirst(this.listeners, listener);\n },\n\n // Remove all previously added listeners on the SpringSystem.\n removeAllListeners: function() {\n this.listeners = [];\n }\n\n });\n\n // Spring\n // ------\n // **Spring** provides a model of a classical spring acting to\n // resolve a body to equilibrium. Springs have configurable\n // tension which is a force multipler on the displacement of the\n // spring from its rest point or `endValue` as defined by [Hooke's\n // law](http://en.wikipedia.org/wiki/Hooke's_law). Springs also have\n // configurable friction, which ensures that they do not oscillate\n // infinitely. When a Spring is displaced by updating it's resting\n // or `currentValue`, the SpringSystems that contain that Spring\n // will automatically start looping to solve for equilibrium. As each\n // timestep passes, `SpringListener` objects attached to the Spring\n // will be notified of the updates providing a way to drive an\n // animation off of the spring's resolution curve.\n var Spring = rebound.Spring = function Spring(springSystem) {\n this._id = 's' + Spring._ID++;\n this._springSystem = springSystem;\n this.listeners = [];\n this._currentState = new PhysicsState();\n this._previousState = new PhysicsState();\n this._tempState = new PhysicsState();\n };\n\n util.extend(Spring, {\n _ID: 0,\n\n MAX_DELTA_TIME_SEC: 0.064,\n\n SOLVER_TIMESTEP_SEC: 0.001\n\n });\n\n util.extend(Spring.prototype, {\n\n _id: 0,\n\n _springConfig: null,\n\n _overshootClampingEnabled: false,\n\n _currentState: null,\n\n _previousState: null,\n\n _tempState: null,\n\n _startValue: 0,\n\n _endValue: 0,\n\n _wasAtRest: true,\n\n _restSpeedThreshold: 0.001,\n\n _displacementFromRestThreshold: 0.001,\n\n listeners: null,\n\n _timeAccumulator: 0,\n\n _springSystem: null,\n\n // Remove a Spring from simulation and clear its listeners.\n destroy: function() {\n this.listeners = [];\n this.frames = [];\n this._springSystem.deregisterSpring(this);\n },\n\n // Get the id of the spring, which can be used to retrieve it from\n // the SpringSystems it participates in later.\n getId: function() {\n return this._id;\n },\n\n // Set the configuration values for this Spring. A SpringConfig\n // contains the tension and friction values used to solve for the\n // equilibrium of the Spring in the physics loop.\n setSpringConfig: function(springConfig) {\n this._springConfig = springConfig;\n return this;\n },\n\n // Retrieve the SpringConfig used by this Spring.\n getSpringConfig: function() {\n return this._springConfig;\n },\n\n // Set the current position of this Spring. Listeners will be updated\n // with this value immediately. If the rest or `endValue` is not\n // updated to match this value, then the spring will be dispalced and\n // the SpringSystem will start to loop to restore the spring to the\n // `endValue`.\n //\n // A common pattern is to move a Spring around without animation by\n // calling.\n //\n // ```\n // spring.setCurrentValue(n).setAtRest();\n // ```\n //\n // This moves the Spring to a new position `n`, sets the endValue\n // to `n`, and removes any velocity from the `Spring`. By doing\n // this you can allow the `SpringListener` to manage the position\n // of UI elements attached to the spring even when moving without\n // animation. For example, when dragging an element you can\n // update the position of an attached view through a spring\n // by calling `spring.setCurrentValue(x)`. When\n // the gesture ends you can update the Springs\n // velocity and endValue\n // `spring.setVelocity(gestureEndVelocity).setEndValue(flingTarget)`\n // to cause it to naturally animate the UI element to the resting\n // position taking into account existing velocity. The codepaths for\n // synchronous movement and spring driven animation can\n // be unified using this technique.\n setCurrentValue: function(currentValue, skipSetAtRest) {\n this._startValue = currentValue;\n this._currentState.position = currentValue;\n if (!skipSetAtRest) {\n this.setAtRest();\n }\n this.notifyPositionUpdated(false, false);\n return this;\n },\n\n // Get the position that the most recent animation started at. This\n // can be useful for determining the number off oscillations that\n // have occurred.\n getStartValue: function() {\n return this._startValue;\n },\n\n // Retrieve the current value of the Spring.\n getCurrentValue: function() {\n return this._currentState.position;\n },\n\n // Get the absolute distance of the Spring from it's resting endValue\n // position.\n getCurrentDisplacementDistance: function() {\n return this.getDisplacementDistanceForState(this._currentState);\n },\n\n getDisplacementDistanceForState: function(state) {\n return Math.abs(this._endValue - state.position);\n },\n\n // Set the endValue or resting position of the spring. If this\n // value is different than the current value, the SpringSystem will\n // be notified and will begin running its solver loop to resolve\n // the Spring to equilibrium. Any listeners that are registered\n // for onSpringEndStateChange will also be notified of this update\n // immediately.\n setEndValue: function(endValue) {\n if (this._endValue == endValue && this.isAtRest()) {\n return this;\n }\n this._startValue = this.getCurrentValue();\n this._endValue = endValue;\n this._springSystem.activateSpring(this.getId());\n for (var i = 0, len = this.listeners.length; i < len; i++) {\n var listener = this.listeners[i];\n var onChange = listener.onSpringEndStateChange;\n onChange && onChange(this);\n }\n return this;\n },\n\n // Retrieve the endValue or resting position of this spring.\n getEndValue: function() {\n return this._endValue;\n },\n\n // Set the current velocity of the Spring. As previously mentioned,\n // this can be useful when you are performing a direct manipulation\n // gesture. When a UI element is released you may call setVelocity\n // on its animation Spring so that the Spring continues with the\n // same velocity as the gesture ended with. The friction, tension,\n // and displacement of the Spring will then govern its motion to\n // return to rest on a natural feeling curve.\n setVelocity: function(velocity) {\n if (velocity === this._currentState.velocity) {\n return this;\n }\n this._currentState.velocity = velocity;\n this._springSystem.activateSpring(this.getId());\n return this;\n },\n\n // Get the current velocity of the Spring.\n getVelocity: function() {\n return this._currentState.velocity;\n },\n\n // Set a threshold value for the movement speed of the Spring below\n // which it will be considered to be not moving or resting.\n setRestSpeedThreshold: function(restSpeedThreshold) {\n this._restSpeedThreshold = restSpeedThreshold;\n return this;\n },\n\n // Retrieve the rest speed threshold for this Spring.\n getRestSpeedThreshold: function() {\n return this._restSpeedThreshold;\n },\n\n // Set a threshold value for displacement below which the Spring\n // will be considered to be not displaced i.e. at its resting\n // `endValue`.\n setRestDisplacementThreshold: function(displacementFromRestThreshold) {\n this._displacementFromRestThreshold = displacementFromRestThreshold;\n },\n\n // Retrieve the rest displacement threshold for this spring.\n getRestDisplacementThreshold: function() {\n return this._displacementFromRestThreshold;\n },\n\n // Enable overshoot clamping. This means that the Spring will stop\n // immediately when it reaches its resting position regardless of\n // any existing momentum it may have. This can be useful for certain\n // types of animations that should not oscillate such as a scale\n // down to 0 or alpha fade.\n setOvershootClampingEnabled: function(enabled) {\n this._overshootClampingEnabled = enabled;\n return this;\n },\n\n // Check if overshoot clamping is enabled for this spring.\n isOvershootClampingEnabled: function() {\n return this._overshootClampingEnabled;\n },\n\n // Check if the Spring has gone past its end point by comparing\n // the direction it was moving in when it started to the current\n // position and end value.\n isOvershooting: function() {\n var start = this._startValue;\n var end = this._endValue;\n return this._springConfig.tension > 0 &&\n ((start < end && this.getCurrentValue() > end) ||\n (start > end && this.getCurrentValue() < end));\n },\n\n // Spring.advance is the main solver method for the Spring. It takes\n // the current time and delta since the last time step and performs\n // an RK4 integration to get the new position and velocity state\n // for the Spring based on the tension, friction, velocity, and\n // displacement of the Spring.\n advance: function(time, realDeltaTime) {\n var isAtRest = this.isAtRest();\n\n if (isAtRest && this._wasAtRest) {\n return;\n }\n\n var adjustedDeltaTime = realDeltaTime;\n if (realDeltaTime > Spring.MAX_DELTA_TIME_SEC) {\n adjustedDeltaTime = Spring.MAX_DELTA_TIME_SEC;\n }\n\n this._timeAccumulator += adjustedDeltaTime;\n\n var tension = this._springConfig.tension,\n friction = this._springConfig.friction,\n\n position = this._currentState.position,\n velocity = this._currentState.velocity,\n tempPosition = this._tempState.position,\n tempVelocity = this._tempState.velocity,\n\n aVelocity, aAcceleration,\n bVelocity, bAcceleration,\n cVelocity, cAcceleration,\n dVelocity, dAcceleration,\n\n dxdt, dvdt;\n\n while(this._timeAccumulator >= Spring.SOLVER_TIMESTEP_SEC) {\n\n this._timeAccumulator -= Spring.SOLVER_TIMESTEP_SEC;\n\n if (this._timeAccumulator < Spring.SOLVER_TIMESTEP_SEC) {\n this._previousState.position = position;\n this._previousState.velocity = velocity;\n }\n\n aVelocity = velocity;\n aAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * velocity;\n\n tempPosition = position + aVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n tempVelocity =\n velocity + aAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n bVelocity = tempVelocity;\n bAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * tempVelocity;\n\n tempPosition = position + bVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n tempVelocity =\n velocity + bAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n cVelocity = tempVelocity;\n cAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * tempVelocity;\n\n tempPosition = position + cVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n tempVelocity =\n velocity + cAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n dVelocity = tempVelocity;\n dAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * tempVelocity;\n\n dxdt =\n 1.0/6.0 * (aVelocity + 2.0 * (bVelocity + cVelocity) + dVelocity);\n dvdt = 1.0/6.0 * (\n aAcceleration + 2.0 * (bAcceleration + cAcceleration) + dAcceleration\n );\n\n position += dxdt * Spring.SOLVER_TIMESTEP_SEC;\n velocity += dvdt * Spring.SOLVER_TIMESTEP_SEC;\n }\n\n this._tempState.position = tempPosition;\n this._tempState.velocity = tempVelocity;\n\n this._currentState.position = position;\n this._currentState.velocity = velocity;\n\n if (this._timeAccumulator > 0) {\n this.interpolate(this._timeAccumulator / Spring.SOLVER_TIMESTEP_SEC);\n }\n\n if (this.isAtRest() ||\n this._overshootClampingEnabled && this.isOvershooting()) {\n\n if (this._springConfig.tension > 0) {\n this._startValue = this._endValue;\n this._currentState.position = this._endValue;\n } else {\n this._endValue = this._currentState.position;\n this._startValue = this._endValue;\n }\n this.setVelocity(0);\n isAtRest = true;\n }\n\n var notifyActivate = false;\n if (this._wasAtRest) {\n this._wasAtRest = false;\n notifyActivate = true;\n }\n\n var notifyAtRest = false;\n if (isAtRest) {\n this._wasAtRest = true;\n notifyAtRest = true;\n }\n\n this.notifyPositionUpdated(notifyActivate, notifyAtRest);\n },\n\n notifyPositionUpdated: function(notifyActivate, notifyAtRest) {\n for (var i = 0, len = this.listeners.length; i < len; i++) {\n var listener = this.listeners[i];\n if (notifyActivate && listener.onSpringActivate) {\n listener.onSpringActivate(this);\n }\n\n if (listener.onSpringUpdate) {\n listener.onSpringUpdate(this);\n }\n\n if (notifyAtRest && listener.onSpringAtRest) {\n listener.onSpringAtRest(this);\n }\n }\n },\n\n\n // Check if the SpringSystem should advance. Springs are advanced\n // a final frame after they reach equilibrium to ensure that the\n // currentValue is exactly the requested endValue regardless of the\n // displacement threshold.\n systemShouldAdvance: function() {\n return !this.isAtRest() || !this.wasAtRest();\n },\n\n wasAtRest: function() {\n return this._wasAtRest;\n },\n\n // Check if the Spring is atRest meaning that it's currentValue and\n // endValue are the same and that it has no velocity. The previously\n // described thresholds for speed and displacement define the bounds\n // of this equivalence check. If the Spring has 0 tension, then it will\n // be considered at rest whenever its absolute velocity drops below the\n // restSpeedThreshold.\n isAtRest: function() {\n return Math.abs(this._currentState.velocity) < this._restSpeedThreshold &&\n (this.getDisplacementDistanceForState(this._currentState) <=\n this._displacementFromRestThreshold ||\n this._springConfig.tension === 0);\n },\n\n // Force the spring to be at rest at its current position. As\n // described in the documentation for setCurrentValue, this method\n // makes it easy to do synchronous non-animated updates to ui\n // elements that are attached to springs via SpringListeners.\n setAtRest: function() {\n this._endValue = this._currentState.position;\n this._tempState.position = this._currentState.position;\n this._currentState.velocity = 0;\n return this;\n },\n\n interpolate: function(alpha) {\n this._currentState.position = this._currentState.position *\n alpha + this._previousState.position * (1 - alpha);\n this._currentState.velocity = this._currentState.velocity *\n alpha + this._previousState.velocity * (1 - alpha);\n },\n\n getListeners: function() {\n return this.listeners;\n },\n\n addListener: function(newListener) {\n this.listeners.push(newListener);\n return this;\n },\n\n removeListener: function(listenerToRemove) {\n removeFirst(this.listeners, listenerToRemove);\n return this;\n },\n\n removeAllListeners: function() {\n this.listeners = [];\n return this;\n },\n\n currentValueIsApproximately: function(value) {\n return Math.abs(this.getCurrentValue() - value) <=\n this.getRestDisplacementThreshold();\n }\n\n });\n\n // PhysicsState\n // ------------\n // **PhysicsState** consists of a position and velocity. A Spring uses\n // this internally to keep track of its current and prior position and\n // velocity values.\n var PhysicsState = function PhysicsState() {};\n\n util.extend(PhysicsState.prototype, {\n position: 0,\n velocity: 0\n });\n\n // SpringConfig\n // ------------\n // **SpringConfig** maintains a set of tension and friction constants\n // for a Spring. You can use fromOrigamiTensionAndFriction to convert\n // values from the [Origami](http://facebook.github.io/origami/)\n // design tool directly to Rebound spring constants.\n var SpringConfig = rebound.SpringConfig =\n function SpringConfig(tension, friction) {\n this.tension = tension;\n this.friction = friction;\n };\n\n // Loopers\n // -------\n // **AnimationLooper** plays each frame of the SpringSystem on animation\n // timing loop. This is the default type of looper for a new spring system\n // as it is the most common when developing UI.\n var AnimationLooper = rebound.AnimationLooper = function AnimationLooper() {\n this.springSystem = null;\n var _this = this;\n var _run = function() {\n _this.springSystem.loop(Date.now());\n };\n\n this.run = function() {\n util.onFrame(_run);\n };\n };\n\n // **SimulationLooper** resolves the SpringSystem to a resting state in a\n // tight and blocking loop. This is useful for synchronously generating\n // pre-recorded animations that can then be played on a timing loop later.\n // Sometimes this lead to better performance to pre-record a single spring\n // curve and use it to drive many animations; however, it can make dynamic\n // response to user input a bit trickier to implement.\n rebound.SimulationLooper = function SimulationLooper(timestep) {\n this.springSystem = null;\n var time = 0;\n var running = false;\n timestep=timestep || 16.667;\n\n this.run = function() {\n if (running) {\n return;\n }\n running = true;\n while(!this.springSystem.getIsIdle()) {\n this.springSystem.loop(time+=timestep);\n }\n running = false;\n };\n };\n\n // **SteppingSimulationLooper** resolves the SpringSystem one step at a\n // time controlled by an outside loop. This is useful for testing and\n // verifying the behavior of a SpringSystem or if you want to control your own\n // timing loop for some reason e.g. slowing down or speeding up the\n // simulation.\n rebound.SteppingSimulationLooper = function(timestep) {\n this.springSystem = null;\n var time = 0;\n\n // this.run is NOOP'd here to allow control from the outside using\n // this.step.\n this.run = function(){};\n\n // Perform one step toward resolving the SpringSystem.\n this.step = function(timestep) {\n this.springSystem.loop(time+=timestep);\n };\n };\n\n // Math for converting from\n // [Origami](http://facebook.github.io/origami/) to\n // [Rebound](http://facebook.github.io/rebound).\n // You mostly don't need to worry about this, just use\n // SpringConfig.fromOrigamiTensionAndFriction(v, v);\n var OrigamiValueConverter = rebound.OrigamiValueConverter = {\n tensionFromOrigamiValue: function(oValue) {\n return (oValue - 30.0) * 3.62 + 194.0;\n },\n\n origamiValueFromTension: function(tension) {\n return (tension - 194.0) / 3.62 + 30.0;\n },\n\n frictionFromOrigamiValue: function(oValue) {\n return (oValue - 8.0) * 3.0 + 25.0;\n },\n\n origamiFromFriction: function(friction) {\n return (friction - 25.0) / 3.0 + 8.0;\n }\n };\n\n // BouncyConversion provides math for converting from Origami PopAnimation\n // config values to regular Origami tension and friction values. If you are\n // trying to replicate prototypes made with PopAnimation patches in Origami,\n // then you should create your springs with\n // SpringSystem.createSpringWithBouncinessAndSpeed, which uses this Math\n // internally to create a spring to match the provided PopAnimation\n // configuration from Origami.\n var BouncyConversion = rebound.BouncyConversion = function(bounciness, speed){\n this.bounciness = bounciness;\n this.speed = speed;\n var b = this.normalize(bounciness / 1.7, 0, 20.0);\n b = this.projectNormal(b, 0.0, 0.8);\n var s = this.normalize(speed / 1.7, 0, 20.0);\n this.bouncyTension = this.projectNormal(s, 0.5, 200)\n this.bouncyFriction = this.quadraticOutInterpolation(\n b,\n this.b3Nobounce(this.bouncyTension),\n 0.01);\n }\n\n util.extend(BouncyConversion.prototype, {\n\n normalize: function(value, startValue, endValue) {\n return (value - startValue) / (endValue - startValue);\n },\n\n projectNormal: function(n, start, end) {\n return start + (n * (end - start));\n },\n\n linearInterpolation: function(t, start, end) {\n return t * end + (1.0 - t) * start;\n },\n\n quadraticOutInterpolation: function(t, start, end) {\n return this.linearInterpolation(2*t - t*t, start, end);\n },\n\n b3Friction1: function(x) {\n return (0.0007 * Math.pow(x, 3)) -\n (0.031 * Math.pow(x, 2)) + 0.64 * x + 1.28;\n },\n\n b3Friction2: function(x) {\n return (0.000044 * Math.pow(x, 3)) -\n (0.006 * Math.pow(x, 2)) + 0.36 * x + 2.;\n },\n\n b3Friction3: function(x) {\n return (0.00000045 * Math.pow(x, 3)) -\n (0.000332 * Math.pow(x, 2)) + 0.1078 * x + 5.84;\n },\n\n b3Nobounce: function(tension) {\n var friction = 0;\n if (tension <= 18) {\n friction = this.b3Friction1(tension);\n } else if (tension > 18 && tension <= 44) {\n friction = this.b3Friction2(tension);\n } else {\n friction = this.b3Friction3(tension);\n }\n return friction;\n }\n });\n\n util.extend(SpringConfig, {\n // Convert an origami Spring tension and friction to Rebound spring\n // constants. If you are prototyping a design with Origami, this\n // makes it easy to make your springs behave exactly the same in\n // Rebound.\n fromOrigamiTensionAndFriction: function(tension, friction) {\n return new SpringConfig(\n OrigamiValueConverter.tensionFromOrigamiValue(tension),\n OrigamiValueConverter.frictionFromOrigamiValue(friction));\n },\n\n // Convert an origami PopAnimation Spring bounciness and speed to Rebound\n // spring constants. If you are using PopAnimation patches in Origami, this\n // utility will provide springs that match your prototype.\n fromBouncinessAndSpeed: function(bounciness, speed) {\n var bouncyConversion = new rebound.BouncyConversion(bounciness, speed);\n return this.fromOrigamiTensionAndFriction(\n bouncyConversion.bouncyTension,\n bouncyConversion.bouncyFriction);\n },\n\n // Create a SpringConfig with no tension or a coasting spring with some\n // amount of Friction so that it does not coast infininitely.\n coastingConfigWithOrigamiFriction: function(friction) {\n return new SpringConfig(\n 0,\n OrigamiValueConverter.frictionFromOrigamiValue(friction)\n );\n }\n });\n\n SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG =\n SpringConfig.fromOrigamiTensionAndFriction(40, 7);\n\n util.extend(SpringConfig.prototype, {friction: 0, tension: 0});\n\n // Here are a couple of function to convert colors between hex codes and RGB\n // component values. These are handy when performing color\n // tweening animations.\n var colorCache = {};\n util.hexToRGB = function(color) {\n if (colorCache[color]) {\n return colorCache[color];\n }\n color = color.replace('#', '');\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n var parts = color.match(/.{2}/g);\n\n var ret = {\n r: parseInt(parts[0], 16),\n g: parseInt(parts[1], 16),\n b: parseInt(parts[2], 16)\n };\n\n colorCache[color] = ret;\n return ret;\n };\n\n util.rgbToHex = function(r, g, b) {\n r = r.toString(16);\n g = g.toString(16);\n b = b.toString(16);\n r = r.length < 2 ? '0' + r : r;\n g = g.length < 2 ? '0' + g : g;\n b = b.length < 2 ? '0' + b : b;\n return '#' + r + g + b;\n };\n\n var MathUtil = rebound.MathUtil = {\n // This helper function does a linear interpolation of a value from\n // one range to another. This can be very useful for converting the\n // motion of a Spring to a range of UI property values. For example a\n // spring moving from position 0 to 1 could be interpolated to move a\n // view from pixel 300 to 350 and scale it from 0.5 to 1. The current\n // position of the `Spring` just needs to be run through this method\n // taking its input range in the _from_ parameters with the property\n // animation range in the _to_ parameters.\n mapValueInRange: function(value, fromLow, fromHigh, toLow, toHigh) {\n var fromRangeSize = fromHigh - fromLow;\n var toRangeSize = toHigh - toLow;\n var valueScale = (value - fromLow) / fromRangeSize;\n return toLow + (valueScale * toRangeSize);\n },\n\n // Interpolate two hex colors in a 0 - 1 range or optionally provide a\n // custom range with fromLow,fromHight. The output will be in hex by default\n // unless asRGB is true in which case it will be returned as an rgb string.\n interpolateColor:\n function(val, startColor, endColor, fromLow, fromHigh, asRGB) {\n fromLow = fromLow === undefined ? 0 : fromLow;\n fromHigh = fromHigh === undefined ? 1 : fromHigh;\n startColor = util.hexToRGB(startColor);\n endColor = util.hexToRGB(endColor);\n var r = Math.floor(\n util.mapValueInRange(val, fromLow, fromHigh, startColor.r, endColor.r)\n );\n var g = Math.floor(\n util.mapValueInRange(val, fromLow, fromHigh, startColor.g, endColor.g)\n );\n var b = Math.floor(\n util.mapValueInRange(val, fromLow, fromHigh, startColor.b, endColor.b)\n );\n if (asRGB) {\n return 'rgb(' + r + ',' + g + ',' + b + ')';\n } else {\n return util.rgbToHex(r, g, b);\n }\n },\n\n degreesToRadians: function(deg) {\n return (deg * Math.PI) / 180;\n },\n\n radiansToDegrees: function(rad) {\n return (rad * 180) / Math.PI;\n }\n\n }\n\n util.extend(util, MathUtil);\n\n\n // Utilities\n // ---------\n // Here are a few useful JavaScript utilities.\n\n // Lop off the first occurence of the reference in the Array.\n function removeFirst(array, item) {\n var idx = array.indexOf(item);\n idx != -1 && array.splice(idx, 1);\n }\n\n var _onFrame;\n if (typeof window !== 'undefined') {\n _onFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n window.oRequestAnimationFrame;\n }\n if (!_onFrame && typeof process !== 'undefined' && process.title === 'node') {\n _onFrame = setImmediate;\n }\n\n // Cross browser/node timer functions.\n util.onFrame = function onFrame(func) {\n return _onFrame(func);\n };\n\n // Export the public api using exports for common js or the window for\n // normal browser inclusion.\n if (typeof exports != 'undefined') {\n util.extend(exports, rebound);\n } else if (typeof window != 'undefined') {\n window.rebound = rebound;\n }\n})();\n\n\n// Legal Stuff\n// -----------\n/**\n * Copyright (c) 2013, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/rebound/rebound.js"},"mtime":1426054614000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Navigation/NavigatorIOS.ios.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\nvar Image=require('Image');\nvar NavigationContext=require('NavigationContext');\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar RCTNavigatorManager=require('NativeModules').NavigatorManager;\nvar StyleSheet=require('StyleSheet');\nvar StaticContainer=require('StaticContainer.react');\nvar View=require('View');\n\nvar createReactNativeComponentClass=\nrequire('createReactNativeComponentClass');\nvar invariant=require('invariant');\nvar logError=require('logError');\nvar merge=require('merge');\n\nvar TRANSITIONER_REF='transitionerRef';\n\nvar PropTypes=React.PropTypes;\n\nvar __uid=0;\nfunction getuid(){\nreturn __uid++;}\n\n\nvar RCTNavigator=createReactNativeComponentClass({\nvalidAttributes:merge(ReactNativeViewAttributes.UIView,{\nrequestedTopOfStack:true}),\n\nuiViewClassName:'RCTNavigator'});\n\n\nvar RCTNavigatorItem=createReactNativeComponentClass({\nvalidAttributes:{\n\n\ntitle:true,\nbarTintColor:true,\nleftButtonIcon:true,\nleftButtonTitle:true,\nonNavLeftButtonTap:true,\nrightButtonIcon:true,\nrightButtonTitle:true,\nonNavRightButtonTap:true,\nbackButtonIcon:true,\nbackButtonTitle:true,\ntintColor:true,\ntranslucent:true,\nnavigationBarHidden:true,\ntitleTextColor:true,\nstyle:true},\n\nuiViewClassName:'RCTNavItem'});\n\n\nvar NavigatorTransitionerIOS=React.createClass({displayName:'NavigatorTransitionerIOS',\nrequestSchedulingNavigation:function(cb){\nRCTNavigatorManager.requestSchedulingJavaScriptNavigation(\nReact.findNodeHandle(this),\nlogError,\ncb);},\n\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTNavigator,this.props));}});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NavigatorIOS=React.createClass({displayName:'NavigatorIOS',\n\npropTypes:{\n\n\n\n\n\n\ninitialRoute:PropTypes.shape({\n\n\n\ncomponent:PropTypes.func.isRequired,\n\n\n\n\ntitle:PropTypes.string.isRequired,\n\n\n\n\n\npassProps:PropTypes.object,\n\n\n\n\n\n\nbackButtonIcon:Image.propTypes.source,\n\n\n\n\n\n\nbackButtonTitle:PropTypes.string,\n\n\n\n\nleftButtonIcon:Image.propTypes.source,\n\n\n\n\nleftButtonTitle:PropTypes.string,\n\n\n\n\nonLeftButtonPress:PropTypes.func,\n\n\n\n\nrightButtonIcon:Image.propTypes.source,\n\n\n\n\nrightButtonTitle:PropTypes.string,\n\n\n\n\nonRightButtonPress:PropTypes.func,\n\n\n\n\nwrapperStyle:View.propTypes.style}).\n\nisRequired,\n\n\n\n\nnavigationBarHidden:PropTypes.bool,\n\n\n\n\n\nitemWrapperStyle:View.propTypes.style,\n\n\n\n\ntintColor:PropTypes.string,\n\n\n\n\nbarTintColor:PropTypes.string,\n\n\n\n\ntitleTextColor:PropTypes.string,\n\n\n\n\ntranslucent:PropTypes.bool},\n\n\n\nnavigator:undefined,\nnavigationContext:new NavigationContext(),\n\ncomponentWillMount:function(){\n\n\nthis.navigator = {\npush:this.push,\npop:this.pop,\npopN:this.popN,\nreplace:this.replace,\nreplacePrevious:this.replacePrevious,\nreplacePreviousAndPop:this.replacePreviousAndPop,\nresetTo:this.resetTo,\npopToRoute:this.popToRoute,\npopToTop:this.popToTop,\nnavigationContext:this.navigationContext};\n\nthis._emitWillFocus(this.state.routeStack[this.state.observedTopOfStack]);},\n\n\ncomponentDidMount:function(){\nthis._emitDidFocus(this.state.routeStack[this.state.observedTopOfStack]);},\n\n\ncomponentWillUnmount:function(){\nthis.navigationContext.dispose();\nthis.navigationContext = new NavigationContext();},\n\n\ngetInitialState:function(){\nreturn {\nidStack:[getuid()],\nrouteStack:[this.props.initialRoute],\n\nrequestedTopOfStack:0,\n\n\n\n\n\n\nobservedTopOfStack:0,\nprogress:1,\nfromIndex:0,\ntoIndex:0,\n\n\nmakingNavigatorRequest:false,\n\n\n\nupdatingAllIndicesAtOrBeyond:0};},\n\n\n\n_toFocusOnNavigationComplete:undefined,\n\n_handleFocusRequest:function(item){\nif(this.state.makingNavigatorRequest){\nthis._toFocusOnNavigationComplete = item;}else \n{\nthis._getFocusEmitter().emit('focus',item);}},\n\n\n\n_focusEmitter:undefined,\n\n_getFocusEmitter:function(){\n\nvar focusEmitter=this._focusEmitter;\nif(!focusEmitter){\nfocusEmitter = new EventEmitter();\nthis._focusEmitter = focusEmitter;}\n\nreturn focusEmitter;},\n\n\ngetChildContext:function()\n\n\n{\nreturn {\nonFocusRequested:this._handleFocusRequest,\nfocusEmitter:this._getFocusEmitter()};},\n\n\n\nchildContextTypes:{\nonFocusRequested:React.PropTypes.func,\nfocusEmitter:React.PropTypes.instanceOf(EventEmitter)},\n\n\n_tryLockNavigator:function(cb){\nthis.refs[TRANSITIONER_REF].requestSchedulingNavigation(\nfunction(acquiredLock){return acquiredLock && cb();});},\n\n\n\n_handleNavigatorStackChanged:function(e){\nvar newObservedTopOfStack=e.nativeEvent.stackLength - 1;\nthis._emitDidFocus(this.state.routeStack[newObservedTopOfStack]);\n\ninvariant(\nnewObservedTopOfStack <= this.state.requestedTopOfStack,\n'No navigator item should be pushed without JS knowing about it %s %s',newObservedTopOfStack,this.state.requestedTopOfStack);\n\nvar wasWaitingForConfirmation=\nthis.state.requestedTopOfStack !== this.state.observedTopOfStack;\nif(wasWaitingForConfirmation){\ninvariant(\nnewObservedTopOfStack === this.state.requestedTopOfStack,\n'If waiting for observedTopOfStack to reach requestedTopOfStack, ' + \n'the only valid observedTopOfStack should be requestedTopOfStack.');}\n\n\n\n\n\n\n\n\n\n\n\nvar nextState={\nobservedTopOfStack:newObservedTopOfStack,\nmakingNavigatorRequest:false,\nupdatingAllIndicesAtOrBeyond:null,\nprogress:1,\ntoIndex:newObservedTopOfStack,\nfromIndex:newObservedTopOfStack};\n\nthis.setState(nextState,this._eliminateUnneededChildren);},\n\n\n_eliminateUnneededChildren:function(){\n\n\n\nvar updatingAllIndicesAtOrBeyond=\nthis.state.routeStack.length > this.state.observedTopOfStack + 1?\nthis.state.observedTopOfStack + 1:\nnull;\nthis.setState({\nidStack:this.state.idStack.slice(0,this.state.observedTopOfStack + 1),\nrouteStack:this.state.routeStack.slice(0,this.state.observedTopOfStack + 1),\n\nrequestedTopOfStack:this.state.observedTopOfStack,\nmakingNavigatorRequest:true,\nupdatingAllIndicesAtOrBeyond:updatingAllIndicesAtOrBeyond});},\n\n\n\n_emitDidFocus:function(route){\nthis.navigationContext.emit('didfocus',{route:route});},\n\n\n_emitWillFocus:function(route){\nthis.navigationContext.emit('willfocus',{route:route});},\n\n\npush:function(route){var _this=this;\ninvariant(!!route,'Must supply route to push');\n\nif(this.state.requestedTopOfStack === this.state.observedTopOfStack){\nthis._tryLockNavigator(function(){\n_this._emitWillFocus(route);\n\nvar nextStack=_this.state.routeStack.concat([route]);\nvar nextIDStack=_this.state.idStack.concat([getuid()]);\n_this.setState({\n\n\nidStack:nextIDStack,\nrouteStack:nextStack,\nrequestedTopOfStack:nextStack.length - 1,\nmakingNavigatorRequest:true,\nupdatingAllIndicesAtOrBeyond:nextStack.length - 1});});}},\n\n\n\n\n\npopN:function(n){var _this2=this;\nif(n === 0){\nreturn;}\n\n\nif(this.state.requestedTopOfStack === this.state.observedTopOfStack){\nif(this.state.requestedTopOfStack > 0){\nthis._tryLockNavigator(function(){\nvar newRequestedTopOfStack=_this2.state.requestedTopOfStack - n;\ninvariant(newRequestedTopOfStack >= 0,'Cannot pop below 0');\n_this2._emitWillFocus(_this2.state.routeStack[newRequestedTopOfStack]);\n_this2.setState({\nrequestedTopOfStack:newRequestedTopOfStack,\nmakingNavigatorRequest:true,\n\n\nupdatingAllIndicesAtOrBeyond:null});});}}},\n\n\n\n\n\n\npop:function(){\nthis.popN(1);},\n\n\n\n\n\n\n\n\nreplaceAtIndex:function(route,index){\ninvariant(!!route,'Must supply route to replace');\nif(index < 0){\nindex += this.state.routeStack.length;}\n\n\nif(this.state.routeStack.length <= index){\nreturn;}\n\n\n\n\nvar nextIDStack=this.state.idStack.slice();\nvar nextRouteStack=this.state.routeStack.slice();\nnextIDStack[index] = getuid();\nnextRouteStack[index] = route;\n\nthis.setState({\nidStack:nextIDStack,\nrouteStack:nextRouteStack,\nmakingNavigatorRequest:false,\nupdatingAllIndicesAtOrBeyond:index});\n\n\nthis._emitWillFocus(route);\nthis._emitDidFocus(route);},\n\n\n\n\n\nreplace:function(route){\nthis.replaceAtIndex(route,-1);},\n\n\n\n\n\nreplacePrevious:function(route){\nthis.replaceAtIndex(route,-2);},\n\n\npopToTop:function(){\nthis.popToRoute(this.state.routeStack[0]);},\n\n\npopToRoute:function(route){\nvar indexOfRoute=this.state.routeStack.indexOf(route);\ninvariant(\nindexOfRoute !== -1,\n'Calling pop to route for a route that doesn\\'t exist!');\n\nvar numToPop=this.state.routeStack.length - indexOfRoute - 1;\nthis.popN(numToPop);},\n\n\nreplacePreviousAndPop:function(route){var _this3=this;\n\nif(this.state.requestedTopOfStack !== this.state.observedTopOfStack){\nreturn;}\n\nif(this.state.routeStack.length < 2){\nreturn;}\n\nthis._tryLockNavigator(function(){\n_this3.replacePrevious(route);\n_this3.setState({\nrequestedTopOfStack:_this3.state.requestedTopOfStack - 1,\nmakingNavigatorRequest:true});});},\n\n\n\n\nresetTo:function(route){\ninvariant(!!route,'Must supply route to push');\n\nif(this.state.requestedTopOfStack !== this.state.observedTopOfStack){\nreturn;}\n\nthis.replaceAtIndex(route,0);\nthis.popToRoute(route);},\n\n\nhandleNavigationComplete:function(e){\nif(this._toFocusOnNavigationComplete){\nthis._getFocusEmitter().emit('focus',this._toFocusOnNavigationComplete);\nthis._toFocusOnNavigationComplete = null;}\n\nthis._handleNavigatorStackChanged(e);},\n\n\n_routeToStackItem:function(route,i){\nvar Component=route.component;\nvar shouldUpdateChild=this.state.updatingAllIndicesAtOrBeyond !== null && \nthis.state.updatingAllIndicesAtOrBeyond >= i;\n\nreturn (\nReact.createElement(StaticContainer,{key:'nav' + i,shouldUpdate:shouldUpdateChild},\nReact.createElement(RCTNavigatorItem,{\ntitle:route.title,\nstyle:[\nstyles.stackItem,\nthis.props.itemWrapperStyle,\nroute.wrapperStyle],\n\nbackButtonIcon:this._imageNameFromSource(route.backButtonIcon),\nbackButtonTitle:route.backButtonTitle,\nleftButtonIcon:this._imageNameFromSource(route.leftButtonIcon),\nleftButtonTitle:route.leftButtonTitle,\nonNavLeftButtonTap:route.onLeftButtonPress,\nrightButtonIcon:this._imageNameFromSource(route.rightButtonIcon),\nrightButtonTitle:route.rightButtonTitle,\nonNavRightButtonTap:route.onRightButtonPress,\nnavigationBarHidden:this.props.navigationBarHidden,\ntintColor:this.props.tintColor,\nbarTintColor:this.props.barTintColor,\ntranslucent:this.props.translucent !== false,\ntitleTextColor:this.props.titleTextColor},\nReact.createElement(Component,_extends({\nnavigator:this.navigator,\nroute:route},\nroute.passProps)))));},\n\n\n\n\n\n\n_imageNameFromSource:function(source){\nreturn source?source.uri:undefined;},\n\n\nrenderNavigationStackItems:function(){\nvar shouldRecurseToNavigator=\nthis.state.makingNavigatorRequest || \nthis.state.updatingAllIndicesAtOrBeyond !== null;\n\n\nvar items=shouldRecurseToNavigator?\nthis.state.routeStack.map(this._routeToStackItem):null;\nreturn (\nReact.createElement(StaticContainer,{shouldUpdate:shouldRecurseToNavigator},\nReact.createElement(NavigatorTransitionerIOS,{\nref:TRANSITIONER_REF,\nstyle:styles.transitioner,\nvertical:this.props.vertical,\nrequestedTopOfStack:this.state.requestedTopOfStack,\nonNavigationComplete:this.handleNavigationComplete},\nitems)));},\n\n\n\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{style:this.props.style},\nthis.renderNavigationStackItems()));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nstackItem:{\nbackgroundColor:'white',\noverflow:'hidden',\nposition:'absolute',\ntop:0,\nleft:0,\nright:0,\nbottom:0},\n\ntransitioner:{\nflex:1}});\n\n\n\nmodule.exports = NavigatorIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule NavigatorIOS\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\nvar Image = require('Image');\nvar NavigationContext = require('NavigationContext');\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar RCTNavigatorManager = require('NativeModules').NavigatorManager;\nvar StyleSheet = require('StyleSheet');\nvar StaticContainer = require('StaticContainer.react');\nvar View = require('View');\n\nvar createReactNativeComponentClass =\n require('createReactNativeComponentClass');\nvar invariant = require('invariant');\nvar logError = require('logError');\nvar merge = require('merge');\n\nvar TRANSITIONER_REF = 'transitionerRef';\n\nvar PropTypes = React.PropTypes;\n\nvar __uid = 0;\nfunction getuid() {\n return __uid++;\n}\n\nvar RCTNavigator = createReactNativeComponentClass({\n validAttributes: merge(ReactNativeViewAttributes.UIView, {\n requestedTopOfStack: true\n }),\n uiViewClassName: 'RCTNavigator',\n});\n\nvar RCTNavigatorItem = createReactNativeComponentClass({\n validAttributes: {\n // TODO: Remove or fix the attributes that are not fully functional.\n // NavigatorIOS does not use them all, because some are problematic\n title: true,\n barTintColor: true,\n leftButtonIcon: true,\n leftButtonTitle: true,\n onNavLeftButtonTap: true,\n rightButtonIcon: true,\n rightButtonTitle: true,\n onNavRightButtonTap: true,\n backButtonIcon: true,\n backButtonTitle: true,\n tintColor: true,\n translucent: true,\n navigationBarHidden: true,\n titleTextColor: true,\n style: true,\n },\n uiViewClassName: 'RCTNavItem',\n});\n\nvar NavigatorTransitionerIOS = React.createClass({\n requestSchedulingNavigation: function(cb) {\n RCTNavigatorManager.requestSchedulingJavaScriptNavigation(\n React.findNodeHandle(this),\n logError,\n cb\n );\n },\n\n render: function() {\n return (\n <RCTNavigator {...this.props}/>\n );\n },\n});\n\ntype Route = {\n component: Function;\n title: string;\n passProps?: Object;\n backButtonTitle?: string;\n backButtonIcon?: Object;\n leftButtonTitle?: string;\n leftButtonIcon?: Object;\n onLeftButtonPress?: Function;\n rightButtonTitle?: string;\n rightButtonIcon?: Object;\n onRightButtonPress?: Function;\n wrapperStyle?: any;\n};\n\ntype State = {\n idStack: Array<number>;\n routeStack: Array<Route>;\n requestedTopOfStack: number;\n observedTopOfStack: number;\n progress: number;\n fromIndex: number;\n toIndex: number;\n makingNavigatorRequest: boolean;\n updatingAllIndicesAtOrBeyond: number;\n}\n\ntype Event = Object;\n\n/**\n * Think of `<NavigatorIOS>` as simply a component that renders an\n * `RCTNavigator`, and moves the `RCTNavigator`'s `requestedTopOfStack` pointer\n * forward and backward. The `RCTNavigator` interprets changes in\n * `requestedTopOfStack` to be pushes and pops of children that are rendered.\n * `<NavigatorIOS>` always ensures that whenever the `requestedTopOfStack`\n * pointer is moved, that we've also rendered enough children so that the\n * `RCTNavigator` can carry out the push/pop with those children.\n * `<NavigatorIOS>` also removes children that will no longer be needed\n * (after the pop of a child has been fully completed/animated out).\n */\n\n/**\n * NavigatorIOS wraps UIKit navigation and allows you to add back-swipe\n * functionality across your app.\n *\n * #### Routes\n * A route is an object used to describe each page in the navigator. The first\n * route is provided to NavigatorIOS as `initialRoute`:\n *\n * ```\n * render: function() {\n * return (\n * <NavigatorIOS\n * initialRoute={{\n * component: MyView,\n * title: 'My View Title',\n * passProps: { myProp: 'foo' },\n * }}\n * />\n * );\n * },\n * ```\n *\n * Now MyView will be rendered by the navigator. It will recieve the route\n * object in the `route` prop, a navigator, and all of the props specified in\n * `passProps`.\n *\n * See the initialRoute propType for a complete definition of a route.\n *\n * #### Navigator\n *\n * A `navigator` is an object of navigation functions that a view can call. It\n * is passed as a prop to any component rendered by NavigatorIOS.\n *\n * ```\n * var MyView = React.createClass({\n * _handleBackButtonPress: function() {\n * this.props.navigator.pop();\n * },\n * _handleNextButtonPress: function() {\n * this.props.navigator.push(nextRoute);\n * },\n * ...\n * });\n * ```\n *\n * A navigation object contains the following functions:\n *\n * - `push(route)` - Navigate forward to a new route\n * - `pop()` - Go back one page\n * - `popN(n)` - Go back N pages at once. When N=1, behavior matches `pop()`\n * - `replace(route)` - Replace the route for the current page and immediately\n * load the view for the new route\n * - `replacePrevious(route)` - Replace the route/view for the previous page\n * - `replacePreviousAndPop(route)` - Replaces the previous route/view and\n * transitions back to it\n * - `resetTo(route)` - Replaces the top item and popToTop\n * - `popToRoute(route)` - Go back to the item for a particular route object\n * - `popToTop()` - Go back to the top item\n *\n * Navigator functions are also available on the NavigatorIOS component:\n *\n * ```\n * var MyView = React.createClass({\n * _handleNavigationRequest: function() {\n * this.refs.nav.push(otherRoute);\n * },\n * render: () => (\n * <NavigatorIOS\n * ref=\"nav\"\n * initialRoute={...}\n * />\n * ),\n * });\n * ```\n *\n */\nvar NavigatorIOS = React.createClass({\n\n propTypes: {\n\n /**\n * NavigatorIOS uses \"route\" objects to identify child views, their props,\n * and navigation bar configuration. \"push\" and all the other navigation\n * operations expect routes to be like this:\n */\n initialRoute: PropTypes.shape({\n /**\n * The React Class to render for this route\n */\n component: PropTypes.func.isRequired,\n\n /**\n * The title displayed in the nav bar and back button for this route\n */\n title: PropTypes.string.isRequired,\n\n /**\n * Specify additional props passed to the component. NavigatorIOS will\n * automatically provide \"route\" and \"navigator\" components\n */\n passProps: PropTypes.object,\n\n /**\n * If set, the left header button image will appear with this source. Note\n * that this doesn't apply for the header of the current view, but the\n * ones of the views that are pushed afterward.\n */\n backButtonIcon: Image.propTypes.source,\n\n /**\n * If set, the left header button will appear with this name. Note that\n * this doesn't apply for the header of the current view, but the ones\n * of the views that are pushed afterward.\n */\n backButtonTitle: PropTypes.string,\n\n /**\n * If set, the left header button image will appear with this source\n */\n leftButtonIcon: Image.propTypes.source,\n\n /**\n * If set, the left header button will appear with this name\n */\n leftButtonTitle: PropTypes.string,\n\n /**\n * Called when the left header button is pressed\n */\n onLeftButtonPress: PropTypes.func,\n\n /**\n * If set, the right header button image will appear with this source\n */\n rightButtonIcon: Image.propTypes.source,\n\n /**\n * If set, the right header button will appear with this name\n */\n rightButtonTitle: PropTypes.string,\n\n /**\n * Called when the right header button is pressed\n */\n onRightButtonPress: PropTypes.func,\n\n /**\n * Styles for the navigation item containing the component\n */\n wrapperStyle: View.propTypes.style,\n\n }).isRequired,\n\n /**\n * A Boolean value that indicates whether the navigation bar is hidden\n */\n navigationBarHidden: PropTypes.bool,\n\n /**\n * The default wrapper style for components in the navigator.\n * A common use case is to set the backgroundColor for every page\n */\n itemWrapperStyle: View.propTypes.style,\n\n /**\n * The color used for buttons in the navigation bar\n */\n tintColor: PropTypes.string,\n\n /**\n * The background color of the navigation bar\n */\n barTintColor: PropTypes.string,\n\n /**\n * The text color of the navigation bar title\n */\n titleTextColor: PropTypes.string,\n\n /**\n * A Boolean value that indicates whether the navigation bar is translucent\n */\n translucent: PropTypes.bool,\n\n },\n\n navigator: (undefined: ?Object),\n navigationContext: new NavigationContext(),\n\n componentWillMount: function() {\n // Precompute a pack of callbacks that's frequently generated and passed to\n // instances.\n this.navigator = {\n push: this.push,\n pop: this.pop,\n popN: this.popN,\n replace: this.replace,\n replacePrevious: this.replacePrevious,\n replacePreviousAndPop: this.replacePreviousAndPop,\n resetTo: this.resetTo,\n popToRoute: this.popToRoute,\n popToTop: this.popToTop,\n navigationContext: this.navigationContext,\n };\n this._emitWillFocus(this.state.routeStack[this.state.observedTopOfStack]);\n },\n\n componentDidMount: function() {\n this._emitDidFocus(this.state.routeStack[this.state.observedTopOfStack]);\n },\n\n componentWillUnmount: function() {\n this.navigationContext.dispose();\n this.navigationContext = new NavigationContext();\n },\n\n getInitialState: function(): State {\n return {\n idStack: [getuid()],\n routeStack: [this.props.initialRoute],\n // The navigation index that we wish to push/pop to.\n requestedTopOfStack: 0,\n // The last index that native has sent confirmation of completed push/pop\n // for. At this point, we can discard any views that are beyond the\n // `requestedTopOfStack`. A value of `null` means we have not received\n // any confirmation, ever. We may receive an `observedTopOfStack` without\n // ever requesting it - native can instigate pops of its own with the\n // backswipe gesture.\n observedTopOfStack: 0,\n progress: 1,\n fromIndex: 0,\n toIndex: 0,\n // Whether or not we are making a navigator request to push/pop. (Used\n // for performance optimization).\n makingNavigatorRequest: false,\n // Whether or not we are updating children of navigator and if so (not\n // `null`) which index marks the beginning of all updates. Used for\n // performance optimization.\n updatingAllIndicesAtOrBeyond: 0,\n };\n },\n\n _toFocusOnNavigationComplete: (undefined: any),\n\n _handleFocusRequest: function(item: any) {\n if (this.state.makingNavigatorRequest) {\n this._toFocusOnNavigationComplete = item;\n } else {\n this._getFocusEmitter().emit('focus', item);\n }\n },\n\n _focusEmitter: (undefined: ?EventEmitter),\n\n _getFocusEmitter: function(): EventEmitter {\n // Flow not yet tracking assignments to instance fields.\n var focusEmitter = this._focusEmitter;\n if (!focusEmitter) {\n focusEmitter = new EventEmitter();\n this._focusEmitter = focusEmitter;\n }\n return focusEmitter;\n },\n\n getChildContext: function(): {\n onFocusRequested: Function;\n focusEmitter: EventEmitter;\n } {\n return {\n onFocusRequested: this._handleFocusRequest,\n focusEmitter: this._getFocusEmitter(),\n };\n },\n\n childContextTypes: {\n onFocusRequested: React.PropTypes.func,\n focusEmitter: React.PropTypes.instanceOf(EventEmitter),\n },\n\n _tryLockNavigator: function(cb: () => void) {\n this.refs[TRANSITIONER_REF].requestSchedulingNavigation(\n (acquiredLock) => acquiredLock && cb()\n );\n },\n\n _handleNavigatorStackChanged: function(e: Event) {\n var newObservedTopOfStack = e.nativeEvent.stackLength - 1;\n this._emitDidFocus(this.state.routeStack[newObservedTopOfStack]);\n\n invariant(\n newObservedTopOfStack <= this.state.requestedTopOfStack,\n 'No navigator item should be pushed without JS knowing about it %s %s', newObservedTopOfStack, this.state.requestedTopOfStack\n );\n var wasWaitingForConfirmation =\n this.state.requestedTopOfStack !== this.state.observedTopOfStack;\n if (wasWaitingForConfirmation) {\n invariant(\n newObservedTopOfStack === this.state.requestedTopOfStack,\n 'If waiting for observedTopOfStack to reach requestedTopOfStack, ' +\n 'the only valid observedTopOfStack should be requestedTopOfStack.'\n );\n }\n // Mark the most recent observation regardless of if we can lock the\n // navigator. `observedTopOfStack` merely represents what we've observed\n // and this first `setState` is only executed to update debugging\n // overlays/navigation bar.\n // Also reset progress, toIndex, and fromIndex as they might not end\n // in the correct states for a two possible reasons:\n // Progress isn't always 0 or 1 at the end, the system rounds\n // If the Navigator is offscreen these values won't be updated\n // TOOD: Revisit this decision when no longer relying on native navigator.\n var nextState = {\n observedTopOfStack: newObservedTopOfStack,\n makingNavigatorRequest: false,\n updatingAllIndicesAtOrBeyond: null,\n progress: 1,\n toIndex: newObservedTopOfStack,\n fromIndex: newObservedTopOfStack,\n };\n this.setState(nextState, this._eliminateUnneededChildren);\n },\n\n _eliminateUnneededChildren: function() {\n // Updating the indices that we're deleting and that's all. (Truth: Nothing\n // even uses the indices in this case, but let's make this describe the\n // truth anyways).\n var updatingAllIndicesAtOrBeyond =\n this.state.routeStack.length > this.state.observedTopOfStack + 1 ?\n this.state.observedTopOfStack + 1 :\n null;\n this.setState({\n idStack: this.state.idStack.slice(0, this.state.observedTopOfStack + 1),\n routeStack: this.state.routeStack.slice(0, this.state.observedTopOfStack + 1),\n // Now we rerequest the top of stack that we observed.\n requestedTopOfStack: this.state.observedTopOfStack,\n makingNavigatorRequest: true,\n updatingAllIndicesAtOrBeyond: updatingAllIndicesAtOrBeyond,\n });\n },\n\n _emitDidFocus: function(route: Route) {\n this.navigationContext.emit('didfocus', {route: route});\n },\n\n _emitWillFocus: function(route: Route) {\n this.navigationContext.emit('willfocus', {route: route});\n },\n\n push: function(route: Route) {\n invariant(!!route, 'Must supply route to push');\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack === this.state.observedTopOfStack) {\n this._tryLockNavigator(() => {\n this._emitWillFocus(route);\n\n var nextStack = this.state.routeStack.concat([route]);\n var nextIDStack = this.state.idStack.concat([getuid()]);\n this.setState({\n // We have to make sure that we've also supplied enough views to\n // satisfy our request to adjust the `requestedTopOfStack`.\n idStack: nextIDStack,\n routeStack: nextStack,\n requestedTopOfStack: nextStack.length - 1,\n makingNavigatorRequest: true,\n updatingAllIndicesAtOrBeyond: nextStack.length - 1,\n });\n });\n }\n },\n\n popN: function(n: number) {\n if (n === 0) {\n return;\n }\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack === this.state.observedTopOfStack) {\n if (this.state.requestedTopOfStack > 0) {\n this._tryLockNavigator(() => {\n var newRequestedTopOfStack = this.state.requestedTopOfStack - n;\n invariant(newRequestedTopOfStack >= 0, 'Cannot pop below 0');\n this._emitWillFocus(this.state.routeStack[newRequestedTopOfStack]);\n this.setState({\n requestedTopOfStack: newRequestedTopOfStack,\n makingNavigatorRequest: true,\n // Not actually updating the indices yet until we get the native\n // `onNavigationComplete`.\n updatingAllIndicesAtOrBeyond: null,\n });\n });\n }\n }\n },\n\n pop: function() {\n this.popN(1);\n },\n\n /**\n * Replace a route in the navigation stack.\n *\n * `index` specifies the route in the stack that should be replaced.\n * If it's negative, it counts from the back.\n */\n replaceAtIndex: function(route: Route, index: number) {\n invariant(!!route, 'Must supply route to replace');\n if (index < 0) {\n index += this.state.routeStack.length;\n }\n\n if (this.state.routeStack.length <= index) {\n return;\n }\n\n // I don't believe we need to lock for a replace since there's no\n // navigation actually happening\n var nextIDStack = this.state.idStack.slice();\n var nextRouteStack = this.state.routeStack.slice();\n nextIDStack[index] = getuid();\n nextRouteStack[index] = route;\n\n this.setState({\n idStack: nextIDStack,\n routeStack: nextRouteStack,\n makingNavigatorRequest: false,\n updatingAllIndicesAtOrBeyond: index,\n });\n\n this._emitWillFocus(route);\n this._emitDidFocus(route);\n },\n\n /**\n * Replaces the top of the navigation stack.\n */\n replace: function(route: Route) {\n this.replaceAtIndex(route, -1);\n },\n\n /**\n * Replace the current route's parent.\n */\n replacePrevious: function(route: Route) {\n this.replaceAtIndex(route, -2);\n },\n\n popToTop: function() {\n this.popToRoute(this.state.routeStack[0]);\n },\n\n popToRoute: function(route: Route) {\n var indexOfRoute = this.state.routeStack.indexOf(route);\n invariant(\n indexOfRoute !== -1,\n 'Calling pop to route for a route that doesn\\'t exist!'\n );\n var numToPop = this.state.routeStack.length - indexOfRoute - 1;\n this.popN(numToPop);\n },\n\n replacePreviousAndPop: function(route: Route) {\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack !== this.state.observedTopOfStack) {\n return;\n }\n if (this.state.routeStack.length < 2) {\n return;\n }\n this._tryLockNavigator(() => {\n this.replacePrevious(route);\n this.setState({\n requestedTopOfStack: this.state.requestedTopOfStack - 1,\n makingNavigatorRequest: true,\n });\n });\n },\n\n resetTo: function(route: Route) {\n invariant(!!route, 'Must supply route to push');\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack !== this.state.observedTopOfStack) {\n return;\n }\n this.replaceAtIndex(route, 0);\n this.popToRoute(route);\n },\n\n handleNavigationComplete: function(e: Event) {\n if (this._toFocusOnNavigationComplete) {\n this._getFocusEmitter().emit('focus', this._toFocusOnNavigationComplete);\n this._toFocusOnNavigationComplete = null;\n }\n this._handleNavigatorStackChanged(e);\n },\n\n _routeToStackItem: function(route: Route, i: number) {\n var Component = route.component;\n var shouldUpdateChild = this.state.updatingAllIndicesAtOrBeyond !== null &&\n this.state.updatingAllIndicesAtOrBeyond >= i;\n\n return (\n <StaticContainer key={'nav' + i} shouldUpdate={shouldUpdateChild}>\n <RCTNavigatorItem\n title={route.title}\n style={[\n styles.stackItem,\n this.props.itemWrapperStyle,\n route.wrapperStyle\n ]}\n backButtonIcon={this._imageNameFromSource(route.backButtonIcon)}\n backButtonTitle={route.backButtonTitle}\n leftButtonIcon={this._imageNameFromSource(route.leftButtonIcon)}\n leftButtonTitle={route.leftButtonTitle}\n onNavLeftButtonTap={route.onLeftButtonPress}\n rightButtonIcon={this._imageNameFromSource(route.rightButtonIcon)}\n rightButtonTitle={route.rightButtonTitle}\n onNavRightButtonTap={route.onRightButtonPress}\n navigationBarHidden={this.props.navigationBarHidden}\n tintColor={this.props.tintColor}\n barTintColor={this.props.barTintColor}\n translucent={this.props.translucent !== false}\n titleTextColor={this.props.titleTextColor}>\n <Component\n navigator={this.navigator}\n route={route}\n {...route.passProps}\n />\n </RCTNavigatorItem>\n </StaticContainer>\n );\n },\n\n _imageNameFromSource: function(source: ?Object) {\n return source ? source.uri : undefined;\n },\n\n renderNavigationStackItems: function() {\n var shouldRecurseToNavigator =\n this.state.makingNavigatorRequest ||\n this.state.updatingAllIndicesAtOrBeyond !== null;\n // If not recursing update to navigator at all, may as well avoid\n // computation of navigator children.\n var items = shouldRecurseToNavigator ?\n this.state.routeStack.map(this._routeToStackItem) : null;\n return (\n <StaticContainer shouldUpdate={shouldRecurseToNavigator}>\n <NavigatorTransitionerIOS\n ref={TRANSITIONER_REF}\n style={styles.transitioner}\n vertical={this.props.vertical}\n requestedTopOfStack={this.state.requestedTopOfStack}\n onNavigationComplete={this.handleNavigationComplete}>\n {items}\n </NavigatorTransitionerIOS>\n </StaticContainer>\n );\n },\n\n render: function() {\n return (\n <View style={this.props.style}>\n {this.renderNavigationStackItems()}\n </View>\n );\n },\n});\n\nvar styles = StyleSheet.create({\n stackItem: {\n backgroundColor: 'white',\n overflow: 'hidden',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n transitioner: {\n flex: 1,\n },\n});\n\nmodule.exports = NavigatorIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Navigation/NavigatorIOS.ios.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Picker/PickerIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar React=require('React');\nvar ReactChildren=require('ReactChildren');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar RCTPickerIOSConsts=require('NativeModules').UIManager.RCTPicker.Constants;\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar merge=require('merge');\n\nvar PICKER='picker';\n\nvar PickerIOS=React.createClass({displayName:'PickerIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\nonValueChange:React.PropTypes.func,\nselectedValue:React.PropTypes.any},\n\n\ngetInitialState:function(){\nreturn this._stateFromProps(this.props);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nthis.setState(this._stateFromProps(nextProps));},\n\n\n\n_stateFromProps:function(props){\nvar selectedIndex=0;\nvar items=[];\nReactChildren.forEach(props.children,function(child,index){\nif(child.props.value === props.selectedValue){\nselectedIndex = index;}\n\nitems.push({value:child.props.value,label:child.props.label});});\n\nreturn {selectedIndex:selectedIndex,items:items};},\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{style:this.props.style},\nReact.createElement(RCTPickerIOS,{\nref:PICKER,\nstyle:styles.pickerIOS,\nitems:this.state.items,\nselectedIndex:this.state.selectedIndex,\nonChange:this._onChange})));},\n\n\n\n\n\n_onChange:function(event){\nif(this.props.onChange){\nthis.props.onChange(event);}\n\nif(this.props.onValueChange){\nthis.props.onValueChange(event.nativeEvent.newValue);}\n\n\n\n\n\n\n\n\nif(this.state.selectedIndex !== event.nativeEvent.newIndex){\nthis.refs[PICKER].setNativeProps({\nselectedIndex:this.state.selectedIndex});}}});\n\n\n\n\n\nPickerIOS.Item = React.createClass({displayName:'Item',\npropTypes:{\nvalue:React.PropTypes.any,\nlabel:React.PropTypes.string},\n\n\nrender:function(){\n\nreturn null;}});\n\n\n\nvar styles=StyleSheet.create({\npickerIOS:{\n\n\n\nheight:RCTPickerIOSConsts.ComponentHeight}});\n\n\n\nvar RCTPickerIOS=requireNativeComponent('RCTPicker',null);\n\nmodule.exports = PickerIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PickerIOS\n *\n * This is a controlled component version of RCTPickerIOS\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar React = require('React');\nvar ReactChildren = require('ReactChildren');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar RCTPickerIOSConsts = require('NativeModules').UIManager.RCTPicker.Constants;\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar merge = require('merge');\n\nvar PICKER = 'picker';\n\nvar PickerIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n onValueChange: React.PropTypes.func,\n selectedValue: React.PropTypes.any, // string or integer basically\n },\n\n getInitialState: function() {\n return this._stateFromProps(this.props);\n },\n\n componentWillReceiveProps: function(nextProps) {\n this.setState(this._stateFromProps(nextProps));\n },\n\n // Translate PickerIOS prop and children into stuff that RCTPickerIOS understands.\n _stateFromProps: function(props) {\n var selectedIndex = 0;\n var items = [];\n ReactChildren.forEach(props.children, function (child, index) {\n if (child.props.value === props.selectedValue) {\n selectedIndex = index;\n }\n items.push({value: child.props.value, label: child.props.label});\n });\n return {selectedIndex, items};\n },\n\n render: function() {\n return (\n <View style={this.props.style}>\n <RCTPickerIOS\n ref={PICKER}\n style={styles.pickerIOS}\n items={this.state.items}\n selectedIndex={this.state.selectedIndex}\n onChange={this._onChange}\n />\n </View>\n );\n },\n\n _onChange: function(event) {\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(event.nativeEvent.newValue);\n }\n\n // The picker is a controlled component. This means we expect the\n // on*Change handlers to be in charge of updating our\n // `selectedValue` prop. That way they can also\n // disallow/undo/mutate the selection of certain values. In other\n // words, the embedder of this component should be the source of\n // truth, not the native component.\n if (this.state.selectedIndex !== event.nativeEvent.newIndex) {\n this.refs[PICKER].setNativeProps({\n selectedIndex: this.state.selectedIndex\n });\n }\n },\n});\n\nPickerIOS.Item = React.createClass({\n propTypes: {\n value: React.PropTypes.any, // string or integer basically\n label: React.PropTypes.string,\n },\n\n render: function() {\n // These items don't get rendered directly.\n return null;\n },\n});\n\nvar styles = StyleSheet.create({\n pickerIOS: {\n // The picker will conform to whatever width is given, but we do\n // have to set the component's height explicitly on the\n // surrounding view to ensure it gets rendered.\n height: RCTPickerIOSConsts.ComponentHeight,\n },\n});\n\nvar RCTPickerIOS = requireNativeComponent('RCTPicker', null);\n\nmodule.exports = PickerIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Picker/PickerIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=require('Image');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar NativeModules=require('NativeModules');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar verifyPropTypes=require('verifyPropTypes');\n\n\n\n\nvar ProgressViewIOS=React.createClass({displayName:'ProgressViewIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\nprogressViewStyle:PropTypes.oneOf(['default','bar']),\n\n\n\n\nprogress:PropTypes.number,\n\n\n\n\nprogressTintColor:PropTypes.string,\n\n\n\n\ntrackTintColor:PropTypes.string,\n\n\n\n\nprogressImage:Image.propTypes.source,\n\n\n\n\ntrackImage:Image.propTypes.source},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTProgressView,_extends({},\nthis.props,{\nstyle:[styles.progressView,this.props.style]})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nprogressView:{\nheight:NativeModules.ProgressViewManager.ComponentHeight}});\n\n\n\nvar RCTProgressView=requireNativeComponent(\n'RCTProgressView',\nProgressViewIOS);\n\n\nmodule.exports = ProgressViewIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ProgressViewIOS\n * @flow\n */\n'use strict';\n\nvar Image = require('Image');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar NativeModules = require('NativeModules');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar verifyPropTypes = require('verifyPropTypes');\n\n/**\n * Use `ProgressViewIOS` to render a UIProgressView on iOS.\n */\nvar ProgressViewIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The progress bar style.\n */\n progressViewStyle: PropTypes.oneOf(['default', 'bar']),\n\n /**\n * The progress value (between 0 and 1).\n */\n progress: PropTypes.number,\n\n /**\n * The tint color of the progress bar itself.\n */\n progressTintColor: PropTypes.string,\n\n /**\n * The tint color of the progress bar track.\n */\n trackTintColor: PropTypes.string,\n\n /**\n * A stretchable image to display as the progress bar.\n */\n progressImage: Image.propTypes.source,\n\n /**\n * A stretchable image to display behind the progress bar.\n */\n trackImage: Image.propTypes.source,\n },\n\n render: function() {\n return (\n <RCTProgressView\n {...this.props}\n style={[styles.progressView, this.props.style]}\n />\n );\n }\n});\n\nvar styles = StyleSheet.create({\n progressView: {\n height: NativeModules.ProgressViewManager.ComponentHeight\n },\n});\n\nvar RCTProgressView = requireNativeComponent(\n 'RCTProgressView',\n ProgressViewIOS\n);\n\nmodule.exports = ProgressViewIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar NativeModules=require('NativeModules');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar verifyPropTypes=require('verifyPropTypes');\n\n\n\n\n\n\nvar SEGMENTED_CONTROL_REFERENCE='segmentedcontrol';\n\n\n\n\n\n\nvar SegmentedControlIOS=React.createClass({displayName:'SegmentedControlIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\nvalues:PropTypes.arrayOf(PropTypes.string),\n\n\n\n\nselectedIndex:PropTypes.number,\n\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\n\nonChange:PropTypes.func,\n\n\n\n\n\nenabled:PropTypes.bool,\n\n\n\n\ntintColor:PropTypes.string,\n\n\n\n\n\nmomentary:PropTypes.bool},\n\n\ngetDefaultProps:function(){\nreturn {\nvalues:[],\nenabled:true};},\n\n\n\n_onChange:function(event){\nthis.props.onChange && this.props.onChange(event);\nthis.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTSegmentedControl,_extends({},\nthis.props,{\nref:SEGMENTED_CONTROL_REFERENCE,\nstyle:[styles.segmentedControl,this.props.style],\nonChange:this._onChange})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nsegmentedControl:{\nheight:NativeModules.SegmentedControlManager.ComponentHeight}});\n\n\n\nvar RCTSegmentedControl=requireNativeComponent(\n'RCTSegmentedControl',\nSegmentedControlIOS);\n\n\nmodule.exports = SegmentedControlIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SegmentedControlIOS\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar NativeModules = require('NativeModules');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar verifyPropTypes = require('verifyPropTypes');\n\ntype DefaultProps = {\n values: Array<string>;\n enabled: boolean;\n};\n\nvar SEGMENTED_CONTROL_REFERENCE = 'segmentedcontrol';\n\ntype Event = Object;\n\n/**\n * Use `SegmentedControlIOS` to render a UISegmentedControl iOS.\n */\nvar SegmentedControlIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The labels for the control's segment buttons, in order.\n */\n values: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * The index in `props.values` of the segment to be pre-selected\n */\n selectedIndex: PropTypes.number,\n\n /**\n * Callback that is called when the user taps a segment;\n * passes the segment's value as an argument\n */\n onValueChange: PropTypes.func,\n\n /**\n * Callback that is called when the user taps a segment;\n * passes the event as an argument\n */\n onChange: PropTypes.func,\n\n /**\n * If false the user won't be able to interact with the control.\n * Default value is true.\n */\n enabled: PropTypes.bool,\n\n /**\n * Accent color of the control.\n */\n tintColor: PropTypes.string,\n\n /**\n * If true, then selecting a segment won't persist visually.\n * The `onValueChange` callback will still work as expected.\n */\n momentary: PropTypes.bool\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n values: [],\n enabled: true\n };\n },\n\n _onChange: function(event: Event) {\n this.props.onChange && this.props.onChange(event);\n this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);\n },\n\n render: function() {\n return (\n <RCTSegmentedControl\n {...this.props}\n ref={SEGMENTED_CONTROL_REFERENCE}\n style={[styles.segmentedControl, this.props.style]}\n onChange={this._onChange}\n />\n );\n }\n});\n\nvar styles = StyleSheet.create({\n segmentedControl: {\n height: NativeModules.SegmentedControlManager.ComponentHeight\n },\n});\n\nvar RCTSegmentedControl = requireNativeComponent(\n 'RCTSegmentedControl',\n SegmentedControlIOS\n);\n\nmodule.exports = SegmentedControlIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SliderIOS/SliderIOS.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\n\n\nvar SliderIOS=React.createClass({displayName:'SliderIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\n\n\n\n\n\nvalue:PropTypes.number,\n\n\n\n\nminimumValue:PropTypes.number,\n\n\n\n\nmaximumValue:PropTypes.number,\n\n\n\n\n\nminimumTrackTintColor:PropTypes.string,\n\n\n\n\n\nmaximumTrackTintColor:PropTypes.string,\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\n\nonSlidingComplete:PropTypes.func},\n\n\n_onValueChange:function(event){\nthis.props.onChange && this.props.onChange(event);\nif(event.nativeEvent.continuous){\nthis.props.onValueChange && \nthis.props.onValueChange(event.nativeEvent.value);}else \n{\nthis.props.onSlidingComplete && event.nativeEvent.value !== undefined && \nthis.props.onSlidingComplete(event.nativeEvent.value);}},\n\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTSlider,{\nstyle:[styles.slider,this.props.style],\nvalue:this.props.value,\nmaximumValue:this.props.maximumValue,\nminimumValue:this.props.minimumValue,\nminimumTrackTintColor:this.props.minimumTrackTintColor,\nmaximumTrackTintColor:this.props.maximumTrackTintColor,\nonChange:this._onValueChange}));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nslider:{\nheight:40}});\n\n\n\nvar RCTSlider=requireNativeComponent('RCTSlider',SliderIOS);\n\nmodule.exports = SliderIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SliderIOS\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\ntype Event = Object;\n\nvar SliderIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * Used to style and layout the `Slider`. See `StyleSheet.js` and\n * `ViewStylePropTypes.js` for more info.\n */\n style: View.propTypes.style,\n\n /**\n * Initial value of the slider. The value should be between minimumValue\n * and maximumValue, which default to 0 and 1 respectively.\n * Default value is 0.\n *\n * *This is not a controlled component*, e.g. if you don't update\n * the value, the component won't be reset to its inital value.\n */\n value: PropTypes.number,\n\n /**\n * Initial minimum value of the slider. Default value is 0.\n */\n minimumValue: PropTypes.number,\n\n /**\n * Initial maximum value of the slider. Default value is 1.\n */\n maximumValue: PropTypes.number,\n\n /**\n * The color used for the track to the left of the button. Overrides the\n * default blue gradient image.\n */\n minimumTrackTintColor: PropTypes.string,\n\n /**\n * The color used for the track to the right of the button. Overrides the\n * default blue gradient image.\n */\n maximumTrackTintColor: PropTypes.string,\n\n /**\n * Callback continuously called while the user is dragging the slider.\n */\n onValueChange: PropTypes.func,\n\n /**\n * Callback called when the user finishes changing the value (e.g. when\n * the slider is released).\n */\n onSlidingComplete: PropTypes.func,\n },\n\n _onValueChange: function(event: Event) {\n this.props.onChange && this.props.onChange(event);\n if (event.nativeEvent.continuous) {\n this.props.onValueChange &&\n this.props.onValueChange(event.nativeEvent.value);\n } else {\n this.props.onSlidingComplete && event.nativeEvent.value !== undefined &&\n this.props.onSlidingComplete(event.nativeEvent.value);\n }\n },\n\n render: function() {\n return (\n <RCTSlider\n style={[styles.slider, this.props.style]}\n value={this.props.value}\n maximumValue={this.props.maximumValue}\n minimumValue={this.props.minimumValue}\n minimumTrackTintColor={this.props.minimumTrackTintColor}\n maximumTrackTintColor={this.props.maximumTrackTintColor}\n onChange={this._onValueChange}\n />\n );\n }\n});\n\nvar styles = StyleSheet.create({\n slider: {\n height: 40,\n },\n});\n\nvar RCTSlider = requireNativeComponent('RCTSlider', SliderIOS);\n\nmodule.exports = SliderIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SliderIOS/SliderIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SwitchIOS/SwitchIOS.ios.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar SWITCH='switch';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SwitchIOS=React.createClass({displayName:'SwitchIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\n\nvalue:PropTypes.bool,\n\n\n\n\n\ndisabled:PropTypes.bool,\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\nonTintColor:PropTypes.string,\n\n\n\n\nthumbTintColor:PropTypes.string,\n\n\n\n\ntintColor:PropTypes.string},\n\n\ngetDefaultProps:function(){\nreturn {\nvalue:false,\ndisabled:false};},\n\n\n\n_onChange:function(event){\nthis.props.onChange && this.props.onChange(event);\nthis.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);\n\n\n\nthis.refs[SWITCH].setNativeProps({value:this.props.value});},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTSwitch,_extends({},\nthis.props,{\nref:SWITCH,\nonChange:this._onChange,\nstyle:[styles.rkSwitch,this.props.style]})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nrkSwitch:{\nheight:31,\nwidth:51}});\n\n\n\nvar RCTSwitch=requireNativeComponent('RCTSwitch',SwitchIOS);\n\nmodule.exports = SwitchIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SwitchIOS\n * @flow\n *\n * This is a controlled component version of RCTSwitch.\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar SWITCH = 'switch';\n\ntype DefaultProps = {\n value: boolean;\n disabled: boolean;\n};\n\ntype Event = Object;\n\n/**\n * Use `SwitchIOS` to render a boolean input on iOS. This is\n * a controlled component, so you must hook in to the `onValueChange` callback\n * and update the `value` prop in order for the component to update, otherwise\n * the user's change will be reverted immediately to reflect `props.value` as the\n * source of truth.\n */\nvar SwitchIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The value of the switch, if true the switch will be turned on.\n * Default value is false.\n */\n value: PropTypes.bool,\n\n /**\n * If true the user won't be able to toggle the switch.\n * Default value is false.\n */\n disabled: PropTypes.bool,\n\n /**\n * Callback that is called when the user toggles the switch.\n */\n onValueChange: PropTypes.func,\n\n /**\n * Background color when the switch is turned on.\n */\n onTintColor: PropTypes.string,\n\n /**\n * Background color for the switch round button.\n */\n thumbTintColor: PropTypes.string,\n\n /**\n * Background color when the switch is turned off.\n */\n tintColor: PropTypes.string,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n value: false,\n disabled: false,\n };\n },\n\n _onChange: function(event: Event) {\n this.props.onChange && this.props.onChange(event);\n this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);\n\n // The underlying switch might have changed, but we're controlled,\n // and so want to ensure it represents our value.\n this.refs[SWITCH].setNativeProps({value: this.props.value});\n },\n\n render: function() {\n return (\n <RCTSwitch\n {...this.props}\n ref={SWITCH}\n onChange={this._onChange}\n style={[styles.rkSwitch, this.props.style]}\n />\n );\n }\n});\n\nvar styles = StyleSheet.create({\n rkSwitch: {\n height: 31,\n width: 51,\n },\n});\n\nvar RCTSwitch = requireNativeComponent('RCTSwitch', SwitchIOS);\n\nmodule.exports = SwitchIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SwitchIOS/SwitchIOS.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar TabBarItemIOS=require('TabBarItemIOS');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar TabBarIOS=React.createClass({displayName:'TabBarIOS',\nstatics:{\nItem:TabBarItemIOS},\n\n\npropTypes:{\nstyle:View.propTypes.style,\n\n\n\ntintColor:React.PropTypes.string,\n\n\n\nbarTintColor:React.PropTypes.string},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTTabBar,{\nstyle:[styles.tabGroup,this.props.style],\ntintColor:this.props.tintColor,\nbarTintColor:this.props.barTintColor},\nthis.props.children));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ntabGroup:{\nflex:1}});\n\n\n\nvar RCTTabBar=requireNativeComponent('RCTTabBar',TabBarIOS);\n\nmodule.exports = TabBarIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TabBarIOS\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar TabBarItemIOS = require('TabBarItemIOS');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar TabBarIOS = React.createClass({\n statics: {\n Item: TabBarItemIOS,\n },\n\n propTypes: {\n style: View.propTypes.style,\n /**\n * Color of the currently selected tab icon\n */\n tintColor: React.PropTypes.string,\n /**\n * Background color of the tab bar\n */\n barTintColor: React.PropTypes.string\n },\n\n render: function() {\n return (\n <RCTTabBar\n style={[styles.tabGroup, this.props.style]}\n tintColor={this.props.tintColor}\n barTintColor={this.props.barTintColor}>\n {this.props.children}\n </RCTTabBar>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n tabGroup: {\n flex: 1,\n }\n});\n\nvar RCTTabBar = requireNativeComponent('RCTTabBar', TabBarIOS);\n\nmodule.exports = TabBarIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.ios.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=require('Image');\nvar React=require('React');\nvar StaticContainer=require('StaticContainer.react');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar TabBarItemIOS=React.createClass({displayName:'TabBarItemIOS',\npropTypes:{\n\n\n\nbadge:React.PropTypes.oneOfType([\nReact.PropTypes.string,\nReact.PropTypes.number]),\n\n\n\n\n\n\nsystemIcon:React.PropTypes.oneOf([\n'bookmarks',\n'contacts',\n'downloads',\n'favorites',\n'featured',\n'history',\n'more',\n'most-recent',\n'most-viewed',\n'recents',\n'search',\n'top-rated']),\n\n\n\n\nicon:Image.propTypes.source,\n\n\n\n\nselectedIcon:Image.propTypes.source,\n\n\n\n\nonPress:React.PropTypes.func,\n\n\n\n\nselected:React.PropTypes.bool,\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\ntitle:React.PropTypes.string},\n\n\ngetInitialState:function(){\nreturn {\nhasBeenSelected:false};},\n\n\n\ncomponentWillMount:function(){\nif(this.props.selected){\nthis.setState({hasBeenSelected:true});}},\n\n\n\ncomponentWillReceiveProps:function(nextProps){\nif(this.state.hasBeenSelected || nextProps.selected){\nthis.setState({hasBeenSelected:true});}},\n\n\n\nrender:function(){\nvar tabContents=null;\n\n\nif(this.state.hasBeenSelected){\ntabContents = \nReact.createElement(StaticContainer,{shouldUpdate:this.props.selected},\nthis.props.children);}else \n\n{\ntabContents = React.createElement(View,null);}\n\n\nvar icon=this.props.systemIcon || \nthis.props.icon && this.props.icon.uri;\n\n\nvar badge=typeof this.props.badge === 'number'?\n'' + this.props.badge:\nthis.props.badge;\n\nreturn (\nReact.createElement(RCTTabBarItem,{\nicon:icon,\nselectedIcon:this.props.selectedIcon && this.props.selectedIcon.uri,\nonPress:this.props.onPress,\nselected:this.props.selected,\nbadge:badge,\ntitle:this.props.title,\nstyle:[styles.tab,this.props.style]},\ntabContents));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ntab:{\nposition:'absolute',\ntop:0,\nright:0,\nbottom:0,\nleft:0}});\n\n\n\nvar RCTTabBarItem=requireNativeComponent('RCTTabBarItem',TabBarItemIOS);\n\nmodule.exports = TabBarItemIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TabBarItemIOS\n * @flow\n */\n'use strict';\n\nvar Image = require('Image');\nvar React = require('React');\nvar StaticContainer = require('StaticContainer.react');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar TabBarItemIOS = React.createClass({\n propTypes: {\n /**\n * Little red bubble that sits at the top right of the icon.\n */\n badge: React.PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n /**\n * Items comes with a few predefined system icons. Note that if you are\n * using them, the title and selectedIcon will be overriden with the\n * system ones.\n */\n systemIcon: React.PropTypes.oneOf([\n 'bookmarks',\n 'contacts',\n 'downloads',\n 'favorites',\n 'featured',\n 'history',\n 'more',\n 'most-recent',\n 'most-viewed',\n 'recents',\n 'search',\n 'top-rated',\n ]),\n /**\n * A custom icon for the tab. It is ignored when a system icon is defined.\n */\n icon: Image.propTypes.source,\n /**\n * A custom icon when the tab is selected. It is ignored when a system\n * icon is defined. If left empty, the icon will be tinted in blue.\n */\n selectedIcon: Image.propTypes.source,\n /**\n * Callback when this tab is being selected, you should change the state of your\n * component to set selected={true}.\n */\n onPress: React.PropTypes.func,\n /**\n * It specifies whether the children are visible or not. If you see a\n * blank content, you probably forgot to add a selected one.\n */\n selected: React.PropTypes.bool,\n /**\n * React style object.\n */\n style: View.propTypes.style,\n /**\n * Text that appears under the icon. It is ignored when a system icon\n * is defined.\n */\n title: React.PropTypes.string,\n },\n\n getInitialState: function() {\n return {\n hasBeenSelected: false,\n };\n },\n\n componentWillMount: function() {\n if (this.props.selected) {\n this.setState({hasBeenSelected: true});\n }\n },\n\n componentWillReceiveProps: function(nextProps: { selected?: boolean }) {\n if (this.state.hasBeenSelected || nextProps.selected) {\n this.setState({hasBeenSelected: true});\n }\n },\n\n render: function() {\n var tabContents = null;\n // if the tab has already been shown once, always continue to show it so we\n // preserve state between tab transitions\n if (this.state.hasBeenSelected) {\n tabContents =\n <StaticContainer shouldUpdate={this.props.selected}>\n {this.props.children}\n </StaticContainer>;\n } else {\n tabContents = <View />;\n }\n\n var icon = this.props.systemIcon || (\n this.props.icon && this.props.icon.uri\n );\n\n var badge = typeof this.props.badge === 'number' ?\n '' + this.props.badge :\n this.props.badge;\n\n return (\n <RCTTabBarItem\n icon={icon}\n selectedIcon={this.props.selectedIcon && this.props.selectedIcon.uri}\n onPress={this.props.onPress}\n selected={this.props.selected}\n badge={badge}\n title={this.props.title}\n style={[styles.tab, this.props.style]}>\n {tabContents}\n </RCTTabBarItem>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n tab: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n }\n});\n\nvar RCTTabBarItem = requireNativeComponent('RCTTabBarItem', TabBarItemIOS);\n\nmodule.exports = TabBarItemIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Text/Text.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar Platform=require('Platform');\nvar React=require('React');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar Touchable=require('Touchable');\n\nvar createReactNativeComponentClass=\nrequire('createReactNativeComponentClass');\nvar merge=require('merge');\n\nvar stylePropType=StyleSheetPropType(TextStylePropTypes);\n\nvar viewConfig={\nvalidAttributes:merge(ReactNativeViewAttributes.UIView,{\nisHighlighted:true,\nnumberOfLines:true}),\n\nuiViewClassName:'RCTText'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Text=React.createClass({displayName:'Text',\n\nmixins:[Touchable.Mixin,NativeMethodsMixin],\n\npropTypes:{\n\n\n\n\n\nnumberOfLines:React.PropTypes.number,\n\n\n\n\n\nonPress:React.PropTypes.func,\n\n\n\n\nsuppressHighlighting:React.PropTypes.bool,\nstyle:stylePropType,\n\n\n\ntestID:React.PropTypes.string,\n\n\n\n\n\nonLayout:React.PropTypes.func},\n\n\nviewConfig:viewConfig,\n\ngetInitialState:function(){\nreturn merge(this.touchableGetInitialState(),{\nisHighlighted:false});},\n\n\n\nonStartShouldSetResponder:function(){\nvar shouldSetFromProps=this.props.onStartShouldSetResponder && \nthis.props.onStartShouldSetResponder();\nreturn shouldSetFromProps || !!this.props.onPress;},\n\n\n\n\n\nhandleResponderTerminationRequest:function(){\n\n\nvar allowTermination=this.touchableHandleResponderTerminationRequest();\nif(allowTermination && this.props.onResponderTerminationRequest){\nallowTermination = this.props.onResponderTerminationRequest();}\n\nreturn allowTermination;},\n\n\nhandleResponderGrant:function(e,dispatchID){\nthis.touchableHandleResponderGrant(e,dispatchID);\nthis.props.onResponderGrant && \nthis.props.onResponderGrant.apply(this,arguments);},\n\n\nhandleResponderMove:function(e){\nthis.touchableHandleResponderMove(e);\nthis.props.onResponderMove && \nthis.props.onResponderMove.apply(this,arguments);},\n\n\nhandleResponderRelease:function(e){\nthis.touchableHandleResponderRelease(e);\nthis.props.onResponderRelease && \nthis.props.onResponderRelease.apply(this,arguments);},\n\n\nhandleResponderTerminate:function(e){\nthis.touchableHandleResponderTerminate(e);\nthis.props.onResponderTerminate && \nthis.props.onResponderTerminate.apply(this,arguments);},\n\n\ntouchableHandleActivePressIn:function(){\nif(this.props.suppressHighlighting || !this.props.onPress){\nreturn;}\n\nthis.setState({\nisHighlighted:true});},\n\n\n\ntouchableHandleActivePressOut:function(){\nif(this.props.suppressHighlighting || !this.props.onPress){\nreturn;}\n\nthis.setState({\nisHighlighted:false});},\n\n\n\ntouchableHandlePress:function(){\nthis.props.onPress && this.props.onPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ngetChildContext:function(){\nreturn {isInAParentText:true};},\n\n\nchildContextTypes:{\nisInAParentText:React.PropTypes.bool},\n\n\nrender:function(){\nvar props={};\nfor(var key in this.props) {\nprops[key] = this.props[key];}\n\n\nif(props.accessible !== false){\nprops.accessible = true;}\n\nprops.isHighlighted = this.state.isHighlighted;\nprops.onStartShouldSetResponder = this.onStartShouldSetResponder;\nprops.onResponderTerminationRequest = \nthis.handleResponderTerminationRequest;\nprops.onResponderGrant = this.handleResponderGrant;\nprops.onResponderMove = this.handleResponderMove;\nprops.onResponderRelease = this.handleResponderRelease;\nprops.onResponderTerminate = this.handleResponderTerminate;\n\n\nvar context=ReactInstanceMap.get(this)._context;\nif(context.isInAParentText){\nreturn React.createElement(RCTVirtualText,props);}else \n{\nreturn React.createElement(RCTText,props);}}});\n\n\n\n\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\n\nvar RCTText=createReactNativeComponentClass(viewConfig);\nvar RCTVirtualText=RCTText;\n\nif(Platform.OS === 'android'){\nRCTVirtualText = createReactNativeComponentClass({\nvalidAttributes:merge(ReactNativeViewAttributes.UIView,{\nisHighlighted:true}),\n\nuiViewClassName:'RCTVirtualText'});}\n\n\n\nmodule.exports = Text;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Text\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar Platform = require('Platform');\nvar React = require('React');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar StyleSheetPropType = require('StyleSheetPropType');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar Touchable = require('Touchable');\n\nvar createReactNativeComponentClass =\n require('createReactNativeComponentClass');\nvar merge = require('merge');\n\nvar stylePropType = StyleSheetPropType(TextStylePropTypes);\n\nvar viewConfig = {\n validAttributes: merge(ReactNativeViewAttributes.UIView, {\n isHighlighted: true,\n numberOfLines: true,\n }),\n uiViewClassName: 'RCTText',\n};\n\n/**\n * A React component for displaying text which supports nesting,\n * styling, and touch handling. In the following example, the nested title and\n * body text will inherit the `fontFamily` from `styles.baseText`, but the title\n * provides its own additional styles. The title and body will stack on top of\n * each other on account of the literal newlines:\n *\n * ```\n * renderText: function() {\n * return (\n * <Text style={styles.baseText}>\n * <Text style={styles.titleText} onPress={this.onPressTitle}>\n * {this.state.titleText + '\\n\\n'}\n * </Text>\n * <Text numberOfLines={5}>\n * {this.state.bodyText}\n * </Text>\n * </Text>\n * );\n * },\n * ...\n * var styles = StyleSheet.create({\n * baseText: {\n * fontFamily: 'Cochin',\n * },\n * titleText: {\n * fontSize: 20,\n * fontWeight: 'bold',\n * },\n * };\n * ```\n */\n\nvar Text = React.createClass({\n\n mixins: [Touchable.Mixin, NativeMethodsMixin],\n\n propTypes: {\n /**\n * Used to truncate the text with an elipsis after computing the text\n * layout, including line wrapping, such that the total number of lines does\n * not exceed this number.\n */\n numberOfLines: React.PropTypes.number,\n /**\n * This function is called on press. Text intrinsically supports press\n * handling with a default highlight state (which can be disabled with\n * `suppressHighlighting`).\n */\n onPress: React.PropTypes.func,\n /**\n * When true, no visual change is made when text is pressed down. By\n * default, a gray oval highlights the text on press down.\n */\n suppressHighlighting: React.PropTypes.bool,\n style: stylePropType,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: React.PropTypes.string,\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: {layout: {x, y, width, height}}}.\n */\n onLayout: React.PropTypes.func,\n },\n\n viewConfig: viewConfig,\n\n getInitialState: function() {\n return merge(this.touchableGetInitialState(), {\n isHighlighted: false,\n });\n },\n\n onStartShouldSetResponder: function(): bool {\n var shouldSetFromProps = this.props.onStartShouldSetResponder &&\n this.props.onStartShouldSetResponder();\n return shouldSetFromProps || !!this.props.onPress;\n },\n\n /*\n * Returns true to allow responder termination\n */\n handleResponderTerminationRequest: function(): bool {\n // Allow touchable or props.onResponderTerminationRequest to deny\n // the request\n var allowTermination = this.touchableHandleResponderTerminationRequest();\n if (allowTermination && this.props.onResponderTerminationRequest) {\n allowTermination = this.props.onResponderTerminationRequest();\n }\n return allowTermination;\n },\n\n handleResponderGrant: function(e: SyntheticEvent, dispatchID: string) {\n this.touchableHandleResponderGrant(e, dispatchID);\n this.props.onResponderGrant &&\n this.props.onResponderGrant.apply(this, arguments);\n },\n\n handleResponderMove: function(e: SyntheticEvent) {\n this.touchableHandleResponderMove(e);\n this.props.onResponderMove &&\n this.props.onResponderMove.apply(this, arguments);\n },\n\n handleResponderRelease: function(e: SyntheticEvent) {\n this.touchableHandleResponderRelease(e);\n this.props.onResponderRelease &&\n this.props.onResponderRelease.apply(this, arguments);\n },\n\n handleResponderTerminate: function(e: SyntheticEvent) {\n this.touchableHandleResponderTerminate(e);\n this.props.onResponderTerminate &&\n this.props.onResponderTerminate.apply(this, arguments);\n },\n\n touchableHandleActivePressIn: function() {\n if (this.props.suppressHighlighting || !this.props.onPress) {\n return;\n }\n this.setState({\n isHighlighted: true,\n });\n },\n\n touchableHandleActivePressOut: function() {\n if (this.props.suppressHighlighting || !this.props.onPress) {\n return;\n }\n this.setState({\n isHighlighted: false,\n });\n },\n\n touchableHandlePress: function() {\n this.props.onPress && this.props.onPress();\n },\n\n touchableGetPressRectOffset: function(): RectOffset {\n return PRESS_RECT_OFFSET;\n },\n\n getChildContext: function(): Object {\n return {isInAParentText: true};\n },\n\n childContextTypes: {\n isInAParentText: React.PropTypes.bool\n },\n\n render: function() {\n var props = {};\n for (var key in this.props) {\n props[key] = this.props[key];\n }\n // Text is accessible by default\n if (props.accessible !== false) {\n props.accessible = true;\n }\n props.isHighlighted = this.state.isHighlighted;\n props.onStartShouldSetResponder = this.onStartShouldSetResponder;\n props.onResponderTerminationRequest =\n this.handleResponderTerminationRequest;\n props.onResponderGrant = this.handleResponderGrant;\n props.onResponderMove = this.handleResponderMove;\n props.onResponderRelease = this.handleResponderRelease;\n props.onResponderTerminate = this.handleResponderTerminate;\n\n // TODO: Switch to use contextTypes and this.context after React upgrade\n var context = ReactInstanceMap.get(this)._context;\n if (context.isInAParentText) {\n return <RCTVirtualText {...props} />;\n } else {\n return <RCTText {...props} />;\n }\n },\n});\n\ntype RectOffset = {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}\n\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\nvar RCTText = createReactNativeComponentClass(viewConfig);\nvar RCTVirtualText = RCTText;\n\nif (Platform.OS === 'android') {\n RCTVirtualText = createReactNativeComponentClass({\n validAttributes: merge(ReactNativeViewAttributes.UIView, {\n isHighlighted: true,\n }),\n uiViewClassName: 'RCTVirtualText',\n });\n}\n\nmodule.exports = Text;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Text/Text.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/interactions/Touchable/Touchable.js":{"data":{"code":"'use strict';\n\n\n\n\n\nvar BoundingDimensions=require('BoundingDimensions');\nvar Position=require('Position');\nvar TouchEventUtils=require('TouchEventUtils');\n\nvar keyMirror=require('keyMirror');\nvar queryLayoutByID=require('queryLayoutByID');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar States=keyMirror({\nNOT_RESPONDER:null,\nRESPONDER_INACTIVE_PRESS_IN:null,\nRESPONDER_INACTIVE_PRESS_OUT:null,\nRESPONDER_ACTIVE_PRESS_IN:null,\nRESPONDER_ACTIVE_PRESS_OUT:null,\nRESPONDER_ACTIVE_LONG_PRESS_IN:null,\nRESPONDER_ACTIVE_LONG_PRESS_OUT:null,\nERROR:null});\n\n\n\n\n\nvar IsActive={\nRESPONDER_ACTIVE_PRESS_OUT:true,\nRESPONDER_ACTIVE_PRESS_IN:true};\n\n\n\n\n\n\nvar IsPressingIn={\nRESPONDER_INACTIVE_PRESS_IN:true,\nRESPONDER_ACTIVE_PRESS_IN:true,\nRESPONDER_ACTIVE_LONG_PRESS_IN:true};\n\n\nvar IsLongPressingIn={\nRESPONDER_ACTIVE_LONG_PRESS_IN:true};\n\n\n\n\n\nvar Signals=keyMirror({\nDELAY:null,\nRESPONDER_GRANT:null,\nRESPONDER_RELEASE:null,\nRESPONDER_TERMINATED:null,\nENTER_PRESS_RECT:null,\nLEAVE_PRESS_RECT:null,\nLONG_PRESS_DETECTED:null});\n\n\n\n\n\nvar Transitions={\nNOT_RESPONDER:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.RESPONDER_INACTIVE_PRESS_IN,\nRESPONDER_RELEASE:States.ERROR,\nRESPONDER_TERMINATED:States.ERROR,\nENTER_PRESS_RECT:States.ERROR,\nLEAVE_PRESS_RECT:States.ERROR,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_INACTIVE_PRESS_IN:{\nDELAY:States.RESPONDER_ACTIVE_PRESS_IN,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_INACTIVE_PRESS_OUT:{\nDELAY:States.RESPONDER_ACTIVE_PRESS_OUT,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_ACTIVE_PRESS_IN:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.RESPONDER_ACTIVE_LONG_PRESS_IN},\n\nRESPONDER_ACTIVE_PRESS_OUT:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_ACTIVE_LONG_PRESS_IN:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\nLONG_PRESS_DETECTED:States.RESPONDER_ACTIVE_LONG_PRESS_IN},\n\nRESPONDER_ACTIVE_LONG_PRESS_OUT:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nerror:{\nDELAY:States.NOT_RESPONDER,\nRESPONDER_GRANT:States.RESPONDER_INACTIVE_PRESS_IN,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.NOT_RESPONDER,\nLEAVE_PRESS_RECT:States.NOT_RESPONDER,\nLONG_PRESS_DETECTED:States.NOT_RESPONDER}};\n\n\n\n\n\n\nvar HIGHLIGHT_DELAY_MS=130;\n\nvar PRESS_EXPAND_PX=20;\n\nvar LONG_PRESS_THRESHOLD=500;\n\nvar LONG_PRESS_DELAY_MS=LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\n\nvar LONG_PRESS_ALLOWED_MOVEMENT=10;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TouchableMixin={\n\n\n\n\n\n\n\ntouchableGetInitialState:function(){\nreturn {\ntouchable:{touchState:undefined,responderID:null}};},\n\n\n\n\n\n\n\ntouchableHandleResponderTerminationRequest:function(){\nreturn !this.props.rejectResponderTermination;},\n\n\n\n\n\ntouchableHandleStartShouldSetResponder:function(){\nreturn true;},\n\n\n\n\n\ntouchableLongPressCancelsPress:function(){\nreturn true;},\n\n\n\n\n\n\n\n\ntouchableHandleResponderGrant:function(e,dispatchID){\n\n\n\ne.persist();\n\nthis.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\nthis.pressOutDelayTimeout = null;\n\nthis.state.touchable.touchState = States.NOT_RESPONDER;\nthis.state.touchable.responderID = dispatchID;\nthis._receiveSignal(Signals.RESPONDER_GRANT,e);\nvar delayMS=\nthis.touchableGetHighlightDelayMS !== undefined?\nMath.max(this.touchableGetHighlightDelayMS(),0):HIGHLIGHT_DELAY_MS;\ndelayMS = isNaN(delayMS)?HIGHLIGHT_DELAY_MS:delayMS;\nif(delayMS !== 0){\nthis.touchableDelayTimeout = setTimeout(\nthis._handleDelay.bind(this,e),\ndelayMS);}else \n\n{\nthis._handleDelay(e);}\n\n\nvar longDelayMS=\nthis.touchableGetLongPressDelayMS !== undefined?\nMath.max(this.touchableGetLongPressDelayMS(),10):LONG_PRESS_DELAY_MS;\nlongDelayMS = isNaN(longDelayMS)?LONG_PRESS_DELAY_MS:longDelayMS;\nthis.longPressDelayTimeout = setTimeout(\nthis._handleLongDelay.bind(this,e),\nlongDelayMS + delayMS);},\n\n\n\n\n\n\ntouchableHandleResponderRelease:function(e){\nthis._receiveSignal(Signals.RESPONDER_RELEASE,e);},\n\n\n\n\n\ntouchableHandleResponderTerminate:function(e){\nthis._receiveSignal(Signals.RESPONDER_TERMINATED,e);},\n\n\n\n\n\ntouchableHandleResponderMove:function(e){\n\n\nif(this.state.touchable.touchState === States.RESPONDER_INACTIVE_PRESS_IN){\nreturn;}\n\n\n\nif(!this.state.touchable.positionOnActivate){\nreturn;}\n\n\nvar positionOnActivate=this.state.touchable.positionOnActivate;\nvar dimensionsOnActivate=this.state.touchable.dimensionsOnActivate;\nvar pressRectOffset=this.touchableGetPressRectOffset?\nthis.touchableGetPressRectOffset():null;\nvar pressExpandLeft=\npressRectOffset.left != null?pressRectOffset.left:PRESS_EXPAND_PX;\nvar pressExpandTop=\npressRectOffset.top != null?pressRectOffset.top:PRESS_EXPAND_PX;\nvar pressExpandRight=\npressRectOffset.right != null?pressRectOffset.right:PRESS_EXPAND_PX;\nvar pressExpandBottom=\npressRectOffset.bottom != null?pressRectOffset.bottom:PRESS_EXPAND_PX;\n\nvar touch=TouchEventUtils.extractSingleTouch(e.nativeEvent);\nvar pageX=touch && touch.pageX;\nvar pageY=touch && touch.pageY;\n\nif(this.pressInLocation){\nvar movedDistance=this._getDistanceBetweenPoints(pageX,pageY,this.pressInLocation.pageX,this.pressInLocation.pageY);\nif(movedDistance > LONG_PRESS_ALLOWED_MOVEMENT){\nthis._cancelLongPressDelayTimeout();}}\n\n\n\nvar isTouchWithinActive=\npageX > positionOnActivate.left - pressExpandLeft && \npageY > positionOnActivate.top - pressExpandTop && \npageX < \npositionOnActivate.left + \ndimensionsOnActivate.width + \npressExpandRight && \npageY < \npositionOnActivate.top + \ndimensionsOnActivate.height + \npressExpandBottom;\nif(isTouchWithinActive){\nthis._receiveSignal(Signals.ENTER_PRESS_RECT,e);}else \n{\nthis._cancelLongPressDelayTimeout();\nthis._receiveSignal(Signals.LEAVE_PRESS_RECT,e);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_remeasureMetricsOnActivation:function(){\nqueryLayoutByID(\nthis.state.touchable.responderID,\nnull,\nthis._handleQueryLayout);},\n\n\n\n_handleQueryLayout:function(l,t,w,h,globalX,globalY){\nthis.state.touchable.positionOnActivate && \nPosition.release(this.state.touchable.positionOnActivate);\nthis.state.touchable.dimensionsOnActivate && \nBoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\nthis.state.touchable.positionOnActivate = Position.getPooled(globalX,globalY);\nthis.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(w,h);},\n\n\n_handleDelay:function(e){\nthis.touchableDelayTimeout = null;\nthis._receiveSignal(Signals.DELAY,e);},\n\n\n_handleLongDelay:function(e){\nthis.longPressDelayTimeout = null;\nthis._receiveSignal(Signals.LONG_PRESS_DETECTED,e);},\n\n\n\n\n\n\n\n\n\n\n_receiveSignal:function(signal,e){\nvar curState=this.state.touchable.touchState;\nif(!(Transitions[curState] && Transitions[curState][signal])){\nthrow new Error(\n'Unrecognized signal `' + signal + '` or state `' + curState + \n'` for Touchable responder `' + this.state.touchable.responderID + '`');}\n\n\nvar nextState=Transitions[curState][signal];\nif(nextState === States.ERROR){\nthrow new Error(\n'Touchable cannot transition from `' + curState + '` to `' + signal + \n'` for responder `' + this.state.touchable.responderID + '`');}\n\n\nif(curState !== nextState){\nthis._performSideEffectsForTransition(curState,nextState,signal,e);\nthis.state.touchable.touchState = nextState;}},\n\n\n\n_cancelLongPressDelayTimeout:function(){\nthis.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\nthis.longPressDelayTimeout = null;},\n\n\n_isHighlight:function(state){\nreturn state === States.RESPONDER_ACTIVE_PRESS_IN || \nstate === States.RESPONDER_ACTIVE_LONG_PRESS_IN;},\n\n\n_savePressInLocation:function(e){\nvar touch=TouchEventUtils.extractSingleTouch(e.nativeEvent);\nvar pageX=touch && touch.pageX;\nvar pageY=touch && touch.pageY;\nthis.pressInLocation = {pageX:pageX,pageY:pageY};},\n\n\n_getDistanceBetweenPoints:function(aX,aY,bX,bY){\nvar deltaX=aX - bX;\nvar deltaY=aY - bY;\nreturn Math.sqrt(deltaX * deltaX + deltaY * deltaY);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n_performSideEffectsForTransition:function(curState,nextState,signal,e){\nvar curIsHighlight=this._isHighlight(curState);\nvar newIsHighlight=this._isHighlight(nextState);\n\nvar isFinalSignal=\nsignal === Signals.RESPONDER_TERMINATED || \nsignal === Signals.RESPONDER_RELEASE;\n\nif(isFinalSignal){\nthis._cancelLongPressDelayTimeout();}\n\n\nif(!IsActive[curState] && IsActive[nextState]){\nthis._remeasureMetricsOnActivation();}\n\n\nif(IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED){\nthis.touchableHandleLongPress && this.touchableHandleLongPress();}\n\n\nif(newIsHighlight && !curIsHighlight){\nthis._savePressInLocation(e);\nthis.touchableHandleActivePressIn && this.touchableHandleActivePressIn();}else \nif(!newIsHighlight && curIsHighlight && this.touchableHandleActivePressOut){\nif(this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()){\nthis.pressOutDelayTimeout = this.setTimeout(function(){\nthis.touchableHandleActivePressOut();},\nthis.touchableGetPressOutDelayMS());}else \n{\nthis.touchableHandleActivePressOut();}}\n\n\n\nif(IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE){\nvar hasLongPressHandler=!!this.props.onLongPress;\nvar pressIsLongButStillCallOnPress=\nIsLongPressingIn[curState] && (\n!hasLongPressHandler || \n!this.touchableLongPressCancelsPress());\n\n\nvar shouldInvokePress=!IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\nif(shouldInvokePress && this.touchableHandlePress){\nthis.touchableHandlePress(e);}}\n\n\n\nthis.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\nthis.touchableDelayTimeout = null;}};\n\n\n\n\nvar Touchable={\nMixin:TouchableMixin};\n\n\nmodule.exports = Touchable;","sourceCode":"/**\n * @providesModule Touchable\n */\n\n'use strict';\n\nvar BoundingDimensions = require('BoundingDimensions');\nvar Position = require('Position');\nvar TouchEventUtils = require('TouchEventUtils');\n\nvar keyMirror = require('keyMirror');\nvar queryLayoutByID = require('queryLayoutByID');\n\n/**\n * `Touchable`: Taps done right.\n *\n * You hook your `ResponderEventPlugin` events into `Touchable`. `Touchable`\n * will measure time/geometry and tells you when to give feedback to the user.\n *\n * ====================== Touchable Tutorial ===============================\n * The `Touchable` mixin helps you handle the \"press\" interaction. It analyzes\n * the geometry of elements, and observes when another responder (scroll view\n * etc) has stolen the touch lock. It notifies your component when it should\n * give feedback to the user. (bouncing/highlighting/unhighlighting).\n *\n * - When a touch was activated (typically you highlight)\n * - When a touch was deactivated (typically you unhighlight)\n * - When a touch was \"pressed\" - a touch ended while still within the geometry\n * of the element, and no other element (like scroller) has \"stolen\" touch\n * lock (\"responder\") (Typically you bounce the element).\n *\n * A good tap interaction isn't as simple as you might think. There should be a\n * slight delay before showing a highlight when starting a touch. If a\n * subsequent touch move exceeds the boundary of the elemement, it should\n * unhighlight, but if that same touch is brought back within the boundary, it\n * should rehighlight again. A touch can move in and out of that boundary\n * several times, each time toggling highlighting, but a \"press\" is only\n * triggered if that touch ends while within the element's boundary and no\n * scroller (or anything else) has stolen the lock on touches.\n *\n * To create a new type of component that handles interaction using the\n * `Touchable` mixin, do the following:\n *\n * - Initialize the `Touchable` state.\n *\n * getInitialState: function() {\n * return merge(this.touchableGetInitialState(), yourComponentState);\n * }\n *\n * - Choose the rendered component who's touches should start the interactive\n * sequence. On that rendered node, forward all `Touchable` responder\n * handlers. You can choose any rendered node you like. Choose a node who's\n * hit target you'd like to instigate the interaction sequence:\n *\n * // In render function:\n * return (\n * <div\n * onStartShouldSetResponder={this.touchableHandleStartShouldSetResponder}\n * onResponderTerminationRequest={this.touchableHandleResponderTerminationRequest}\n * onResponderGrant={this.touchableHandleResponderGrant}\n * onResponderMove={this.touchableHandleResponderMove}\n * onResponderRelease={this.touchableHandleResponderRelease}\n * onResponderTerminate={this.touchableHandleResponderTerminate}>\n * <div>\n * Even though the hit detection/interactions are triggered by the\n * wrapping (typically larger) node, we usually end up implementing\n * custom logic that highlights this inner one.\n * </div>\n * </div>\n * );\n *\n * - You may set up your own handlers for each of these events, so long as you\n * also invoke the `touchable*` handlers inside of your custom handler.\n *\n * - Implement the handlers on your component class in order to provide\n * feedback to the user. See documentation for each of these class methods\n * that you should implement.\n *\n * touchableHandlePress: function() {\n * this.performBounceAnimation(); // or whatever you want to do.\n * },\n * touchableHandleActivePressIn: function() {\n * this.beginHighlighting(...); // Whatever you like to convey activation\n * },\n * touchableHandleActivePressOut: function() {\n * this.endHighlighting(...); // Whatever you like to convey deactivation\n * },\n *\n * - There are more advanced methods you can implement (see documentation below):\n * touchableGetHighlightDelayMS: function() {\n * return 20;\n * }\n * // In practice, *always* use a predeclared constant (conserve memory).\n * touchableGetPressRectOffset: function() {\n * return {top: 20, left: 20, right: 20, bottom: 100};\n * }\n */\n\n/**\n * Touchable states.\n */\nvar States = keyMirror({\n NOT_RESPONDER: null, // Not the responder\n RESPONDER_INACTIVE_PRESS_IN: null, // Responder, inactive, in the `PressRect`\n RESPONDER_INACTIVE_PRESS_OUT: null, // Responder, inactive, out of `PressRect`\n RESPONDER_ACTIVE_PRESS_IN: null, // Responder, active, in the `PressRect`\n RESPONDER_ACTIVE_PRESS_OUT: null, // Responder, active, out of `PressRect`\n RESPONDER_ACTIVE_LONG_PRESS_IN: null, // Responder, active, in the `PressRect`, after long press threshold\n RESPONDER_ACTIVE_LONG_PRESS_OUT: null, // Responder, active, out of `PressRect`, after long press threshold\n ERROR: null\n});\n\n/**\n * Quick lookup map for states that are considered to be \"active\"\n */\nvar IsActive = {\n RESPONDER_ACTIVE_PRESS_OUT: true,\n RESPONDER_ACTIVE_PRESS_IN: true\n};\n\n/**\n * Quick lookup for states that are considered to be \"pressing\" and are\n * therefore eligible to result in a \"selection\" if the press stops.\n */\nvar IsPressingIn = {\n RESPONDER_INACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\nvar IsLongPressingIn = {\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\n/**\n * Inputs to the state machine.\n */\nvar Signals = keyMirror({\n DELAY: null,\n RESPONDER_GRANT: null,\n RESPONDER_RELEASE: null,\n RESPONDER_TERMINATED: null,\n ENTER_PRESS_RECT: null,\n LEAVE_PRESS_RECT: null,\n LONG_PRESS_DETECTED: null,\n});\n\n/**\n * Mapping from States x Signals => States\n */\nvar Transitions = {\n NOT_RESPONDER: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n RESPONDER_RELEASE: States.ERROR,\n RESPONDER_TERMINATED: States.ERROR,\n ENTER_PRESS_RECT: States.ERROR,\n LEAVE_PRESS_RECT: States.ERROR,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_INACTIVE_PRESS_IN: {\n DELAY: States.RESPONDER_ACTIVE_PRESS_IN,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_INACTIVE_PRESS_OUT: {\n DELAY: States.RESPONDER_ACTIVE_PRESS_OUT,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_ACTIVE_PRESS_IN: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n },\n RESPONDER_ACTIVE_PRESS_OUT: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_ACTIVE_LONG_PRESS_IN: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n },\n RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n error: {\n DELAY: States.NOT_RESPONDER,\n RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.NOT_RESPONDER,\n LEAVE_PRESS_RECT: States.NOT_RESPONDER,\n LONG_PRESS_DETECTED: States.NOT_RESPONDER,\n }\n};\n\n// ==== Typical Constants for integrating into UI components ====\n// var HIT_EXPAND_PX = 20;\n// var HIT_VERT_OFFSET_PX = 10;\nvar HIGHLIGHT_DELAY_MS = 130;\n\nvar PRESS_EXPAND_PX = 20;\n\nvar LONG_PRESS_THRESHOLD = 500;\n\nvar LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\n\nvar LONG_PRESS_ALLOWED_MOVEMENT = 10;\n\n// Default amount \"active\" region protrudes beyond box\n\n/**\n * By convention, methods prefixed with underscores are meant to be @private,\n * and not @protected. Mixers shouldn't access them - not even to provide them\n * as callback handlers.\n *\n *\n * ========== Geometry =========\n * `Touchable` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n * +--------------------------+\n * | | - \"Start\" events in `HitRect` cause `HitRect`\n * | +--------------------+ | to become the responder.\n * | | +--------------+ | | - `HitRect` is typically expanded around\n * | | | | | | the `VisualRect`, but shifted downward.\n * | | | VisualRect | | | - After pressing down, after some delay,\n * | | | | | | and before letting up, the Visual React\n * | | +--------------+ | | will become \"active\". This makes it eligible\n * | | HitRect | | for being highlighted (so long as the\n * | +--------------------+ | press remains in the `PressRect`).\n * | PressRect o |\n * +----------------------|---+\n * Out Region |\n * +-----+ This gap between the `HitRect` and\n * `PressRect` allows a touch to move far away\n * from the original hit rect, and remain\n * highlighted, and eligible for a \"Press\".\n * Customize this via\n * `touchableGetPressRectOffset()`.\n *\n *\n *\n * ======= State Machine =======\n *\n * +-------------+ <---+ RESPONDER_RELEASE\n * |NOT_RESPONDER|\n * +-------------+ <---+ RESPONDER_TERMINATED\n * +\n * | RESPONDER_GRANT (HitRect)\n * v\n * +---------------------------+ DELAY +-------------------------+ T + DELAY +------------------------------+\n * |RESPONDER_INACTIVE_PRESS_IN|+-------->|RESPONDER_ACTIVE_PRESS_IN| +------------> |RESPONDER_ACTIVE_LONG_PRESS_IN|\n * +---------------------------+ +-------------------------+ +------------------------------+\n * + ^ + ^ + ^\n * |LEAVE_ |ENTER_ |LEAVE_ |ENTER_ |LEAVE_ |ENTER_\n * |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT\n * | | | | | |\n * v + v + v +\n * +----------------------------+ DELAY +--------------------------+ +-------------------------------+\n * |RESPONDER_INACTIVE_PRESS_OUT|+------->|RESPONDER_ACTIVE_PRESS_OUT| |RESPONDER_ACTIVE_LONG_PRESS_OUT|\n * +----------------------------+ +--------------------------+ +-------------------------------+\n *\n * T + DELAY => LONG_PRESS_DELAY_MS + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the `touchableHandlePress` abstract method invocation that occurs\n * when a responder is released while in either of the \"Press\" states.\n *\n * The other important side effects are the highlight abstract method\n * invocations (internal callbacks) to be implemented by the mixer.\n *\n *\n * @lends Touchable.prototype\n */\nvar TouchableMixin = {\n /**\n * It's prefer that mixins determine state in this way, having the class\n * explicitly mix the state in the one and only `getInitialState` method.\n *\n * @return {object} State object to be placed inside of\n * `this.state.touchable`.\n */\n touchableGetInitialState: function() {\n return {\n touchable: {touchState: undefined, responderID: null}\n };\n },\n\n // ==== Hooks to Gesture Responder system ====\n /**\n * Must return true if embedded in a native platform scroll view.\n */\n touchableHandleResponderTerminationRequest: function() {\n return !this.props.rejectResponderTermination;\n },\n\n /**\n * Must return true to start the process of `Touchable`.\n */\n touchableHandleStartShouldSetResponder: function() {\n return true;\n },\n\n /**\n * Return true to cancel press on long press.\n */\n touchableLongPressCancelsPress: function () {\n return true;\n },\n\n /**\n * Place as callback for a DOM element's `onResponderGrant` event.\n * @param {SyntheticEvent} e Synthetic event from event system.\n * @param {string} dispatchID ID of node that e was dispatched to.\n *\n */\n touchableHandleResponderGrant: function(e, dispatchID) {\n // Since e is used in a callback invoked on another event loop\n // (as in setTimeout etc), we need to call e.persist() on the\n // event to make sure it doesn't get reused in the event object pool.\n e.persist();\n\n this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n this.pressOutDelayTimeout = null;\n\n this.state.touchable.touchState = States.NOT_RESPONDER;\n this.state.touchable.responderID = dispatchID;\n this._receiveSignal(Signals.RESPONDER_GRANT, e);\n var delayMS =\n this.touchableGetHighlightDelayMS !== undefined ?\n Math.max(this.touchableGetHighlightDelayMS(), 0) : HIGHLIGHT_DELAY_MS;\n delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n if (delayMS !== 0) {\n this.touchableDelayTimeout = setTimeout(\n this._handleDelay.bind(this, e),\n delayMS\n );\n } else {\n this._handleDelay(e);\n }\n\n var longDelayMS =\n this.touchableGetLongPressDelayMS !== undefined ?\n Math.max(this.touchableGetLongPressDelayMS(), 10) : LONG_PRESS_DELAY_MS;\n longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n this.longPressDelayTimeout = setTimeout(\n this._handleLongDelay.bind(this, e),\n longDelayMS + delayMS\n );\n },\n\n /**\n * Place as callback for a DOM element's `onResponderRelease` event.\n */\n touchableHandleResponderRelease: function(e) {\n this._receiveSignal(Signals.RESPONDER_RELEASE, e);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderTerminate` event.\n */\n touchableHandleResponderTerminate: function(e) {\n this._receiveSignal(Signals.RESPONDER_TERMINATED, e);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderMove` event.\n */\n touchableHandleResponderMove: function(e) {\n // Not enough time elapsed yet, wait for highlight -\n // this is just a perf optimization.\n if (this.state.touchable.touchState === States.RESPONDER_INACTIVE_PRESS_IN) {\n return;\n }\n\n // Measurement may not have returned yet.\n if (!this.state.touchable.positionOnActivate) {\n return;\n }\n\n var positionOnActivate = this.state.touchable.positionOnActivate;\n var dimensionsOnActivate = this.state.touchable.dimensionsOnActivate;\n var pressRectOffset = this.touchableGetPressRectOffset ?\n this.touchableGetPressRectOffset() : null;\n var pressExpandLeft =\n pressRectOffset.left != null ? pressRectOffset.left : PRESS_EXPAND_PX;\n var pressExpandTop =\n pressRectOffset.top != null ? pressRectOffset.top : PRESS_EXPAND_PX;\n var pressExpandRight =\n pressRectOffset.right != null ? pressRectOffset.right : PRESS_EXPAND_PX;\n var pressExpandBottom =\n pressRectOffset.bottom != null ? pressRectOffset.bottom : PRESS_EXPAND_PX;\n\n var touch = TouchEventUtils.extractSingleTouch(e.nativeEvent);\n var pageX = touch && touch.pageX;\n var pageY = touch && touch.pageY;\n\n if (this.pressInLocation) {\n var movedDistance = this._getDistanceBetweenPoints(pageX, pageY, this.pressInLocation.pageX, this.pressInLocation.pageY);\n if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n this._cancelLongPressDelayTimeout();\n }\n }\n\n var isTouchWithinActive =\n pageX > positionOnActivate.left - pressExpandLeft &&\n pageY > positionOnActivate.top - pressExpandTop &&\n pageX <\n positionOnActivate.left +\n dimensionsOnActivate.width +\n pressExpandRight &&\n pageY <\n positionOnActivate.top +\n dimensionsOnActivate.height +\n pressExpandBottom;\n if (isTouchWithinActive) {\n this._receiveSignal(Signals.ENTER_PRESS_RECT, e);\n } else {\n this._cancelLongPressDelayTimeout();\n this._receiveSignal(Signals.LEAVE_PRESS_RECT, e);\n }\n },\n\n // ==== Abstract Application Callbacks ====\n\n /**\n * Invoked when the item should be highlighted. Mixers should implement this\n * to visually distinguish the `VisualRect` so that the user knows that\n * releasing a touch will result in a \"selection\" (analog to click).\n *\n * @abstract\n * touchableHandleActivePressIn: function,\n */\n\n /**\n * Invoked when the item is \"active\" (in that it is still eligible to become\n * a \"select\") but the touch has left the `PressRect`. Usually the mixer will\n * want to unhighlight the `VisualRect`. If the user (while pressing) moves\n * back into the `PressRect` `touchableHandleActivePressIn` will be invoked\n * again and the mixer should probably highlight the `VisualRect` again. This\n * event will not fire on an `touchEnd/mouseUp` event, only move events while\n * the user is depressing the mouse/touch.\n *\n * @abstract\n * touchableHandleActivePressOut: function\n */\n\n /**\n * Invoked when the item is \"selected\" - meaning the interaction ended by\n * letting up while the item was either in the state\n * `RESPONDER_ACTIVE_PRESS_IN` or `RESPONDER_INACTIVE_PRESS_IN`.\n *\n * @abstract\n * touchableHandlePress: function\n */\n\n /**\n * Invoked when the item is long pressed - meaning the interaction ended by\n * letting up while the item was in `RESPONDER_ACTIVE_LONG_PRESS_IN`. If\n * `touchableHandleLongPress` is *not* provided, `touchableHandlePress` will\n * be called as it normally is. If `touchableHandleLongPress` is provided, by\n * default any `touchableHandlePress` callback will not be invoked. To\n * override this default behavior, override `touchableLongPressCancelsPress`\n * to return false. As a result, `touchableHandlePress` will be called when\n * lifting up, even if `touchableHandleLongPress` has also been called.\n *\n * @abstract\n * touchableHandleLongPress: function\n */\n\n /**\n * Returns the number of millis to wait before triggering a highlight.\n *\n * @abstract\n * touchableGetHighlightDelayMS: function\n */\n\n /**\n * Returns the amount to extend the `HitRect` into the `PressRect`. Positive\n * numbers mean the size expands outwards.\n *\n * @abstract\n * touchableGetPressRectOffset: function\n */\n\n\n\n // ==== Internal Logic ====\n\n /**\n * Measures the `HitRect` node on activation. The Bounding rectangle is with\n * respect to viewport - not page, so adding the `pageXOffset/pageYOffset`\n * should result in points that are in the same coordinate system as an\n * event's `globalX/globalY` data values.\n *\n * - Consider caching this for the lifetime of the component, or possibly\n * being able to share this cache between any `ScrollMap` view.\n *\n * @sideeffects\n * @private\n */\n _remeasureMetricsOnActivation: function() {\n queryLayoutByID(\n this.state.touchable.responderID,\n null,\n this._handleQueryLayout\n );\n },\n\n _handleQueryLayout: function(l, t, w, h, globalX, globalY) {\n this.state.touchable.positionOnActivate &&\n Position.release(this.state.touchable.positionOnActivate);\n this.state.touchable.dimensionsOnActivate &&\n BoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\n this.state.touchable.positionOnActivate = Position.getPooled(globalX, globalY);\n this.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(w, h);\n },\n\n _handleDelay: function(e) {\n this.touchableDelayTimeout = null;\n this._receiveSignal(Signals.DELAY, e);\n },\n\n _handleLongDelay: function(e) {\n this.longPressDelayTimeout = null;\n this._receiveSignal(Signals.LONG_PRESS_DETECTED, e);\n },\n\n /**\n * Receives a state machine signal, performs side effects of the transition\n * and stores the new state. Validates the transition as well.\n *\n * @param {Signals} signal State machine signal.\n * @throws Error if invalid state transition or unrecognized signal.\n * @sideeffects\n */\n _receiveSignal: function(signal, e) {\n var curState = this.state.touchable.touchState;\n if (!(Transitions[curState] && Transitions[curState][signal])) {\n throw new Error(\n 'Unrecognized signal `' + signal + '` or state `' + curState +\n '` for Touchable responder `' + this.state.touchable.responderID + '`'\n );\n }\n var nextState = Transitions[curState][signal];\n if (nextState === States.ERROR) {\n throw new Error(\n 'Touchable cannot transition from `' + curState + '` to `' + signal +\n '` for responder `' + this.state.touchable.responderID + '`'\n );\n }\n if (curState !== nextState) {\n this._performSideEffectsForTransition(curState, nextState, signal, e);\n this.state.touchable.touchState = nextState;\n }\n },\n\n _cancelLongPressDelayTimeout: function () {\n this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n this.longPressDelayTimeout = null;\n },\n\n _isHighlight: function (state) {\n return state === States.RESPONDER_ACTIVE_PRESS_IN ||\n state === States.RESPONDER_ACTIVE_LONG_PRESS_IN;\n },\n\n _savePressInLocation: function(e) {\n var touch = TouchEventUtils.extractSingleTouch(e.nativeEvent);\n var pageX = touch && touch.pageX;\n var pageY = touch && touch.pageY;\n this.pressInLocation = {pageX: pageX, pageY: pageY};\n },\n\n _getDistanceBetweenPoints: function (aX, aY, bX, bY) {\n var deltaX = aX - bX;\n var deltaY = aY - bY;\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n },\n\n /**\n * Will perform a transition between touchable states, and identify any\n * highlighting or unhighlighting that must be performed for this particular\n * transition.\n *\n * @param {States} curState Current Touchable state.\n * @param {States} nextState Next Touchable state.\n * @param {Signal} signal Signal that triggered the transition.\n * @param {Event} e Native event.\n * @sideeffects\n */\n _performSideEffectsForTransition: function(curState, nextState, signal, e) {\n var curIsHighlight = this._isHighlight(curState);\n var newIsHighlight = this._isHighlight(nextState);\n\n var isFinalSignal =\n signal === Signals.RESPONDER_TERMINATED ||\n signal === Signals.RESPONDER_RELEASE;\n\n if (isFinalSignal) {\n this._cancelLongPressDelayTimeout();\n }\n\n if (!IsActive[curState] && IsActive[nextState]) {\n this._remeasureMetricsOnActivation();\n }\n\n if (IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED) {\n this.touchableHandleLongPress && this.touchableHandleLongPress();\n }\n\n if (newIsHighlight && !curIsHighlight) {\n this._savePressInLocation(e);\n this.touchableHandleActivePressIn && this.touchableHandleActivePressIn();\n } else if (!newIsHighlight && curIsHighlight && this.touchableHandleActivePressOut) {\n if (this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()) {\n this.pressOutDelayTimeout = this.setTimeout(function() {\n this.touchableHandleActivePressOut();\n }, this.touchableGetPressOutDelayMS());\n } else {\n this.touchableHandleActivePressOut();\n }\n }\n\n if (IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE) {\n var hasLongPressHandler = !!this.props.onLongPress;\n var pressIsLongButStillCallOnPress =\n IsLongPressingIn[curState] && ( // We *are* long pressing..\n !hasLongPressHandler || // But either has no long handler\n !this.touchableLongPressCancelsPress() // or we're told to ignore it.\n );\n\n var shouldInvokePress = !IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\n if (shouldInvokePress && this.touchableHandlePress) {\n this.touchableHandlePress(e);\n }\n }\n\n this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n this.touchableDelayTimeout = null;\n }\n\n};\n\nvar Touchable = {\n Mixin: TouchableMixin\n};\n\nmodule.exports = Touchable;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/interactions/Touchable/Touchable.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/BoundingDimensions.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar twoArgumentPooler=PooledClass.twoArgumentPooler;\n\n\n\n\n\n\n\n\nfunction BoundingDimensions(width,height){\nthis.width = width;\nthis.height = height;}\n\n\n\n\n\n\nBoundingDimensions.getPooledFromElement = function(element){\nreturn BoundingDimensions.getPooled(\nelement.offsetWidth,\nelement.offsetHeight);};\n\n\n\nPooledClass.addPoolingTo(BoundingDimensions,twoArgumentPooler);\n\nmodule.exports = BoundingDimensions;","sourceCode":"/**\n * @providesModule BoundingDimensions\n */\n\n\"use strict\";\n\nvar PooledClass = require('PooledClass');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * PooledClass representing the bounding rectangle of a region.\n *\n * @param {number} width Width of bounding rectangle.\n * @param {number} height Height of bounding rectangle.\n * @constructor BoundingDimensions\n */\nfunction BoundingDimensions(width, height) {\n this.width = width;\n this.height = height;\n}\n\n/**\n * @param {HTMLElement} element Element to return `BoundingDimensions` for.\n * @return {BoundingDimensions} Bounding dimensions of `element`.\n */\nBoundingDimensions.getPooledFromElement = function(element) {\n return BoundingDimensions.getPooled(\n element.offsetWidth,\n element.offsetHeight\n );\n};\n\nPooledClass.addPoolingTo(BoundingDimensions, twoArgumentPooler);\n\nmodule.exports = BoundingDimensions;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/BoundingDimensions.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/Position.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar twoArgumentPooler=PooledClass.twoArgumentPooler;\n\n\n\n\n\n\n\n\n\nfunction Position(left,top){\nthis.left = left;\nthis.top = top;}\n\n\nPooledClass.addPoolingTo(Position,twoArgumentPooler);\n\nmodule.exports = Position;","sourceCode":"/**\n * @providesModule Position\n */\n\n\"use strict\";\n\nvar PooledClass = require('PooledClass');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * Position does not expose methods for construction via an `HTMLDOMElement`,\n * because it isn't meaningful to construct such a thing without first defining\n * a frame of refrence.\n *\n * @param {number} windowStartKey Key that window starts at.\n * @param {number} windowEndKey Key that window ends at.\n */\nfunction Position(left, top) {\n this.left = left;\n this.top = top;\n}\n\nPooledClass.addPoolingTo(Position, twoArgumentPooler);\n\nmodule.exports = Position;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/Position.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/TouchEventUtils.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nTouchEventUtils={\n\n\n\n\n\n\n\n\n\n\nextractSingleTouch:function(nativeEvent){\nvar touches=nativeEvent.touches;\nvar changedTouches=nativeEvent.changedTouches;\nvar hasTouches=touches && touches.length > 0;\nvar hasChangedTouches=changedTouches && changedTouches.length > 0;\n\nreturn !hasTouches && hasChangedTouches?changedTouches[0]:\nhasTouches?touches[0]:\nnativeEvent;}};\n\n\n\nmodule.exports = TouchEventUtils;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchEventUtils\n */\n\nvar TouchEventUtils = {\n /**\n * Utility function for common case of extracting out the primary touch from a\n * touch event.\n * - `touchEnd` events usually do not have the `touches` property.\n * http://stackoverflow.com/questions/3666929/\n * mobile-sarai-touchend-event-not-firing-when-last-touch-is-removed\n *\n * @param {Event} nativeEvent Native event that may or may not be a touch.\n * @return {TouchesObject?} an object with pageX and pageY or null.\n */\n extractSingleTouch: function(nativeEvent) {\n var touches = nativeEvent.touches;\n var changedTouches = nativeEvent.changedTouches;\n var hasTouches = touches && touches.length > 0;\n var hasChangedTouches = changedTouches && changedTouches.length > 0;\n\n return !hasTouches && hasChangedTouches ? changedTouches[0] :\n hasTouches ? touches[0] :\n nativeEvent;\n }\n};\n\nmodule.exports = TouchEventUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/TouchEventUtils.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/RKBackendNode/queryLayoutByID.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar RCTUIManager=require('NativeModules').UIManager;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar queryLayoutByID=function(\nrootNodeID,\nonError,\nonSuccess)\n{\n\nRCTUIManager.measure(\nReactNativeTagHandles.rootNodeIDToTag[rootNodeID],\nonSuccess);};\n\n\n\nmodule.exports = queryLayoutByID;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule queryLayoutByID\n * @flow\n */\n'use strict';\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar RCTUIManager = require('NativeModules').UIManager;\n\ntype OnSuccessCallback = (\n left: number,\n top: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n) => void\n\n// I don't know what type error is...\ntype OnErrorCallback = (error: any) => void\n\n/**\n * Queries the layout of a view. The layout does not reflect the element as\n * seen by the user, rather it reflects the position within the layout system,\n * before any transforms are applied.\n *\n * The only other requirement is that the `pageX, pageY` values be in the same\n * coordinate system that events' `pageX/Y` are reported. That means that for\n * the web, `pageXOffset/pageYOffset` should be added to to\n * getBoundingClientRect to make consistent with touches.\n *\n * var pageXOffset = window.pageXOffset;\n * var pageYOffset = window.pageYOffset;\n *\n * This is an IOS specific implementation.\n *\n * @param {string} rootNodeID ID of the platform specific node to be measured.\n * @param {function} onError `func(error)`\n * @param {function} onSuccess `func(left, top, width, height, pageX, pageY)`\n */\nvar queryLayoutByID = function(\n rootNodeID: string,\n onError: OnErrorCallback,\n onSuccess: OnSuccessCallback\n): void {\n // Native bridge doesn't *yet* surface errors.\n RCTUIManager.measure(\n ReactNativeTagHandles.rootNodeIDToTag[rootNodeID],\n onSuccess\n );\n};\n\nmodule.exports = queryLayoutByID;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/RKBackendNode/queryLayoutByID.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TextInput/TextInput.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar DocumentSelectionState=require('DocumentSelectionState');\nvar EventEmitter=require('EventEmitter');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar Platform=require('Platform');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar ReactChildren=require('ReactChildren');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar TextInputState=require('TextInputState');\nvar TimerMixin=require('react-timer-mixin');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar emptyFunction=require('emptyFunction');\nvar invariant=require('invariant');\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar onlyMultiline={\nonSelectionChange:true,\nonTextInput:true,\nchildren:true};\n\n\nvar notMultiline={\nonSubmitEditing:true};\n\n\nvar AndroidTextInputAttributes={\nautoCapitalize:true,\nautoCorrect:true,\nautoFocus:true,\ntextAlign:true,\ntextAlignVertical:true,\nkeyboardType:true,\nmultiline:true,\npassword:true,\nplaceholder:true,\nplaceholderTextColor:true,\ntext:true,\ntestID:true,\nunderlineColorAndroid:true};\n\n\nvar viewConfigAndroid={\nuiViewClassName:'AndroidTextInput',\nvalidAttributes:AndroidTextInputAttributes};\n\n\nvar RCTTextView=requireNativeComponent('RCTTextView',null);\nvar RCTTextField=requireNativeComponent('RCTTextField',null);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TextInput=React.createClass({displayName:'TextInput',\npropTypes:{\n\n\n\n\n\n\n\n\nautoCapitalize:PropTypes.oneOf([\n'none',\n'sentences',\n'words',\n'characters']),\n\n\n\n\nautoCorrect:PropTypes.bool,\n\n\n\nautoFocus:PropTypes.bool,\n\n\n\ntextAlign:PropTypes.oneOf([\n'start',\n'center',\n'end']),\n\ntextAlignVertical:PropTypes.oneOf([\n'top',\n'center',\n'bottom']),\n\n\n\n\neditable:PropTypes.bool,\n\n\n\nkeyboardType:PropTypes.oneOf([\n\n'default',\n'numeric',\n'email-address',\n\n'ascii-capable',\n'numbers-and-punctuation',\n'url',\n'number-pad',\n'phone-pad',\n'name-phone-pad',\n'decimal-pad',\n'twitter',\n'web-search']),\n\n\n\n\nreturnKeyType:PropTypes.oneOf([\n'default',\n'go',\n'google',\n'join',\n'next',\n'route',\n'search',\n'send',\n'yahoo',\n'done',\n'emergency-call']),\n\n\n\n\n\nenablesReturnKeyAutomatically:PropTypes.bool,\n\n\n\nmultiline:PropTypes.bool,\n\n\n\nonBlur:PropTypes.func,\n\n\n\nonFocus:PropTypes.func,\n\n\n\nonChange:PropTypes.func,\n\n\n\n\nonChangeText:PropTypes.func,\n\n\n\nonEndEditing:PropTypes.func,\n\n\n\nonSubmitEditing:PropTypes.func,\n\n\n\nonLayout:PropTypes.func,\n\n\n\n\npassword:PropTypes.bool,\n\n\n\nplaceholder:PropTypes.string,\n\n\n\nplaceholderTextColor:PropTypes.string,\n\n\n\n\nselectionState:PropTypes.instanceOf(DocumentSelectionState),\n\n\n\nvalue:PropTypes.string,\n\n\n\n\n\n\nbufferDelay:PropTypes.number,\n\n\n\n\n\ncontrolled:PropTypes.bool,\n\n\n\nclearButtonMode:PropTypes.oneOf([\n'never',\n'while-editing',\n'unless-editing',\n'always']),\n\n\n\n\nclearTextOnFocus:PropTypes.bool,\n\n\n\nselectTextOnFocus:PropTypes.bool,\n\n\n\nstyle:Text.propTypes.style,\n\n\n\ntestID:PropTypes.string,\n\n\n\nunderlineColorAndroid:PropTypes.string},\n\n\n\n\n\n\nmixins:[NativeMethodsMixin,TimerMixin],\n\nviewConfig:Platform.OS === 'ios'?RCTTextField.viewConfig:\nPlatform.OS === 'android'?viewConfigAndroid:{},\n\nisFocused:function(){\nreturn TextInputState.currentlyFocusedField() === \nReact.findNodeHandle(this.refs.input);},\n\n\ngetDefaultProps:function(){\nreturn {\nbufferDelay:100};},\n\n\n\ngetInitialState:function(){\nreturn {\nmostRecentEventCounter:0,\nbufferedValue:this.props.value};},\n\n\n\ncontextTypes:{\nonFocusRequested:React.PropTypes.func,\nfocusEmitter:React.PropTypes.instanceOf(EventEmitter)},\n\n\n_focusSubscription:undefined,\n\ncomponentDidMount:function(){var _this=this;\nif(!this.context.focusEmitter){\nif(this.props.autoFocus){\nthis.requestAnimationFrame(this.focus);}\n\nreturn;}\n\nthis._focusSubscription = this.context.focusEmitter.addListener(\n'focus',\nfunction(el){\nif(_this === el){\n_this.requestAnimationFrame(_this.focus);}else \nif(_this.isFocused()){\n_this.blur();}});\n\n\n\nif(this.props.autoFocus){\nthis.context.onFocusRequested(this);}},\n\n\n\ncomponentWillUnmount:function(){\nthis._focusSubscription && this._focusSubscription.remove();\nif(this.isFocused()){\nthis.blur();}},\n\n\n\n_bufferTimeout:undefined,\n\ncomponentWillReceiveProps:function(newProps){var _this2=this;\nif(newProps.value !== this.props.value){\nif(!this.isFocused()){\n\n\nthis.setState({bufferedValue:newProps.value});}else \n{\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nthis.clearTimeout(this._bufferTimeout);\nthis._bufferTimeout = this.setTimeout(\nfunction(){return _this2.setState({bufferedValue:newProps.value});},\nthis.props.bufferDelay);}}},\n\n\n\n\n\ngetChildContext:function(){\nreturn {isInAParentText:true};},\n\n\nchildContextTypes:{\nisInAParentText:React.PropTypes.bool},\n\n\nrender:function(){\nif(Platform.OS === 'ios'){\nreturn this._renderIOS();}else \nif(Platform.OS === 'android'){\nreturn this._renderAndroid();}},\n\n\n\n_renderIOS:function(){\nvar textContainer;\n\nvar props=Object.assign({},this.props);\nprops.style = [styles.input,this.props.style];\n\nif(!props.multiline){\nfor(var propKey in onlyMultiline) {\nif(props[propKey]){\nthrow new Error(\n'TextInput prop `' + propKey + '` is only supported with multiline.');}}\n\n\n\ntextContainer = \nReact.createElement(RCTTextField,_extends({\nref:'input'},\nprops,{\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonSelectionChangeShouldSetResponder:function(){return true;},\ntext:this.state.bufferedValue}));}else \n\n{\nfor(var propKey in notMultiline) {\nif(props[propKey]){\nthrow new Error(\n'TextInput prop `' + propKey + '` cannot be used with multiline.');}}\n\n\n\n\nvar children=props.children;\nvar childCount=0;\nReactChildren.forEach(children,function(){return ++childCount;});\ninvariant(\n!(props.value && childCount),\n'Cannot specify both value and children.');\n\nif(childCount > 1){\nchildren = React.createElement(Text,null,children);}\n\nif(props.inputView){\nchildren = [children,props.inputView];}\n\ntextContainer = \nReact.createElement(RCTTextView,_extends({\nref:'input'},\nprops,{\nchildren:children,\nmostRecentEventCounter:this.state.mostRecentEventCounter,\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonSelectionChange:this._onSelectionChange,\nonTextInput:this._onTextInput,\nonSelectionChangeShouldSetResponder:emptyFunction.thatReturnsTrue,\ntext:this.state.bufferedValue}));}\n\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,{\nonPress:this._onPress,\nrejectResponderTermination:true,\ntestID:props.testID},\ntextContainer));},\n\n\n\n\n_renderAndroid:function(){\nvar autoCapitalize=RCTUIManager.UIText.AutocapitalizationType[this.props.autoCapitalize];\nvar textAlign=\nRCTUIManager.AndroidTextInput.Constants.TextAlign[this.props.textAlign];\nvar textAlignVertical=\nRCTUIManager.AndroidTextInput.Constants.TextAlignVertical[this.props.textAlignVertical];\nvar children=this.props.children;\nvar childCount=0;\nReactChildren.forEach(children,function(){return ++childCount;});\ninvariant(\n!(this.props.value && childCount),\n'Cannot specify both value and children.');\n\nif(childCount > 1){\nchildren = React.createElement(Text,null,children);}\n\nvar textContainer=\nReact.createElement(AndroidTextInput,{\nref:'input',\nstyle:[this.props.style],\nautoCapitalize:autoCapitalize,\nautoCorrect:this.props.autoCorrect,\ntextAlign:textAlign,\ntextAlignVertical:textAlignVertical,\nkeyboardType:this.props.keyboardType,\nmultiline:this.props.multiline,\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonTextInput:this._onTextInput,\nonEndEditing:this.props.onEndEditing,\nonSubmitEditing:this.props.onSubmitEditing,\nonLayout:this.props.onLayout,\npassword:this.props.password || this.props.secureTextEntry,\nplaceholder:this.props.placeholder,\nplaceholderTextColor:this.props.placeholderTextColor,\ntext:this.state.bufferedValue,\nunderlineColorAndroid:this.props.underlineColorAndroid,\nchildren:children});\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,{\nonPress:this._onPress,\ntestID:this.props.testID},\ntextContainer));},\n\n\n\n\n_onFocus:function(event){\nif(this.props.onFocus){\nthis.props.onFocus(event);}},\n\n\n\n_onPress:function(event){\nthis.focus();},\n\n\n_onChange:function(event){\nif(this.props.controlled && event.nativeEvent.text !== this.props.value){\nthis.refs.input.setNativeProps({text:this.props.value});}\n\nthis.props.onChange && this.props.onChange(event);\nthis.props.onChangeText && this.props.onChangeText(event.nativeEvent.text);},\n\n\n_onBlur:function(event){\nthis.blur();\nif(this.props.onBlur){\nthis.props.onBlur(event);}},\n\n\n\n_onSelectionChange:function(event){\nif(this.props.selectionState){\nvar selection=event.nativeEvent.selection;\nthis.props.selectionState.update(selection.start,selection.end);}\n\nthis.props.onSelectionChange && this.props.onSelectionChange(event);},\n\n\n_onTextInput:function(event){\nthis.props.onTextInput && this.props.onTextInput(event);\nvar counter=event.nativeEvent.eventCounter;\nif(counter > this.state.mostRecentEventCounter){\nthis.setState({mostRecentEventCounter:counter});}}});\n\n\n\n\nvar styles=StyleSheet.create({\ninput:{\nalignSelf:'stretch'}});\n\n\n\nvar AndroidTextInput=createReactNativeComponentClass({\nvalidAttributes:AndroidTextInputAttributes,\nuiViewClassName:'AndroidTextInput'});\n\n\nmodule.exports = TextInput;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TextInput\n * @flow\n */\n'use strict';\n\nvar DocumentSelectionState = require('DocumentSelectionState');\nvar EventEmitter = require('EventEmitter');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar Platform = require('Platform');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar ReactChildren = require('ReactChildren');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar TextInputState = require('TextInputState');\nvar TimerMixin = require('react-timer-mixin');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar emptyFunction = require('emptyFunction');\nvar invariant = require('invariant');\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar onlyMultiline = {\n onSelectionChange: true,\n onTextInput: true,\n children: true,\n};\n\nvar notMultiline = {\n onSubmitEditing: true,\n};\n\nvar AndroidTextInputAttributes = {\n autoCapitalize: true,\n autoCorrect: true,\n autoFocus: true,\n textAlign: true,\n textAlignVertical: true,\n keyboardType: true,\n multiline: true,\n password: true,\n placeholder: true,\n placeholderTextColor: true,\n text: true,\n testID: true,\n underlineColorAndroid: true,\n};\n\nvar viewConfigAndroid = {\n uiViewClassName: 'AndroidTextInput',\n validAttributes: AndroidTextInputAttributes,\n};\n\nvar RCTTextView = requireNativeComponent('RCTTextView', null);\nvar RCTTextField = requireNativeComponent('RCTTextField', null);\n\ntype DefaultProps = {\n bufferDelay: number;\n};\n\ntype Event = Object;\n\n/**\n * A foundational component for inputting text into the app via a\n * keyboard. Props provide configurability for several features, such as\n * auto-correction, auto-capitalization, placeholder text, and different keyboard\n * types, such as a numeric keypad.\n *\n * The simplest use case is to plop down a `TextInput` and subscribe to the\n * `onChangeText` events to read the user input. There are also other events, such\n * as `onSubmitEditing` and `onFocus` that can be subscribed to. A simple\n * example:\n *\n * ```\n * <View>\n * <TextInput\n * style={{height: 40, borderColor: 'gray', borderWidth: 1}}\n * onChangeText={(text) => this.setState({input: text})}\n * />\n * <Text>{'user input: ' + this.state.input}</Text>\n * </View>\n * ```\n *\n * The `value` prop can be used to set the value of the input in order to make\n * the state of the component clear, but <TextInput> does not behave as a true\n * controlled component by default because all operations are asynchronous.\n * Setting `value` once is like setting the default value, but you can change it\n * continuously based on `onChangeText` events as well. If you really want to\n * force the component to always revert to the value you are setting, you can\n * set `controlled={true}`.\n *\n * The `multiline` prop is not supported in all releases, and some props are\n * multiline only.\n */\n\nvar TextInput = React.createClass({\n propTypes: {\n /**\n * Can tell TextInput to automatically capitalize certain characters.\n *\n * - characters: all characters,\n * - words: first letter of each word\n * - sentences: first letter of each sentence (default)\n * - none: don't auto capitalize anything\n */\n autoCapitalize: PropTypes.oneOf([\n 'none',\n 'sentences',\n 'words',\n 'characters',\n ]),\n /**\n * If false, disables auto-correct. Default value is true.\n */\n autoCorrect: PropTypes.bool,\n /**\n * If true, focuses the input on componentDidMount. Default value is false.\n */\n autoFocus: PropTypes.bool,\n /**\n * Set the position of the cursor from where editing will begin.\n */\n textAlign: PropTypes.oneOf([\n 'start',\n 'center',\n 'end',\n ]),\n textAlignVertical: PropTypes.oneOf([\n 'top',\n 'center',\n 'bottom',\n ]),\n /**\n * If false, text is not editable. Default value is true.\n */\n editable: PropTypes.bool,\n /**\n * Determines which keyboard to open, e.g.`numeric`.\n */\n keyboardType: PropTypes.oneOf([\n // Cross-platform\n 'default',\n 'numeric',\n 'email-address',\n // iOS-only\n 'ascii-capable',\n 'numbers-and-punctuation',\n 'url',\n 'number-pad',\n 'phone-pad',\n 'name-phone-pad',\n 'decimal-pad',\n 'twitter',\n 'web-search',\n ]),\n /**\n * Determines how the return key should look.\n */\n returnKeyType: PropTypes.oneOf([\n 'default',\n 'go',\n 'google',\n 'join',\n 'next',\n 'route',\n 'search',\n 'send',\n 'yahoo',\n 'done',\n 'emergency-call',\n ]),\n /**\n * If true, the keyboard disables the return key when there is no text and\n * automatically enables it when there is text. Default value is false.\n */\n enablesReturnKeyAutomatically: PropTypes.bool,\n /**\n * If true, the text input can be multiple lines. Default value is false.\n */\n multiline: PropTypes.bool,\n /**\n * Callback that is called when the text input is blurred\n */\n onBlur: PropTypes.func,\n /**\n * Callback that is called when the text input is focused\n */\n onFocus: PropTypes.func,\n /**\n * Callback that is called when the text input's text changes.\n */\n onChange: PropTypes.func,\n /**\n * Callback that is called when the text input's text changes.\n * Changed text is passed as an argument to the callback handler.\n */\n onChangeText: PropTypes.func,\n /**\n * Callback that is called when text input ends.\n */\n onEndEditing: PropTypes.func,\n /**\n * Callback that is called when the text input's submit button is pressed.\n */\n onSubmitEditing: PropTypes.func,\n /**\n * Invoked on mount and layout changes with {x, y, width, height}.\n */\n onLayout: PropTypes.func,\n /**\n * If true, the text input obscures the text entered so that sensitive text\n * like passwords stay secure. Default value is false.\n */\n password: PropTypes.bool,\n /**\n * The string that will be rendered before text input has been entered\n */\n placeholder: PropTypes.string,\n /**\n * The text color of the placeholder string\n */\n placeholderTextColor: PropTypes.string,\n /**\n * See DocumentSelectionState.js, some state that is responsible for\n * maintaining selection information for a document\n */\n selectionState: PropTypes.instanceOf(DocumentSelectionState),\n /**\n * The default value for the text input\n */\n value: PropTypes.string,\n /**\n * This helps avoid drops characters due to race conditions between JS and\n * the native text input. The default should be fine, but if you're\n * potentially doing very slow operations on every keystroke then you may\n * want to try increasing this.\n */\n bufferDelay: PropTypes.number,\n /**\n * If you really want this to behave as a controlled component, you can set\n * this true, but you will probably see flickering, dropped keystrokes,\n * and/or laggy typing, depending on how you process onChange events.\n */\n controlled: PropTypes.bool,\n /**\n * When the clear button should appear on the right side of the text view\n */\n clearButtonMode: PropTypes.oneOf([\n 'never',\n 'while-editing',\n 'unless-editing',\n 'always',\n ]),\n /**\n * If true, clears the text field automatically when editing begins\n */\n clearTextOnFocus: PropTypes.bool,\n /**\n * If true, selected the text automatically when editing begins\n */\n selectTextOnFocus: PropTypes.bool,\n /**\n * Styles\n */\n style: Text.propTypes.style,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n /**\n * The color of the textInput underline. Is only supported on Android.\n */\n underlineColorAndroid: PropTypes.string,\n },\n\n /**\n * `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We\n * make `this` look like an actual native component class.\n */\n mixins: [NativeMethodsMixin, TimerMixin],\n\n viewConfig: ((Platform.OS === 'ios' ? RCTTextField.viewConfig :\n (Platform.OS === 'android' ? viewConfigAndroid : {})) : Object),\n\n isFocused: function(): boolean {\n return TextInputState.currentlyFocusedField() ===\n React.findNodeHandle(this.refs.input);\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n bufferDelay: 100,\n };\n },\n\n getInitialState: function() {\n return {\n mostRecentEventCounter: 0,\n bufferedValue: this.props.value,\n };\n },\n\n contextTypes: {\n onFocusRequested: React.PropTypes.func,\n focusEmitter: React.PropTypes.instanceOf(EventEmitter),\n },\n\n _focusSubscription: (undefined: ?Function),\n\n componentDidMount: function() {\n if (!this.context.focusEmitter) {\n if (this.props.autoFocus) {\n this.requestAnimationFrame(this.focus);\n }\n return;\n }\n this._focusSubscription = this.context.focusEmitter.addListener(\n 'focus',\n (el) => {\n if (this === el) {\n this.requestAnimationFrame(this.focus);\n } else if (this.isFocused()) {\n this.blur();\n }\n }\n );\n if (this.props.autoFocus) {\n this.context.onFocusRequested(this);\n }\n },\n\n componentWillUnmount: function() {\n this._focusSubscription && this._focusSubscription.remove();\n if (this.isFocused()) {\n this.blur();\n }\n },\n\n _bufferTimeout: (undefined: ?number),\n\n componentWillReceiveProps: function(newProps: {value: any}) {\n if (newProps.value !== this.props.value) {\n if (!this.isFocused()) {\n // Set the value immediately if the input is not focused since that\n // means there is no risk of the user typing immediately.\n this.setState({bufferedValue: newProps.value});\n } else {\n // The following clear and setTimeout buffers the value such that if more\n // characters are typed in quick succession, generating new values, the\n // out of date values will get cancelled before they are ever sent to\n // native.\n //\n // If we don't do this, it's likely the out of date values will blow\n // away recently typed characters in the native input that JS was not\n // yet aware of (since it is informed asynchronously), then the next\n // character will be appended to the older value, dropping the\n // characters in between. Here is a potential sequence of events\n // (recall we have multiple independently serial, interleaved queues):\n //\n // 1) User types 'R' => send 'R' to JS queue.\n // 2) User types 'e' => send 'Re' to JS queue.\n // 3) JS processes 'R' and sends 'R' back to native.\n // 4) Native recieves 'R' and changes input from 'Re' back to 'R'.\n // 5) User types 'a' => send 'Ra' to JS queue.\n // 6) JS processes 'Re' and sends 'Re' back to native.\n // 7) Native recieves 'Re' and changes input from 'R' back to 'Re'.\n // 8) JS processes 'Ra' and sends 'Ra' back to native.\n // 9) Native recieves final 'Ra' from JS - 'e' has been dropped!\n //\n // This isn't 100% foolproop (e.g. if it takes longer than\n // `props.bufferDelay` ms to process one keystroke), and there are of\n // course other potential algorithms to deal with this, but this is a\n // simple solution that seems to reduce the chance of dropped characters\n // drastically without compromising native input responsiveness (e.g. by\n // introducing delay from a synchronization protocol).\n this.clearTimeout(this._bufferTimeout);\n this._bufferTimeout = this.setTimeout(\n () => this.setState({bufferedValue: newProps.value}),\n this.props.bufferDelay\n );\n }\n }\n },\n\n getChildContext: function(): Object {\n return {isInAParentText: true};\n },\n\n childContextTypes: {\n isInAParentText: React.PropTypes.bool\n },\n\n render: function() {\n if (Platform.OS === 'ios') {\n return this._renderIOS();\n } else if (Platform.OS === 'android') {\n return this._renderAndroid();\n }\n },\n\n _renderIOS: function() {\n var textContainer;\n\n var props = Object.assign({},this.props);\n props.style = [styles.input, this.props.style];\n\n if (!props.multiline) {\n for (var propKey in onlyMultiline) {\n if (props[propKey]) {\n throw new Error(\n 'TextInput prop `' + propKey + '` is only supported with multiline.'\n );\n }\n }\n textContainer =\n <RCTTextField\n ref=\"input\"\n {...props}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n onChange={this._onChange}\n onSelectionChangeShouldSetResponder={() => true}\n text={this.state.bufferedValue}\n />;\n } else {\n for (var propKey in notMultiline) {\n if (props[propKey]) {\n throw new Error(\n 'TextInput prop `' + propKey + '` cannot be used with multiline.'\n );\n }\n }\n\n var children = props.children;\n var childCount = 0;\n ReactChildren.forEach(children, () => ++childCount);\n invariant(\n !(props.value && childCount),\n 'Cannot specify both value and children.'\n );\n if (childCount > 1) {\n children = <Text>{children}</Text>;\n }\n if (props.inputView) {\n children = [children, props.inputView];\n }\n textContainer =\n <RCTTextView\n ref=\"input\"\n {...props}\n children={children}\n mostRecentEventCounter={this.state.mostRecentEventCounter}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n onChange={this._onChange}\n onSelectionChange={this._onSelectionChange}\n onTextInput={this._onTextInput}\n onSelectionChangeShouldSetResponder={emptyFunction.thatReturnsTrue}\n text={this.state.bufferedValue}\n />;\n }\n\n return (\n <TouchableWithoutFeedback\n onPress={this._onPress}\n rejectResponderTermination={true}\n testID={props.testID}>\n {textContainer}\n </TouchableWithoutFeedback>\n );\n },\n\n _renderAndroid: function() {\n var autoCapitalize = RCTUIManager.UIText.AutocapitalizationType[this.props.autoCapitalize];\n var textAlign =\n RCTUIManager.AndroidTextInput.Constants.TextAlign[this.props.textAlign];\n var textAlignVertical =\n RCTUIManager.AndroidTextInput.Constants.TextAlignVertical[this.props.textAlignVertical];\n var children = this.props.children;\n var childCount = 0;\n ReactChildren.forEach(children, () => ++childCount);\n invariant(\n !(this.props.value && childCount),\n 'Cannot specify both value and children.'\n );\n if (childCount > 1) {\n children = <Text>{children}</Text>;\n }\n var textContainer =\n <AndroidTextInput\n ref=\"input\"\n style={[this.props.style]}\n autoCapitalize={autoCapitalize}\n autoCorrect={this.props.autoCorrect}\n textAlign={textAlign}\n textAlignVertical={textAlignVertical}\n keyboardType={this.props.keyboardType}\n multiline={this.props.multiline}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n onChange={this._onChange}\n onTextInput={this._onTextInput}\n onEndEditing={this.props.onEndEditing}\n onSubmitEditing={this.props.onSubmitEditing}\n onLayout={this.props.onLayout}\n password={this.props.password || this.props.secureTextEntry}\n placeholder={this.props.placeholder}\n placeholderTextColor={this.props.placeholderTextColor}\n text={this.state.bufferedValue}\n underlineColorAndroid={this.props.underlineColorAndroid}\n children={children}\n />;\n\n return (\n <TouchableWithoutFeedback\n onPress={this._onPress}\n testID={this.props.testID}>\n {textContainer}\n </TouchableWithoutFeedback>\n );\n },\n\n _onFocus: function(event: Event) {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n },\n\n _onPress: function(event: Event) {\n this.focus();\n },\n\n _onChange: function(event: Event) {\n if (this.props.controlled && event.nativeEvent.text !== this.props.value) {\n this.refs.input.setNativeProps({text: this.props.value});\n }\n this.props.onChange && this.props.onChange(event);\n this.props.onChangeText && this.props.onChangeText(event.nativeEvent.text);\n },\n\n _onBlur: function(event: Event) {\n this.blur();\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n },\n\n _onSelectionChange: function(event: Event) {\n if (this.props.selectionState) {\n var selection = event.nativeEvent.selection;\n this.props.selectionState.update(selection.start, selection.end);\n }\n this.props.onSelectionChange && this.props.onSelectionChange(event);\n },\n\n _onTextInput: function(event: Event) {\n this.props.onTextInput && this.props.onTextInput(event);\n var counter = event.nativeEvent.eventCounter;\n if (counter > this.state.mostRecentEventCounter) {\n this.setState({mostRecentEventCounter: counter});\n }\n },\n});\n\nvar styles = StyleSheet.create({\n input: {\n alignSelf: 'stretch',\n },\n});\n\nvar AndroidTextInput = createReactNativeComponentClass({\n validAttributes: AndroidTextInputAttributes,\n uiViewClassName: 'AndroidTextInput',\n});\n\nmodule.exports = TextInput;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TextInput/TextInput.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/document/selection/DocumentSelectionState.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mixInEventEmitter=require('mixInEventEmitter');var \n\n\n\n\n\n\n\n\n\n\nDocumentSelectionState=(function(){\n\n\n\n\nfunction DocumentSelectionState(anchor,focus){_classCallCheck(this,DocumentSelectionState);\nthis._anchorOffset = anchor;\nthis._focusOffset = focus;\nthis._hasFocus = false;}_createClass(DocumentSelectionState,[{key:'update',value:\n\n\n\n\n\n\n\n\n\nfunction update(anchor,focus){\nif(this._anchorOffset !== anchor || this._focusOffset !== focus){\nthis._anchorOffset = anchor;\nthis._focusOffset = focus;\nthis.emit('update');}}},{key:'constrainLength',value:\n\n\n\n\n\n\n\n\n\nfunction constrainLength(maxLength){\nthis.update(\nMath.min(this._anchorOffset,maxLength),\nMath.min(this._focusOffset,maxLength));}},{key:'focus',value:\n\n\n\nfunction focus(){\nif(!this._hasFocus){\nthis._hasFocus = true;\nthis.emit('focus');}}},{key:'blur',value:\n\n\n\nfunction blur(){\nif(this._hasFocus){\nthis._hasFocus = false;\nthis.emit('blur');}}},{key:'hasFocus',value:\n\n\n\n\n\n\nfunction hasFocus(){\nreturn this._hasFocus;}},{key:'isCollapsed',value:\n\n\n\n\n\nfunction isCollapsed(){\nreturn this._anchorOffset === this._focusOffset;}},{key:'isBackward',value:\n\n\n\n\n\nfunction isBackward(){\nreturn this._anchorOffset > this._focusOffset;}},{key:'getAnchorOffset',value:\n\n\n\n\n\nfunction getAnchorOffset(){\nreturn this._hasFocus?this._anchorOffset:null;}},{key:'getFocusOffset',value:\n\n\n\n\n\nfunction getFocusOffset(){\nreturn this._hasFocus?this._focusOffset:null;}},{key:'getStartOffset',value:\n\n\n\n\n\nfunction getStartOffset(){\nreturn (\nthis._hasFocus?Math.min(this._anchorOffset,this._focusOffset):null);}},{key:'getEndOffset',value:\n\n\n\n\n\n\nfunction getEndOffset(){\nreturn (\nthis._hasFocus?Math.max(this._anchorOffset,this._focusOffset):null);}},{key:'overlaps',value:\n\n\n\n\n\n\n\n\nfunction overlaps(start,end){\nreturn (\nthis.hasFocus() && \nthis.getStartOffset() <= end && start <= this.getEndOffset());}}]);return DocumentSelectionState;})();\n\n\n\n\nmixInEventEmitter(DocumentSelectionState,{\n'blur':true,\n'focus':true,\n'update':true});\n\n\nmodule.exports = DocumentSelectionState;","sourceCode":"/**\n * @generated SignedSource<<1f058815818e10d01d2ee1f2f70d0fb1>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule DocumentSelectionState\n * @typechecks\n */\n\nvar mixInEventEmitter = require('mixInEventEmitter');\n\n/**\n * DocumentSelectionState is responsible for maintaining selection information\n * for a document.\n *\n * It is intended for use by AbstractTextEditor-based components for\n * identifying the appropriate start/end positions to modify the\n * DocumentContent, and for programatically setting browser selection when\n * components re-render.\n */\nclass DocumentSelectionState {\n /**\n * @param {number} anchor\n * @param {number} focus\n */\n constructor(anchor, focus) {\n this._anchorOffset = anchor;\n this._focusOffset = focus;\n this._hasFocus = false;\n }\n\n /**\n * Apply an update to the state. If either offset value has changed,\n * set the values and emit the `change` event. Otherwise no-op.\n *\n * @param {number} anchor\n * @param {number} focus\n */\n update(anchor, focus) {\n if (this._anchorOffset !== anchor || this._focusOffset !== focus) {\n this._anchorOffset = anchor;\n this._focusOffset = focus;\n this.emit('update');\n }\n }\n\n /**\n * Given a max text length, constrain our selection offsets to ensure\n * that the selection remains strictly within the text range.\n *\n * @param {number} maxLength\n */\n constrainLength(maxLength) {\n this.update(\n Math.min(this._anchorOffset, maxLength),\n Math.min(this._focusOffset, maxLength)\n );\n }\n\n focus() {\n if (!this._hasFocus) {\n this._hasFocus = true;\n this.emit('focus');\n }\n }\n\n blur() {\n if (this._hasFocus) {\n this._hasFocus = false;\n this.emit('blur');\n }\n }\n\n /**\n * @return {boolean}\n */\n hasFocus() {\n return this._hasFocus;\n }\n\n /**\n * @return {boolean}\n */\n isCollapsed() {\n return this._anchorOffset === this._focusOffset;\n }\n\n /**\n * @return {boolean}\n */\n isBackward() {\n return this._anchorOffset > this._focusOffset;\n }\n\n /**\n * @return {?number}\n */\n getAnchorOffset() {\n return this._hasFocus ? this._anchorOffset : null;\n }\n\n /**\n * @return {?number}\n */\n getFocusOffset() {\n return this._hasFocus ? this._focusOffset : null;\n }\n\n /**\n * @return {?number}\n */\n getStartOffset() {\n return (\n this._hasFocus ? Math.min(this._anchorOffset, this._focusOffset) : null\n );\n }\n\n /**\n * @return {?number}\n */\n getEndOffset() {\n return (\n this._hasFocus ? Math.max(this._anchorOffset, this._focusOffset) : null\n );\n }\n\n /**\n * @param {number} start\n * @param {number} end\n * @return {boolean}\n */\n overlaps(start, end) {\n return (\n this.hasFocus() &&\n this.getStartOffset() <= end && start <= this.getEndOffset()\n );\n }\n}\n\nmixInEventEmitter(DocumentSelectionState, {\n 'blur': true,\n 'focus': true,\n 'update': true\n});\n\nmodule.exports = DocumentSelectionState;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/document/selection/DocumentSelectionState.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/mixInEventEmitter.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventEmitter=require('EventEmitter');\nvar EventEmitterWithHolding=require('EventEmitterWithHolding');\nvar EventHolder=require('EventHolder');\nvar EventValidator=require('EventValidator');\n\nvar copyProperties=require('copyProperties');\nvar invariant=require('invariant');\nvar keyOf=require('keyOf');\n\nvar TYPES_KEY=keyOf({__types:true});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction mixInEventEmitter(klass,types){\ninvariant(types,'Must supply set of valid event types');\ninvariant(!this.__eventEmitter,'An active emitter is already mixed in');\n\n\n\nvar target=klass.prototype || klass;\n\nvar ctor=klass.constructor;\nif(ctor){\ninvariant(\nctor === Object || ctor === Function,\n'Mix EventEmitter into a class, not an instance');}\n\n\n\n\n\nif(target.hasOwnProperty(TYPES_KEY)){\ncopyProperties(target.__types,types);}else \nif(target.__types){\ntarget.__types = copyProperties({},target.__types,types);}else \n{\ntarget.__types = types;}\n\ncopyProperties(target,EventEmitterMixin);}\n\n\nvar EventEmitterMixin={\nemit:function(eventType,a,b,c,d,e,_){\nreturn this.__getEventEmitter().emit(eventType,a,b,c,d,e,_);},\n\n\nemitAndHold:function(eventType,a,b,c,d,e,_){\nreturn this.__getEventEmitter().emitAndHold(eventType,a,b,c,d,e,_);},\n\n\naddListener:function(eventType,listener,context){\nreturn this.__getEventEmitter().addListener(eventType,listener,context);},\n\n\nonce:function(eventType,listener,context){\nreturn this.__getEventEmitter().once(eventType,listener,context);},\n\n\naddRetroactiveListener:function(eventType,listener,context){\nreturn this.__getEventEmitter().addRetroactiveListener(\neventType,\nlistener,\ncontext);},\n\n\n\naddListenerMap:function(listenerMap,context){\nreturn this.__getEventEmitter().addListenerMap(listenerMap,context);},\n\n\naddRetroactiveListenerMap:function(listenerMap,context){\nreturn this.__getEventEmitter().addListenerMap(listenerMap,context);},\n\n\nremoveAllListeners:function(){\nthis.__getEventEmitter().removeAllListeners();},\n\n\nremoveCurrentListener:function(){\nthis.__getEventEmitter().removeCurrentListener();},\n\n\nreleaseHeldEventType:function(eventType){\nthis.__getEventEmitter().releaseHeldEventType(eventType);},\n\n\n__getEventEmitter:function(){\nif(!this.__eventEmitter){\nvar emitter=new EventEmitter();\nemitter = EventValidator.addValidation(emitter,this.__types);\n\nvar holder=new EventHolder();\nthis.__eventEmitter = new EventEmitterWithHolding(emitter,holder);}\n\nreturn this.__eventEmitter;}};\n\n\n\nmodule.exports = mixInEventEmitter;","sourceCode":"/**\n * @generated SignedSource<<c735038726af2daf584b3e7fb3950e8b>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule mixInEventEmitter\n */\n\nvar EventEmitter = require('EventEmitter');\nvar EventEmitterWithHolding = require('EventEmitterWithHolding');\nvar EventHolder = require('EventHolder');\nvar EventValidator = require('EventValidator');\n\nvar copyProperties = require('copyProperties');\nvar invariant = require('invariant');\nvar keyOf = require('keyOf');\n\nvar TYPES_KEY = keyOf({__types: true});\n\n/**\n * API to setup an object or constructor to be able to emit data events.\n *\n * @example\n * function Dog() { ...dog stuff... }\n * mixInEventEmitter(Dog, {bark: true});\n *\n * var puppy = new Dog();\n * puppy.addListener('bark', function (volume) {\n * console.log('Puppy', this, 'barked at volume:', volume);\n * });\n * puppy.emit('bark', 'quiet');\n * // Puppy <puppy> barked at volume: quiet\n *\n *\n * // A \"singleton\" object may also be commissioned:\n *\n * var Singleton = {};\n * mixInEventEmitter(Singleton, {lonely: true});\n * Singleton.emit('lonely', true);\n */\nfunction mixInEventEmitter(klass, types) {\n invariant(types, 'Must supply set of valid event types');\n invariant(!this.__eventEmitter, 'An active emitter is already mixed in');\n\n // If this is a constructor, write to the prototype, otherwise write to the\n // singleton object.\n var target = klass.prototype || klass;\n\n var ctor = klass.constructor;\n if (ctor) {\n invariant(\n ctor === Object || ctor === Function,\n 'Mix EventEmitter into a class, not an instance'\n );\n }\n\n // Keep track of the provided types, union the types if they already exist,\n // which allows for prototype subclasses to provide more types.\n if (target.hasOwnProperty(TYPES_KEY)) {\n copyProperties(target.__types, types);\n } else if (target.__types) {\n target.__types = copyProperties({}, target.__types, types);\n } else {\n target.__types = types;\n }\n copyProperties(target, EventEmitterMixin);\n}\n\nvar EventEmitterMixin = {\n emit: function(eventType, a, b, c, d, e, _) {\n return this.__getEventEmitter().emit(eventType, a, b, c, d, e, _);\n },\n\n emitAndHold: function(eventType, a, b, c, d, e, _) {\n return this.__getEventEmitter().emitAndHold(eventType, a, b, c, d, e, _);\n },\n\n addListener: function(eventType, listener, context) {\n return this.__getEventEmitter().addListener(eventType, listener, context);\n },\n\n once: function(eventType, listener, context) {\n return this.__getEventEmitter().once(eventType, listener, context);\n },\n\n addRetroactiveListener: function(eventType, listener, context) {\n return this.__getEventEmitter().addRetroactiveListener(\n eventType,\n listener,\n context\n );\n },\n\n addListenerMap: function(listenerMap, context) {\n return this.__getEventEmitter().addListenerMap(listenerMap, context);\n },\n\n addRetroactiveListenerMap: function(listenerMap, context) {\n return this.__getEventEmitter().addListenerMap(listenerMap, context);\n },\n\n removeAllListeners: function() {\n this.__getEventEmitter().removeAllListeners();\n },\n\n removeCurrentListener: function() {\n this.__getEventEmitter().removeCurrentListener();\n },\n\n releaseHeldEventType: function(eventType) {\n this.__getEventEmitter().releaseHeldEventType(eventType);\n },\n\n __getEventEmitter: function() {\n if (!this.__eventEmitter) {\n var emitter = new EventEmitter();\n emitter = EventValidator.addValidation(emitter, this.__types);\n\n var holder = new EventHolder();\n this.__eventEmitter = new EventEmitterWithHolding(emitter, holder);\n }\n return this.__eventEmitter;\n }\n};\n\nmodule.exports = mixInEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/mixInEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitterWithHolding.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventEmitterWithHolding=(function(){\n\n\n\n\n\n\n\nfunction EventEmitterWithHolding(emitter,holder){_classCallCheck(this,EventEmitterWithHolding);\nthis._emitter = emitter;\nthis._eventHolder = holder;\nthis._currentEventToken = null;\nthis._emittingHeldEvents = false;}_createClass(EventEmitterWithHolding,[{key:'addListener',value:\n\n\n\n\n\nfunction addListener(eventType,listener,context){\nreturn this._emitter.addListener(eventType,listener,context);}},{key:'once',value:\n\n\n\n\n\nfunction once(eventType,listener,context){\nreturn this._emitter.once(eventType,listener,context);}},{key:'addRetroactiveListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction addRetroactiveListener(\neventType,listener,context){\nvar subscription=this._emitter.addListener(eventType,listener,context);\n\nthis._emittingHeldEvents = true;\nthis._eventHolder.emitToListener(eventType,listener,context);\nthis._emittingHeldEvents = false;\n\nreturn subscription;}},{key:'removeAllListeners',value:\n\n\n\n\n\nfunction removeAllListeners(eventType){\nthis._emitter.removeAllListeners(eventType);}},{key:'removeCurrentListener',value:\n\n\n\n\n\nfunction removeCurrentListener(){\nthis._emitter.removeCurrentListener();}},{key:'listeners',value:\n\n\n\n\n\nfunction listeners(eventType){\nreturn this._emitter.listeners(eventType);}},{key:'emit',value:\n\n\n\n\n\nfunction emit(eventType,a,b,c,d,e,_){\nthis._emitter.emit(eventType,a,b,c,d,e,_);}},{key:'emitAndHold',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction emitAndHold(eventType,a,b,c,d,e,_){\nthis._currentEventToken = this._eventHolder.holdEvent(\neventType,\na,b,c,d,e,_);\n\nthis._emitter.emit(eventType,a,b,c,d,e,_);\nthis._currentEventToken = null;}},{key:'releaseCurrentEvent',value:\n\n\n\n\n\nfunction releaseCurrentEvent(){\nif(this._currentEventToken !== null){\nthis._eventHolder.releaseEvent(this._currentEventToken);}else \nif(this._emittingHeldEvents){\nthis._eventHolder.releaseCurrentEvent();}}},{key:'releaseHeldEventType',value:\n\n\n\n\n\n\n\nfunction releaseHeldEventType(eventType){\nthis._eventHolder.releaseEventType(eventType);}}]);return EventEmitterWithHolding;})();\n\n\n\nmodule.exports = EventEmitterWithHolding;","sourceCode":"/**\n * @generated SignedSource<<fb2bb5c1c402a097a7e1da7413526629>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventEmitterWithHolding\n * @typechecks\n */\n'use strict';\n\n/**\n * @class EventEmitterWithHolding\n * @description\n * An EventEmitterWithHolding decorates an event emitter and enables one to\n * \"hold\" or cache events and then have a handler register later to actually\n * handle them.\n *\n * This is separated into its own decorator so that only those who want to use\n * the holding functionality have to and others can just use an emitter. Since\n * it implements the emitter interface it can also be combined with anything\n * that uses an emitter.\n */\nclass EventEmitterWithHolding {\n /**\n * @constructor\n * @param {object} emitter - The object responsible for emitting the actual\n * events.\n * @param {object} holder - The event holder that is responsible for holding\n * and then emitting held events.\n */\n constructor(emitter, holder) {\n this._emitter = emitter;\n this._eventHolder = holder;\n this._currentEventToken = null;\n this._emittingHeldEvents = false;\n }\n\n /**\n * @see EventEmitter#addListener\n */\n addListener(eventType: String, listener, context: ?Object) {\n return this._emitter.addListener(eventType, listener, context);\n }\n\n /**\n * @see EventEmitter#once\n */\n once(eventType: String, listener, context: ?Object) {\n return this._emitter.once(eventType, listener, context);\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function. In addition to subscribing\n * to all subsequent events, this method will also handle any events that have\n * already been emitted, held, and not released.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n *\n * @example\n * emitter.emitAndHold('someEvent', 'abc');\n *\n * emitter.addRetroactiveListener('someEvent', function(message) {\n * console.log(message);\n * }); // logs 'abc'\n */\n addRetroactiveListener(\n eventType: String, listener, context: ?Object): EmitterSubscription {\n var subscription = this._emitter.addListener(eventType, listener, context);\n\n this._emittingHeldEvents = true;\n this._eventHolder.emitToListener(eventType, listener, context);\n this._emittingHeldEvents = false;\n\n return subscription;\n }\n\n /**\n * @see EventEmitter#removeAllListeners\n */\n removeAllListeners(eventType: String) {\n this._emitter.removeAllListeners(eventType);\n }\n\n /**\n * @see EventEmitter#removeCurrentListener\n */\n removeCurrentListener() {\n this._emitter.removeCurrentListener();\n }\n\n /**\n * @see EventEmitter#listeners\n */\n listeners(eventType: String) /* TODO: Annotate return type here */ {\n return this._emitter.listeners(eventType);\n }\n\n /**\n * @see EventEmitter#emit\n */\n emit(eventType: String, a, b, c, d, e, _) {\n this._emitter.emit(eventType, a, b, c, d, e, _);\n }\n\n /**\n * Emits an event of the given type with the given data, and holds that event\n * in order to be able to dispatch it to a later subscriber when they say they\n * want to handle held events.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.emitAndHold('someEvent', 'abc');\n *\n * emitter.addRetroactiveListener('someEvent', function(message) {\n * console.log(message);\n * }); // logs 'abc'\n */\n emitAndHold(eventType: String, a, b, c, d, e, _) {\n this._currentEventToken = this._eventHolder.holdEvent(\n eventType,\n a, b, c, d, e, _\n );\n this._emitter.emit(eventType, a, b, c, d, e, _);\n this._currentEventToken = null;\n }\n\n /**\n * @see EventHolder#releaseCurrentEvent\n */\n releaseCurrentEvent() {\n if (this._currentEventToken !== null) {\n this._eventHolder.releaseEvent(this._currentEventToken);\n } else if (this._emittingHeldEvents) {\n this._eventHolder.releaseCurrentEvent();\n }\n }\n\n /**\n * @see EventHolder#releaseEventType\n * @param {string} eventType\n */\n releaseHeldEventType(eventType: String) {\n this._eventHolder.releaseEventType(eventType);\n }\n}\n\nmodule.exports = EventEmitterWithHolding;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitterWithHolding.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventHolder.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');var \n\nEventHolder=(function(){\nfunction EventHolder(){_classCallCheck(this,EventHolder);\nthis._heldEvents = {};\nthis._currentEventKey = null;}_createClass(EventHolder,[{key:'holdEvent',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction holdEvent(eventType,a,b,c,d,e,_){\nthis._heldEvents[eventType] = this._heldEvents[eventType] || [];\nvar eventsOfType=this._heldEvents[eventType];\nvar key={\neventType:eventType,\nindex:eventsOfType.length};\n\neventsOfType.push([a,b,c,d,e,_]);\nreturn key;}},{key:'emitToListener',value:\n\n\n\n\n\n\n\n\n\n\nfunction emitToListener(eventType,listener,context){var _this=this;\nvar eventsOfType=this._heldEvents[eventType];\nif(!eventsOfType){\nreturn;}\n\nvar origEventKey=this._currentEventKey;\neventsOfType.forEach(function(eventHeld,index){\nif(!eventHeld){\nreturn;}\n\n_this._currentEventKey = {\neventType:eventType,\nindex:index};\n\nlistener.apply(context,eventHeld);});\n\nthis._currentEventKey = origEventKey;}},{key:'releaseCurrentEvent',value:\n\n\n\n\n\n\n\n\n\n\nfunction releaseCurrentEvent(){\ninvariant(\nthis._currentEventKey !== null,\n'Not in an emitting cycle; there is no current event');\n\nthis.releaseEvent(this._currentEventKey);}},{key:'releaseEvent',value:\n\n\n\n\n\n\n\n\nfunction releaseEvent(token){\ndelete this._heldEvents[token.eventType][token.index];}},{key:'releaseEventType',value:\n\n\n\n\n\n\n\nfunction releaseEventType(type){\nthis._heldEvents[type] = [];}}]);return EventHolder;})();\n\n\n\nmodule.exports = EventHolder;","sourceCode":"/**\n * @generated SignedSource<<0591836c443c735d24e61782320d3d16>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventHolder\n * @typechecks\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nclass EventHolder {\n constructor() {\n this._heldEvents = {};\n this._currentEventKey = null;\n }\n\n /**\n * Holds a given event for processing later.\n *\n * TODO: Annotate return type better. The structural type of the return here\n * is pretty obvious.\n *\n * @param {string} eventType - Name of the event to hold and later emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n * @return {object} Token that can be used to release the held event\n *\n * @example\n *\n * holder.holdEvent({someEvent: 'abc'});\n *\n * holder.emitToHandler({\n * someEvent: function(data, event) {\n * console.log(data);\n * }\n * }); //logs 'abc'\n *\n */\n holdEvent(eventType: String, a, b, c, d, e, _) {\n this._heldEvents[eventType] = this._heldEvents[eventType] || [];\n var eventsOfType = this._heldEvents[eventType];\n var key = {\n eventType: eventType,\n index: eventsOfType.length\n };\n eventsOfType.push([a, b, c, d, e, _]);\n return key;\n }\n\n /**\n * Emits the held events of the specified type to the given listener.\n *\n * @param {?string} eventType - Optional name of the events to replay\n * @param {function} listener - The listener to which to dispatch the event\n * @param {?object} context - Optional context object to use when invoking\n * the listener\n */\n emitToListener(eventType: ?String , listener, context: ?Object) {\n var eventsOfType = this._heldEvents[eventType];\n if (!eventsOfType) {\n return;\n }\n var origEventKey = this._currentEventKey;\n eventsOfType.forEach((/*?array*/ eventHeld, /*number*/ index) => {\n if (!eventHeld) {\n return;\n }\n this._currentEventKey = {\n eventType: eventType,\n index: index\n };\n listener.apply(context, eventHeld);\n });\n this._currentEventKey = origEventKey;\n }\n\n /**\n * Provides an API that can be called during an eventing cycle to release\n * the last event that was invoked, so that it is no longer \"held\".\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n */\n releaseCurrentEvent() {\n invariant(\n this._currentEventKey !== null,\n 'Not in an emitting cycle; there is no current event'\n );\n this.releaseEvent(this._currentEventKey);\n }\n\n /**\n * Releases the event corresponding to the handle that was returned when the\n * event was first held.\n *\n * @param {object} token - The token returned from holdEvent\n */\n releaseEvent(token: Object) {\n delete this._heldEvents[token.eventType][token.index];\n }\n\n /**\n * Releases all events of a certain type.\n *\n * @param {string} type\n */\n releaseEventType(type: String) {\n this._heldEvents[type] = [];\n }\n}\n\nmodule.exports = EventHolder;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventHolder.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventValidator.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar copyProperties=require('copyProperties');\n\n\n\n\n\n\n\n\n\n\nvar EventValidator={\n\n\n\n\n\n\n\n\n\n\naddValidation:function(emitter,types){\nvar eventTypes=Object.keys(types);\nvar emitterWithValidation=Object.create(emitter);\n\ncopyProperties(emitterWithValidation,{\nemit:function emit(type,a,b,c,d,e,_){\nassertAllowsEventType(type,eventTypes);\nreturn emitter.emit.call(this,type,a,b,c,d,e,_);}});\n\n\n\nreturn emitterWithValidation;}};\n\n\n\nfunction assertAllowsEventType(type,allowedTypes){\nif(allowedTypes.indexOf(type) === -1){\nthrow new TypeError(errorMessageFor(type,allowedTypes));}}\n\n\n\nfunction errorMessageFor(type,allowedTypes){\nvar message='Unknown event type \"' + type + '\". ';\nif(__DEV__){\nmessage += recommendationFor(type,allowedTypes);}\n\nmessage += 'Known event types: ' + allowedTypes.join(', ') + '.';\nreturn message;}\n\n\n\nif(__DEV__){\nvar recommendationFor=function(type,allowedTypes){\nvar closestTypeRecommendation=closestTypeFor(type,allowedTypes);\nif(isCloseEnough(closestTypeRecommendation,type)){\nreturn 'Did you mean \"' + closestTypeRecommendation.type + '\"? ';}else \n{\nreturn '';}};\n\n\n\nvar closestTypeFor=function(type,allowedTypes){\nvar typeRecommendations=allowedTypes.map(\ntypeRecommendationFor.bind(this,type));\n\nreturn typeRecommendations.sort(recommendationSort)[0];};\n\n\nvar typeRecommendationFor=function(type,recomendedType){\nreturn {\ntype:recomendedType,\ndistance:damerauLevenshteinDistance(type,recomendedType)};};\n\n\n\nvar recommendationSort=function(recommendationA,recommendationB){\nif(recommendationA.distance < recommendationB.distance){\nreturn -1;}else \nif(recommendationA.distance > recommendationB.distance){\nreturn 1;}else \n{\nreturn 0;}};\n\n\n\nvar isCloseEnough=function(closestType,actualType){\nreturn closestType.distance / actualType.length < 0.334;};\n\n\nvar damerauLevenshteinDistance=function(a,b){\nvar i,j;\nvar d=[];\n\nfor(i = 0;i <= a.length;i++) {\nd[i] = [i];}\n\n\nfor(j = 1;j <= b.length;j++) {\nd[0][j] = j;}\n\n\nfor(i = 1;i <= a.length;i++) {\nfor(j = 1;j <= b.length;j++) {\nvar cost=a.charAt(i - 1) === b.charAt(j - 1)?0:1;\n\nd[i][j] = Math.min(\nd[i - 1][j] + 1,\nd[i][j - 1] + 1,\nd[i - 1][j - 1] + cost);\n\n\nif(i > 1 && j > 1 && \na.charAt(i - 1) == b.charAt(j - 2) && \na.charAt(i - 2) == b.charAt(j - 1)){\nd[i][j] = Math.min(d[i][j],d[i - 2][j - 2] + cost);}}}\n\n\n\n\nreturn d[a.length][b.length];};}\n\n\n\nmodule.exports = EventValidator;","sourceCode":"/**\n * @generated SignedSource<<7149bdac6fb48595f245ad6e76938e44>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventValidator\n */\n'use strict';\n\nvar copyProperties = require('copyProperties');\n\n/**\n * EventValidator is designed to validate event types to make it easier to catch\n * common mistakes. It accepts a map of all of the different types of events\n * that the emitter can emit. Then, if a user attempts to emit an event that is\n * not one of those specified types the emitter will throw an error. Also, it\n * provides a relatively simple matcher so that if it thinks that you likely\n * mistyped the event name it will suggest what you might have meant to type in\n * the error message.\n */\nvar EventValidator = {\n /**\n * @param {Object} emitter - The object responsible for emitting the actual\n * events\n * @param {Object} types - The collection of valid types that will be used to\n * check for errors\n * @return {Object} A new emitter with event type validation\n * @example\n * var types = {someEvent: true, anotherEvent: true};\n * var emitter = EventValidator.addValidation(emitter, types);\n */\n addValidation: function(emitter: Object, types: Object) {\n var eventTypes = Object.keys(types);\n var emitterWithValidation = Object.create(emitter);\n\n copyProperties(emitterWithValidation, {\n emit: function emit(type, a, b, c, d, e, _) {\n assertAllowsEventType(type, eventTypes);\n return emitter.emit.call(this, type, a, b, c, d, e, _);\n }\n });\n\n return emitterWithValidation;\n }\n};\n\nfunction assertAllowsEventType(type, allowedTypes) {\n if (allowedTypes.indexOf(type) === -1) {\n throw new TypeError(errorMessageFor(type, allowedTypes));\n }\n}\n\nfunction errorMessageFor(type, allowedTypes) {\n var message = 'Unknown event type \"' + type + '\". ';\n if (__DEV__) {\n message += recommendationFor(type, allowedTypes);\n }\n message += 'Known event types: ' + allowedTypes.join(', ') + '.';\n return message;\n}\n\n// Allow for good error messages\nif (__DEV__) {\n var recommendationFor = function (type, allowedTypes) {\n var closestTypeRecommendation = closestTypeFor(type, allowedTypes);\n if (isCloseEnough(closestTypeRecommendation, type)) {\n return 'Did you mean \"' + closestTypeRecommendation.type + '\"? ';\n } else {\n return '';\n }\n };\n\n var closestTypeFor = function (type, allowedTypes) {\n var typeRecommendations = allowedTypes.map(\n typeRecommendationFor.bind(this, type)\n );\n return typeRecommendations.sort(recommendationSort)[0];\n };\n\n var typeRecommendationFor = function (type, recomendedType) {\n return {\n type: recomendedType,\n distance: damerauLevenshteinDistance(type, recomendedType)\n };\n };\n\n var recommendationSort = function (recommendationA, recommendationB) {\n if (recommendationA.distance < recommendationB.distance) {\n return -1;\n } else if (recommendationA.distance > recommendationB.distance) {\n return 1;\n } else {\n return 0;\n }\n };\n\n var isCloseEnough = function (closestType, actualType) {\n return (closestType.distance / actualType.length) < 0.334;\n };\n\n var damerauLevenshteinDistance = function (a, b) {\n var i, j;\n var d = [];\n\n for (i = 0; i <= a.length; i++) {\n d[i] = [i];\n }\n\n for (j = 1; j <= b.length; j++) {\n d[0][j] = j;\n }\n\n for (i = 1; i <= a.length; i++) {\n for (j = 1; j <= b.length; j++) {\n var cost = a.charAt(i - 1) === b.charAt(j - 1) ? 0 : 1;\n\n d[i][j] = Math.min(\n d[i - 1][j] + 1,\n d[i][j - 1] + 1,\n d[i - 1][j - 1] + cost\n );\n\n if (i > 1 && j > 1 &&\n a.charAt(i - 1) == b.charAt(j - 2) &&\n a.charAt(i - 2) == b.charAt(j - 1)) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n }\n }\n }\n\n return d[a.length][b.length];\n };\n}\n\nmodule.exports = EventValidator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventValidator.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/copyProperties.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncopyProperties(obj,a,b,c,d,e,f){\nobj = obj || {};\n\nif(__DEV__){\nif(f){\nthrow new Error('Too many arguments passed to copyProperties');}}\n\n\n\nvar args=[a,b,c,d,e];\nvar ii=0,v;\nwhile(args[ii]) {\nv = args[ii++];\nfor(var k in v) {\nobj[k] = v[k];}\n\n\n\n\nif(v.hasOwnProperty && v.hasOwnProperty('toString') && \ntypeof v.toString != 'undefined' && obj.toString !== v.toString){\nobj.toString = v.toString;}}\n\n\n\nreturn obj;}\n\n\nmodule.exports = copyProperties;","sourceCode":"/**\n * @generated SignedSource<<e8e5ba644b047d0654ca54a100d2f0f3>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule copyProperties\n */\n\n/**\n * Copy properties from one or more objects (up to 5) into the first object.\n * This is a shallow copy. It mutates the first object and also returns it.\n *\n * NOTE: `arguments` has a very significant performance penalty, which is why\n * we don't support unlimited arguments.\n */\nfunction copyProperties(obj, a, b, c, d, e, f) {\n obj = obj || {};\n\n if (__DEV__) {\n if (f) {\n throw new Error('Too many arguments passed to copyProperties');\n }\n }\n\n var args = [a, b, c, d, e];\n var ii = 0, v;\n while (args[ii]) {\n v = args[ii++];\n for (var k in v) {\n obj[k] = v[k];\n }\n\n // IE ignores toString in object iteration.. See:\n // webreflection.blogspot.com/2007/07/quick-fix-internet-explorer-and.html\n if (v.hasOwnProperty && v.hasOwnProperty('toString') &&\n (typeof v.toString != 'undefined') && (obj.toString !== v.toString)) {\n obj.toString = v.toString;\n }\n }\n\n return obj;\n}\n\nmodule.exports = copyProperties;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/copyProperties.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar onlyChild=require('onlyChild');\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\n\n\n\n\n\n\n\n\nvar TouchableWithoutFeedback=React.createClass({displayName:'TouchableWithoutFeedback',\nmixins:[TimerMixin,Touchable.Mixin],\n\npropTypes:{\n\n\n\n\naccessible:React.PropTypes.bool,\nonPress:React.PropTypes.func,\nonPressIn:React.PropTypes.func,\nonPressOut:React.PropTypes.func,\nonLongPress:React.PropTypes.func,\n\n\n\ndelayPressIn:React.PropTypes.number,\n\n\n\ndelayPressOut:React.PropTypes.number,\n\n\n\ndelayLongPress:React.PropTypes.number},\n\n\ngetInitialState:function(){\nreturn this.touchableGetInitialState();},\n\n\ncomponentDidMount:function(){\nensurePositiveDelayProps(this.props);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nensurePositiveDelayProps(nextProps);},\n\n\n\n\n\n\ntouchableHandlePress:function(e){\nthis.props.onPress && this.props.onPress(e);},\n\n\ntouchableHandleActivePressIn:function(){\nthis.props.onPressIn && this.props.onPressIn();},\n\n\ntouchableHandleActivePressOut:function(){\nthis.props.onPressOut && this.props.onPressOut();},\n\n\ntouchableHandleLongPress:function(){\nthis.props.onLongPress && this.props.onLongPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ntouchableGetHighlightDelayMS:function(){\nreturn this.props.delayPressIn || 0;},\n\n\ntouchableGetLongPressDelayMS:function(){\nreturn this.props.delayLongPress === 0?0:\nthis.props.delayLongPress || 500;},\n\n\ntouchableGetPressOutDelayMS:function(){\nreturn this.props.delayPressOut || 0;},\n\n\nrender:function(){\n\nreturn React.cloneElement(onlyChild(this.props.children),{\naccessible:this.props.accessible !== false,\ntestID:this.props.testID,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate});}});\n\n\n\n\nmodule.exports = TouchableWithoutFeedback;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchableWithoutFeedback\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar TimerMixin = require('react-timer-mixin');\nvar Touchable = require('Touchable');\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar onlyChild = require('onlyChild');\n\n/**\n * When the scroll view is disabled, this defines how far your touch may move\n * off of the button, before deactivating the button. Once deactivated, try\n * moving it back and you'll see that the button is once again reactivated!\n * Move it back and forth several times while the scroll view is disabled.\n */\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\ntype Event = Object;\n\n/**\n * Do not use unless you have a very good reason. All the elements that\n * respond to press should have a visual feedback when touched. This is\n * one of the primary reason a \"web\" app doesn't feel \"native\".\n */\nvar TouchableWithoutFeedback = React.createClass({\n mixins: [TimerMixin, Touchable.Mixin],\n\n propTypes: {\n /**\n * Called when the touch is released, but not if cancelled (e.g. by a scroll\n * that steals the responder lock).\n */\n accessible: React.PropTypes.bool,\n onPress: React.PropTypes.func,\n onPressIn: React.PropTypes.func,\n onPressOut: React.PropTypes.func,\n onLongPress: React.PropTypes.func,\n /**\n * Delay in ms, from the start of the touch, before onPressIn is called.\n */\n delayPressIn: React.PropTypes.number,\n /**\n * Delay in ms, from the release of the touch, before onPressOut is called.\n */\n delayPressOut: React.PropTypes.number,\n /**\n * Delay in ms, from onPressIn, before onLongPress is called.\n */\n delayLongPress: React.PropTypes.number,\n },\n\n getInitialState: function() {\n return this.touchableGetInitialState();\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n },\n\n componentWillReceiveProps: function(nextProps: Object) {\n ensurePositiveDelayProps(nextProps);\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandlePress: function(e: Event) {\n this.props.onPress && this.props.onPress(e);\n },\n\n touchableHandleActivePressIn: function() {\n this.props.onPressIn && this.props.onPressIn();\n },\n\n touchableHandleActivePressOut: function() {\n this.props.onPressOut && this.props.onPressOut();\n },\n\n touchableHandleLongPress: function() {\n this.props.onLongPress && this.props.onLongPress();\n },\n\n touchableGetPressRectOffset: function(): typeof PRESS_RECT_OFFSET {\n return PRESS_RECT_OFFSET; // Always make sure to predeclare a constant!\n },\n\n touchableGetHighlightDelayMS: function(): number {\n return this.props.delayPressIn || 0;\n },\n\n touchableGetLongPressDelayMS: function(): number {\n return this.props.delayLongPress === 0 ? 0 :\n this.props.delayLongPress || 500;\n },\n\n touchableGetPressOutDelayMS: function(): number {\n return this.props.delayPressOut || 0;\n },\n\n render: function(): ReactElement {\n // Note(avik): remove dynamic typecast once Flow has been upgraded\n return (React: any).cloneElement(onlyChild(this.props.children), {\n accessible: this.props.accessible !== false,\n testID: this.props.testID,\n onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder,\n onResponderTerminationRequest: this.touchableHandleResponderTerminationRequest,\n onResponderGrant: this.touchableHandleResponderGrant,\n onResponderMove: this.touchableHandleResponderMove,\n onResponderRelease: this.touchableHandleResponderRelease,\n onResponderTerminate: this.touchableHandleResponderTerminate\n });\n }\n});\n\nmodule.exports = TouchableWithoutFeedback;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensurePositiveDelayProps.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar ensurePositiveDelayProps=function(props){\ninvariant(\n!(props.delayPressIn < 0 || props.delayPressOut < 0 || \nprops.delayLongPress < 0),\n'Touchable components cannot have negative delay properties');};\n\n\n\nmodule.exports = ensurePositiveDelayProps;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ensurePositiveDelayProps\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nvar ensurePositiveDelayProps = function(props: any) {\n invariant(\n !(props.delayPressIn < 0 || props.delayPressOut < 0 ||\n props.delayLongPress < 0),\n 'Touchable components cannot have negative delay properties'\n );\n};\n\nmodule.exports = ensurePositiveDelayProps;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensurePositiveDelayProps.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheet=require('StyleSheet');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\nvar View=require('View');\n\nvar cloneWithProps=require('cloneWithProps');\nvar ensureComponentIsNative=require('ensureComponentIsNative');\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar keyOf=require('keyOf');\nvar merge=require('merge');\nvar onlyChild=require('onlyChild');\n\nvar DEFAULT_PROPS={\nactiveOpacity:0.8,\nunderlayColor:'black'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TouchableHighlight=React.createClass({displayName:'TouchableHighlight',\npropTypes:_extends({},\nTouchableWithoutFeedback.propTypes,{\n\n\n\n\nactiveOpacity:React.PropTypes.number,\n\n\n\n\nunderlayColor:React.PropTypes.string,\nstyle:View.propTypes.style,\n\n\n\nonShowUnderlay:React.PropTypes.func,\n\n\n\nonHideUnderlay:React.PropTypes.func}),\n\n\nmixins:[NativeMethodsMixin,TimerMixin,Touchable.Mixin],\n\ngetDefaultProps:function(){return DEFAULT_PROPS;},\n\n\ncomputeSyntheticState:function(props){\nreturn {\nactiveProps:{\nstyle:{\nopacity:props.activeOpacity}},\n\n\nactiveUnderlayProps:{\nstyle:{\nbackgroundColor:props.underlayColor}},\n\n\nunderlayStyle:[\nINACTIVE_UNDERLAY_PROPS.style,\nprops.style]};},\n\n\n\n\ngetInitialState:function(){\nreturn merge(\nthis.touchableGetInitialState(),this.computeSyntheticState(this.props));},\n\n\n\ncomponentDidMount:function(){\nensurePositiveDelayProps(this.props);\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentDidUpdate:function(){\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nensurePositiveDelayProps(nextProps);\nif(nextProps.activeOpacity !== this.props.activeOpacity || \nnextProps.underlayColor !== this.props.underlayColor || \nnextProps.style !== this.props.style){\nthis.setState(this.computeSyntheticState(nextProps));}},\n\n\n\nviewConfig:{\nuiViewClassName:'RCTView',\nvalidAttributes:ReactNativeViewAttributes.RCTView},\n\n\n\n\n\n\ntouchableHandleActivePressIn:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nthis._showUnderlay();\nthis.props.onPressIn && this.props.onPressIn();},\n\n\ntouchableHandleActivePressOut:function(){\nif(!this._hideTimeout){\nthis._hideUnderlay();}\n\nthis.props.onPressOut && this.props.onPressOut();},\n\n\ntouchableHandlePress:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._showUnderlay();\nthis._hideTimeout = this.setTimeout(this._hideUnderlay,\nthis.props.delayPressOut || 100);\nthis.props.onPress && this.props.onPress();},\n\n\ntouchableHandleLongPress:function(){\nthis.props.onLongPress && this.props.onLongPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ntouchableGetHighlightDelayMS:function(){\nreturn this.props.delayPressIn;},\n\n\ntouchableGetLongPressDelayMS:function(){\nreturn this.props.delayLongPress;},\n\n\ntouchableGetPressOutDelayMS:function(){\nreturn this.props.delayPressOut;},\n\n\n_showUnderlay:function(){\nthis.refs[UNDERLAY_REF].setNativeProps(this.state.activeUnderlayProps);\nthis.refs[CHILD_REF].setNativeProps(this.state.activeProps);\nthis.props.onShowUnderlay && this.props.onShowUnderlay();},\n\n\n_hideUnderlay:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nif(this.refs[UNDERLAY_REF]){\nthis.refs[CHILD_REF].setNativeProps(INACTIVE_CHILD_PROPS);\nthis.refs[UNDERLAY_REF].setNativeProps(_extends({},\nINACTIVE_UNDERLAY_PROPS,{\nstyle:this.state.underlayStyle}));\n\nthis.props.onHideUnderlay && this.props.onHideUnderlay();}},\n\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{\nref:UNDERLAY_REF,\nstyle:this.state.underlayStyle,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate},\ncloneWithProps(\nonlyChild(this.props.children),\n{\nref:CHILD_REF,\naccessible:true,\ntestID:this.props.testID})));}});\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\nvar CHILD_REF=keyOf({childRef:null});\nvar UNDERLAY_REF=keyOf({underlayRef:null});\nvar INACTIVE_CHILD_PROPS={\nstyle:StyleSheet.create({x:{opacity:1.0}}).x};\n\nvar INACTIVE_UNDERLAY_PROPS={\nstyle:StyleSheet.create({x:{backgroundColor:'transparent'}}).x};\n\n\nmodule.exports = TouchableHighlight;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchableHighlight\n */\n'use strict';\n\n// Note (avik): add @flow when Flow supports spread properties in propTypes\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar StyleSheet = require('StyleSheet');\nvar TimerMixin = require('react-timer-mixin');\nvar Touchable = require('Touchable');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\nvar View = require('View');\n\nvar cloneWithProps = require('cloneWithProps');\nvar ensureComponentIsNative = require('ensureComponentIsNative');\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar keyOf = require('keyOf');\nvar merge = require('merge');\nvar onlyChild = require('onlyChild');\n\nvar DEFAULT_PROPS = {\n activeOpacity: 0.8,\n underlayColor: 'black',\n};\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, which allows\n * the underlay color to show through, darkening or tinting the view. The\n * underlay comes from adding a view to the view hierarchy, which can sometimes\n * cause unwanted visual artifacts if not used correctly, for example if the\n * backgroundColor of the wrapped view isn't explicitly set to an opaque color.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n * return (\n * <TouchableHighlight onPress={this._onPressButton}>\n * <Image\n * style={styles.button}\n * source={require('image!myButton')}\n * />\n * </TouchableHighlight>\n * );\n * },\n * ```\n */\n\nvar TouchableHighlight = React.createClass({\n propTypes: {\n ...TouchableWithoutFeedback.propTypes,\n /**\n * Determines what the opacity of the wrapped view should be when touch is\n * active.\n */\n activeOpacity: React.PropTypes.number,\n /**\n * The color of the underlay that will show through when the touch is\n * active.\n */\n underlayColor: React.PropTypes.string,\n style: View.propTypes.style,\n /**\n * Called immediately after the underlay is shown\n */\n onShowUnderlay: React.PropTypes.func,\n /**\n * Called immediately after the underlay is hidden\n */\n onHideUnderlay: React.PropTypes.func,\n },\n\n mixins: [NativeMethodsMixin, TimerMixin, Touchable.Mixin],\n\n getDefaultProps: () => DEFAULT_PROPS,\n\n // Performance optimization to avoid constantly re-generating these objects.\n computeSyntheticState: function(props) {\n return {\n activeProps: {\n style: {\n opacity: props.activeOpacity,\n }\n },\n activeUnderlayProps: {\n style: {\n backgroundColor: props.underlayColor,\n }\n },\n underlayStyle: [\n INACTIVE_UNDERLAY_PROPS.style,\n props.style,\n ]\n };\n },\n\n getInitialState: function() {\n return merge(\n this.touchableGetInitialState(), this.computeSyntheticState(this.props)\n );\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentDidUpdate: function() {\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentWillReceiveProps: function(nextProps) {\n ensurePositiveDelayProps(nextProps);\n if (nextProps.activeOpacity !== this.props.activeOpacity ||\n nextProps.underlayColor !== this.props.underlayColor ||\n nextProps.style !== this.props.style) {\n this.setState(this.computeSyntheticState(nextProps));\n }\n },\n\n viewConfig: {\n uiViewClassName: 'RCTView',\n validAttributes: ReactNativeViewAttributes.RCTView\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandleActivePressIn: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n this._showUnderlay();\n this.props.onPressIn && this.props.onPressIn();\n },\n\n touchableHandleActivePressOut: function() {\n if (!this._hideTimeout) {\n this._hideUnderlay();\n }\n this.props.onPressOut && this.props.onPressOut();\n },\n\n touchableHandlePress: function() {\n this.clearTimeout(this._hideTimeout);\n this._showUnderlay();\n this._hideTimeout = this.setTimeout(this._hideUnderlay,\n this.props.delayPressOut || 100);\n this.props.onPress && this.props.onPress();\n },\n\n touchableHandleLongPress: function() {\n this.props.onLongPress && this.props.onLongPress();\n },\n\n touchableGetPressRectOffset: function() {\n return PRESS_RECT_OFFSET; // Always make sure to predeclare a constant!\n },\n\n touchableGetHighlightDelayMS: function() {\n return this.props.delayPressIn;\n },\n\n touchableGetLongPressDelayMS: function() {\n return this.props.delayLongPress;\n },\n\n touchableGetPressOutDelayMS: function() {\n return this.props.delayPressOut;\n },\n\n _showUnderlay: function() {\n this.refs[UNDERLAY_REF].setNativeProps(this.state.activeUnderlayProps);\n this.refs[CHILD_REF].setNativeProps(this.state.activeProps);\n this.props.onShowUnderlay && this.props.onShowUnderlay();\n },\n\n _hideUnderlay: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n if (this.refs[UNDERLAY_REF]) {\n this.refs[CHILD_REF].setNativeProps(INACTIVE_CHILD_PROPS);\n this.refs[UNDERLAY_REF].setNativeProps({\n ...INACTIVE_UNDERLAY_PROPS,\n style: this.state.underlayStyle,\n });\n this.props.onHideUnderlay && this.props.onHideUnderlay();\n }\n },\n\n render: function() {\n return (\n <View\n ref={UNDERLAY_REF}\n style={this.state.underlayStyle}\n onStartShouldSetResponder={this.touchableHandleStartShouldSetResponder}\n onResponderTerminationRequest={this.touchableHandleResponderTerminationRequest}\n onResponderGrant={this.touchableHandleResponderGrant}\n onResponderMove={this.touchableHandleResponderMove}\n onResponderRelease={this.touchableHandleResponderRelease}\n onResponderTerminate={this.touchableHandleResponderTerminate}>\n {cloneWithProps(\n onlyChild(this.props.children),\n {\n ref: CHILD_REF,\n accessible: true,\n testID: this.props.testID,\n }\n )}\n </View>\n );\n }\n});\n\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\nvar CHILD_REF = keyOf({childRef: null});\nvar UNDERLAY_REF = keyOf({underlayRef: null});\nvar INACTIVE_CHILD_PROPS = {\n style: StyleSheet.create({x: {opacity: 1.0}}).x,\n};\nvar INACTIVE_UNDERLAY_PROPS = {\n style: StyleSheet.create({x: {backgroundColor: 'transparent'}}).x,\n};\n\nmodule.exports = TouchableHighlight;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/cloneWithProps.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactPropTransferer=require('ReactPropTransferer');\n\nvar keyOf=require('keyOf');\nvar warning=require('warning');\n\nvar CHILDREN_PROP=keyOf({children:null});\n\n\n\n\n\n\n\n\n\n\nfunction cloneWithProps(child,props){\nif(__DEV__){\nwarning(\n!child.ref,\n'You are calling cloneWithProps() on a child with a ref. This is ' + \n'dangerous because you\\'re creating a new child which will not be ' + \n'added as a ref to its parent.');}\n\n\n\nvar newProps=ReactPropTransferer.mergeProps(props,child.props);\n\n\nif(!newProps.hasOwnProperty(CHILDREN_PROP) && \nchild.props.hasOwnProperty(CHILDREN_PROP)){\nnewProps.children = child.props.children;}\n\n\n\n\nreturn ReactElement.createElement(child.type,newProps);}\n\n\nmodule.exports = cloneWithProps;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks static-only\n * @providesModule cloneWithProps\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactPropTransferer = require('ReactPropTransferer');\n\nvar keyOf = require('keyOf');\nvar warning = require('warning');\n\nvar CHILDREN_PROP = keyOf({children: null});\n\n/**\n * Sometimes you want to change the props of a child passed to you. Usually\n * this is to add a CSS class.\n *\n * @param {ReactElement} child child element you'd like to clone\n * @param {object} props props you'd like to modify. className and style will be\n * merged automatically.\n * @return {ReactElement} a clone of child with props merged in.\n */\nfunction cloneWithProps(child, props) {\n if (__DEV__) {\n warning(\n !child.ref,\n 'You are calling cloneWithProps() on a child with a ref. This is ' +\n 'dangerous because you\\'re creating a new child which will not be ' +\n 'added as a ref to its parent.'\n );\n }\n\n var newProps = ReactPropTransferer.mergeProps(props, child.props);\n\n // Use `child.props.children` if it is provided.\n if (!newProps.hasOwnProperty(CHILDREN_PROP) &&\n child.props.hasOwnProperty(CHILDREN_PROP)) {\n newProps.children = child.props.children;\n }\n\n // The current API doesn't retain _owner and _context, which is why this\n // doesn't use ReactElement.cloneAndReplaceProps.\n return ReactElement.createElement(child.type, newProps);\n}\n\nmodule.exports = cloneWithProps;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/cloneWithProps.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactPropTransferer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar emptyFunction=require('emptyFunction');\nvar joinClasses=require('joinClasses');\n\n\n\n\n\n\n\n\nfunction createTransferStrategy(mergeStrategy){\nreturn function(props,key,value){\nif(!props.hasOwnProperty(key)){\nprops[key] = value;}else \n{\nprops[key] = mergeStrategy(props[key],value);}};}\n\n\n\n\nvar transferStrategyMerge=createTransferStrategy(function(a,b){\n\n\n\nreturn assign({},b,a);});\n\n\n\n\n\n\n\nvar TransferStrategies={\n\n\n\nchildren:emptyFunction,\n\n\n\nclassName:createTransferStrategy(joinClasses),\n\n\n\nstyle:transferStrategyMerge};\n\n\n\n\n\n\n\n\n\n\nfunction transferInto(props,newProps){\nfor(var thisKey in newProps) {\nif(!newProps.hasOwnProperty(thisKey)){\ncontinue;}\n\n\nvar transferStrategy=TransferStrategies[thisKey];\n\nif(transferStrategy && TransferStrategies.hasOwnProperty(thisKey)){\ntransferStrategy(props,thisKey,newProps[thisKey]);}else \nif(!props.hasOwnProperty(thisKey)){\nprops[thisKey] = newProps[thisKey];}}\n\n\nreturn props;}\n\n\n\n\n\n\n\n\nvar ReactPropTransferer={\n\n\n\n\n\n\n\n\nmergeProps:function(oldProps,newProps){\nreturn transferInto(assign({},oldProps),newProps);}};\n\n\n\n\nmodule.exports = ReactPropTransferer;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTransferer\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar emptyFunction = require('emptyFunction');\nvar joinClasses = require('joinClasses');\n\n/**\n * Creates a transfer strategy that will merge prop values using the supplied\n * `mergeStrategy`. If a prop was previously unset, this just sets it.\n *\n * @param {function} mergeStrategy\n * @return {function}\n */\nfunction createTransferStrategy(mergeStrategy) {\n return function(props, key, value) {\n if (!props.hasOwnProperty(key)) {\n props[key] = value;\n } else {\n props[key] = mergeStrategy(props[key], value);\n }\n };\n}\n\nvar transferStrategyMerge = createTransferStrategy(function(a, b) {\n // `merge` overrides the first object's (`props[key]` above) keys using the\n // second object's (`value`) keys. An object's style's existing `propA` would\n // get overridden. Flip the order here.\n return assign({}, b, a);\n});\n\n/**\n * Transfer strategies dictate how props are transferred by `transferPropsTo`.\n * NOTE: if you add any more exceptions to this list you should be sure to\n * update `cloneWithProps()` accordingly.\n */\nvar TransferStrategies = {\n /**\n * Never transfer `children`.\n */\n children: emptyFunction,\n /**\n * Transfer the `className` prop by merging them.\n */\n className: createTransferStrategy(joinClasses),\n /**\n * Transfer the `style` prop (which is an object) by merging them.\n */\n style: transferStrategyMerge\n};\n\n/**\n * Mutates the first argument by transferring the properties from the second\n * argument.\n *\n * @param {object} props\n * @param {object} newProps\n * @return {object}\n */\nfunction transferInto(props, newProps) {\n for (var thisKey in newProps) {\n if (!newProps.hasOwnProperty(thisKey)) {\n continue;\n }\n\n var transferStrategy = TransferStrategies[thisKey];\n\n if (transferStrategy && TransferStrategies.hasOwnProperty(thisKey)) {\n transferStrategy(props, thisKey, newProps[thisKey]);\n } else if (!props.hasOwnProperty(thisKey)) {\n props[thisKey] = newProps[thisKey];\n }\n }\n return props;\n}\n\n/**\n * ReactPropTransferer are capable of transferring props to another component\n * using a `transferPropsTo` method.\n *\n * @class ReactPropTransferer\n */\nvar ReactPropTransferer = {\n\n /**\n * Merge two props objects using TransferStrategies.\n *\n * @param {object} oldProps original props (they take precedence)\n * @param {object} newProps new props to merge in\n * @return {object} a new object containing both sets of props merged.\n */\n mergeProps: function(oldProps, newProps) {\n return transferInto(assign({}, oldProps), newProps);\n }\n\n};\n\nmodule.exports = ReactPropTransferer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactPropTransferer.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/joinClasses.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction joinClasses(className){\nif(!className){\nclassName = '';}\n\nvar nextClass;\nvar argLength=arguments.length;\nif(argLength > 1){\nfor(var ii=1;ii < argLength;ii++) {\nnextClass = arguments[ii];\nif(nextClass){\nclassName = (className?className + ' ':'') + nextClass;}}}\n\n\n\nreturn className;}\n\n\nmodule.exports = joinClasses;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule joinClasses\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Combines multiple className strings into one.\n * http://jsperf.com/joinclasses-args-vs-array\n *\n * @param {...?string} classes\n * @return {string}\n */\nfunction joinClasses(className/*, ... */) {\n if (!className) {\n className = '';\n }\n var nextClass;\n var argLength = arguments.length;\n if (argLength > 1) {\n for (var ii = 1; ii < argLength; ii++) {\n nextClass = arguments[ii];\n if (nextClass) {\n className = (className ? className + ' ' : '') + nextClass;\n }\n }\n }\n return className;\n}\n\nmodule.exports = joinClasses;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/joinClasses.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensureComponentIsNative.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar ensureComponentIsNative=function(component){\ninvariant(\ncomponent && typeof component.setNativeProps === 'function',\n'Touchable child must either be native or forward setNativeProps to a ' + \n'native component');};\n\n\n\nmodule.exports = ensureComponentIsNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ensureComponentIsNative\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nvar ensureComponentIsNative = function(component: any) {\n invariant(\n component && typeof component.setNativeProps === 'function',\n 'Touchable child must either be native or forward setNativeProps to a ' +\n 'native component'\n );\n};\n\nmodule.exports = ensureComponentIsNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensureComponentIsNative.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar POPAnimationMixin=require('POPAnimationMixin');\nvar React=require('React');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\n\nvar cloneWithProps=require('cloneWithProps');\nvar ensureComponentIsNative=require('ensureComponentIsNative');\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar flattenStyle=require('flattenStyle');\nvar keyOf=require('keyOf');\nvar onlyChild=require('onlyChild');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TouchableOpacity=React.createClass({displayName:'TouchableOpacity',\nmixins:[TimerMixin,Touchable.Mixin,NativeMethodsMixin,POPAnimationMixin],\n\npropTypes:_extends({},\nTouchableWithoutFeedback.propTypes,{\n\n\n\n\nactiveOpacity:React.PropTypes.number}),\n\n\ngetDefaultProps:function(){\nreturn {\nactiveOpacity:0.2};},\n\n\n\ngetInitialState:function(){\nreturn this.touchableGetInitialState();},\n\n\ncomponentDidMount:function(){\nensurePositiveDelayProps(this.props);\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentDidUpdate:function(){\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nensurePositiveDelayProps(nextProps);},\n\n\nsetOpacityTo:function(value){\nif(POPAnimationMixin){\n\nthis.stopAllAnimations();\nvar anim={\ntype:this.AnimationTypes.linear,\nproperty:this.AnimationProperties.opacity,\nduration:0.15,\ntoValue:value};\n\nthis.startAnimation(CHILD_REF,anim);}else \n{\n\nthis.refs[CHILD_REF].setNativeProps({\nopacity:value});}},\n\n\n\n\n\n\n\n\ntouchableHandleActivePressIn:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nthis._opacityActive();\nthis.props.onPressIn && this.props.onPressIn();},\n\n\ntouchableHandleActivePressOut:function(){\nif(!this._hideTimeout){\nthis._opacityInactive();}\n\nthis.props.onPressOut && this.props.onPressOut();},\n\n\ntouchableHandlePress:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._opacityActive();\nthis._hideTimeout = this.setTimeout(\nthis._opacityInactive,\nthis.props.delayPressOut || 100);\n\nthis.props.onPress && this.props.onPress();},\n\n\ntouchableHandleLongPress:function(){\nthis.props.onLongPress && this.props.onLongPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ntouchableGetHighlightDelayMS:function(){\nreturn this.props.delayPressIn || 0;},\n\n\ntouchableGetLongPressDelayMS:function(){\nreturn this.props.delayLongPress === 0?0:\nthis.props.delayLongPress || 500;},\n\n\ntouchableGetPressOutDelayMS:function(){\nreturn this.props.delayPressOut;},\n\n\n_opacityActive:function(){\nthis.setOpacityTo(this.props.activeOpacity);},\n\n\n_opacityInactive:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nvar child=onlyChild(this.props.children);\nvar childStyle=flattenStyle(child.props.style) || {};\nthis.setOpacityTo(\nchildStyle.opacity === undefined?1:childStyle.opacity);},\n\n\n\nrender:function(){\nreturn cloneWithProps(onlyChild(this.props.children),{\nref:CHILD_REF,\naccessible:true,\ntestID:this.props.testID,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate});}});\n\n\n\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\n\nvar CHILD_REF=keyOf({childRef:null});\n\nmodule.exports = TouchableOpacity;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchableOpacity\n */\n'use strict';\n\n// Note (avik): add @flow when Flow supports spread properties in propTypes\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar POPAnimationMixin = require('POPAnimationMixin');\nvar React = require('React');\nvar TimerMixin = require('react-timer-mixin');\nvar Touchable = require('Touchable');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\n\nvar cloneWithProps = require('cloneWithProps');\nvar ensureComponentIsNative = require('ensureComponentIsNative');\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar flattenStyle = require('flattenStyle');\nvar keyOf = require('keyOf');\nvar onlyChild = require('onlyChild');\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, dimming it.\n * This is done without actually changing the view hierarchy, and in general is\n * easy to add to an app without weird side-effects.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n * return (\n * <TouchableOpacity onPress={this._onPressButton}>\n * <Image\n * style={styles.button}\n * source={require('image!myButton')}\n * />\n * </TouchableOpacity>\n * );\n * },\n * ```\n * > **NOTE**: TouchableOpacity supports only one child\n * >\n * > If you wish to have to have several child components, wrap them in a View.\n */\n\nvar TouchableOpacity = React.createClass({\n mixins: [TimerMixin, Touchable.Mixin, NativeMethodsMixin, POPAnimationMixin],\n\n propTypes: {\n ...TouchableWithoutFeedback.propTypes,\n /**\n * Determines what the opacity of the wrapped view should be when touch is\n * active.\n */\n activeOpacity: React.PropTypes.number,\n },\n\n getDefaultProps: function() {\n return {\n activeOpacity: 0.2,\n };\n },\n\n getInitialState: function() {\n return this.touchableGetInitialState();\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentDidUpdate: function() {\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentWillReceiveProps: function(nextProps) {\n ensurePositiveDelayProps(nextProps);\n },\n\n setOpacityTo: function(value) {\n if (POPAnimationMixin) {\n // Reset with animation if POP is available\n this.stopAllAnimations();\n var anim = {\n type: this.AnimationTypes.linear,\n property: this.AnimationProperties.opacity,\n duration: 0.15,\n toValue: value,\n };\n this.startAnimation(CHILD_REF, anim);\n } else {\n // Reset immediately if POP is unavailable\n this.refs[CHILD_REF].setNativeProps({\n opacity: value\n });\n }\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandleActivePressIn: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n this._opacityActive();\n this.props.onPressIn && this.props.onPressIn();\n },\n\n touchableHandleActivePressOut: function() {\n if (!this._hideTimeout) {\n this._opacityInactive();\n }\n this.props.onPressOut && this.props.onPressOut();\n },\n\n touchableHandlePress: function() {\n this.clearTimeout(this._hideTimeout);\n this._opacityActive();\n this._hideTimeout = this.setTimeout(\n this._opacityInactive,\n this.props.delayPressOut || 100\n );\n this.props.onPress && this.props.onPress();\n },\n\n touchableHandleLongPress: function() {\n this.props.onLongPress && this.props.onLongPress();\n },\n\n touchableGetPressRectOffset: function() {\n return PRESS_RECT_OFFSET; // Always make sure to predeclare a constant!\n },\n\n touchableGetHighlightDelayMS: function() {\n return this.props.delayPressIn || 0;\n },\n\n touchableGetLongPressDelayMS: function() {\n return this.props.delayLongPress === 0 ? 0 :\n this.props.delayLongPress || 500;\n },\n\n touchableGetPressOutDelayMS: function() {\n return this.props.delayPressOut;\n },\n\n _opacityActive: function() {\n this.setOpacityTo(this.props.activeOpacity);\n },\n\n _opacityInactive: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n var child = onlyChild(this.props.children);\n var childStyle = flattenStyle(child.props.style) || {};\n this.setOpacityTo(\n childStyle.opacity === undefined ? 1 : childStyle.opacity\n );\n },\n\n render: function() {\n return cloneWithProps(onlyChild(this.props.children), {\n ref: CHILD_REF,\n accessible: true,\n testID: this.props.testID,\n onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder,\n onResponderTerminationRequest: this.touchableHandleResponderTerminationRequest,\n onResponderGrant: this.touchableHandleResponderGrant,\n onResponderMove: this.touchableHandleResponderMove,\n onResponderRelease: this.touchableHandleResponderRelease,\n onResponderTerminate: this.touchableHandleResponderTerminate,\n });\n },\n});\n\n/**\n * When the scroll view is disabled, this defines how far your touch may move\n * off of the button, before deactivating the button. Once deactivated, try\n * moving it back and you'll see that the button is once again reactivated!\n * Move it back and forth several times while the scroll view is disabled.\n */\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\nvar CHILD_REF = keyOf({childRef: null});\n\nmodule.exports = TouchableOpacity;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/POPAnimationMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar POPAnimationOrNull=require('POPAnimation');\nvar React=require('React');\n\nif(!POPAnimationOrNull){\n\n\nmodule.exports = null;}else \n{\n\n\n\nvar POPAnimation=POPAnimationOrNull;\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nvar POPAnimationMixin={\n\n\n\n\nAnimationTypes:POPAnimation.Types,\nAnimationProperties:POPAnimation.Properties,\n\ngetInitialState:function(){\nthis._popAnimationEnqueuedAnimationTimeouts = [];\nreturn {\n_currentAnimationsByNodeHandle:{}};},\n\n\n\n_ensureBookkeepingSetup:function(nodeHandle){\nif(!this.state._currentAnimationsByNodeHandle[nodeHandle]){\nthis.state._currentAnimationsByNodeHandle[nodeHandle] = [];}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nstartAnimation:function(\nrefKey,\nanim,\ndoneCallback)\n{\nvar animID=0;\nif(typeof anim === 'number'){\nanimID = anim;}else \n{\ninvariant(\nanim instanceof Object && \nanim.type !== undefined && \nanim.property !== undefined,\n'Animation definitions must specify a type of animation and a ' + \n'property to animate.');\n\nanimID = POPAnimation.createAnimation(anim.type,anim);}\n\ninvariant(\nthis.refs[refKey],\n'Invalid refKey ' + refKey + ' for anim:\\n' + JSON.stringify(anim) + \n'\\nvalid refs: ' + JSON.stringify(Object.keys(this.refs)));\n\nvar refNodeHandle=React.findNodeHandle(this.refs[refKey]);\nthis.startAnimationWithNodeHandle(refNodeHandle,animID,doneCallback);},\n\n\n\n\n\n\n\n\nstartAnimationWithNodeHandle:function(\nnodeHandle,\nanimID,\ndoneCallback)\n{var _this=this;\nthis._ensureBookkeepingSetup(nodeHandle);\nvar animations=this.state._currentAnimationsByNodeHandle[nodeHandle];\nvar animIndex=animations.length;\nanimations.push(animID);\nvar cleanupWrapper=function(finished){\nif(!_this.isMounted()){\nreturn;}\n\nanimations[animIndex] = 0;\nvar allDone=true;\nfor(var ii=0;ii < animations.length;ii++) {\nif(animations[ii]){\nallDone = false;\nbreak;}}\n\n\nif(allDone){\n_this.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;}\n\ndoneCallback && doneCallback(finished);};\n\n\nvar animationTimeoutHandler=setTimeout(function(){\nPOPAnimation.addAnimation(nodeHandle,animID,cleanupWrapper);},\n1);\nthis._popAnimationEnqueuedAnimationTimeouts.push(animationTimeoutHandler);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nstartAnimations:function(\nanimations,\nonSuccess,\nonFailure)\n{var _this2=this;\nvar numReturned=0;\nvar numFinished=0;\nvar numAnimations=animations.length;\nvar metaCallback=function(finished){\nif(finished){\n++numFinished;}\n\nif(++numReturned === numAnimations){\nonSuccess && onSuccess(numFinished === numAnimations);}};\n\n\nanimations.forEach(function(anim){\nwarning(\nanim.ref != null || anim.nodeHandle != null && \n!anim.ref !== !anim.nodeHandle,\n'Animations must be specified with either ref xor nodeHandle');\n\nif(anim.ref){\n_this2.startAnimation(anim.ref,anim.anim,metaCallback);}else \nif(anim.nodeHandle){\n_this2.startAnimationWithNodeHandle(anim.nodeHandle,anim.anim,metaCallback);}});},\n\n\n\n\n\n\n\n\n\n\n\nstopNodeHandleAnimations:function(nodeHandle){\nif(!this.state._currentAnimationsByNodeHandle[nodeHandle]){\nreturn;}\n\nvar anims=this.state._currentAnimationsByNodeHandle[nodeHandle];\nfor(var i=0;i < anims.length;i++) {\nvar anim=anims[i];\nif(anim){\n\nPOPAnimation.removeAnimation(+nodeHandle,anim);}}\n\n\nthis.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;},\n\n\n\n\n\n\n\nstopAnimations:function(refKey){\ninvariant(this.refs[refKey],'invalid ref');\nthis.stopNodeHandleAnimations(React.findNodeHandle(this.refs[refKey]));},\n\n\n\n\n\n\nstopAllAnimations:function(){\nfor(var nodeHandle in this.state._currentAnimationsByNodeHandle) {\nthis.stopNodeHandleAnimations(nodeHandle);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nanimateToFrame:function(\nrefKey,\nframe,\ntype,\nvelocity,\ndoneCallback)\n{\nvar animFrame={\nx:frame.left + frame.width / 2,\ny:frame.top + frame.height / 2,\nw:frame.width,\nh:frame.height};\n\nvar posAnim=POPAnimation.createAnimation(type,{\nproperty:POPAnimation.Properties.position,\ntoValue:[animFrame.x,animFrame.y],\nvelocity:velocity || [0,0]});\n\nvar sizeAnim=POPAnimation.createAnimation(type,{\nproperty:POPAnimation.Properties.size,\ntoValue:[animFrame.w,animFrame.h]});\n\nthis.startAnimation(refKey,posAnim,doneCallback);\nthis.startAnimation(refKey,sizeAnim);},\n\n\n\ncomponentWillUnmount:function(){\nthis.stopAllAnimations();\nthis._popAnimationEnqueuedAnimationTimeouts.forEach(function(animationTimeoutHandler){\nclearTimeout(animationTimeoutHandler);});\n\nthis._popAnimationEnqueuedAnimationTimeouts = [];}};\n\n\n\nmodule.exports = POPAnimationMixin;}","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule POPAnimationMixin\n * @flow\n */\n'use strict';\n\nvar POPAnimationOrNull = require('POPAnimation');\nvar React = require('React');\n\nif (!POPAnimationOrNull) {\n // POP animation isn't available in the OSS fork - this is a temporary\n // workaround to enable its availability to be determined at runtime.\n module.exports = (null : ?{});\n} else {\n\n// At this point, POPAnimationOrNull is guaranteed to be\n// non-null. Bring it local to preserve type refinement.\nvar POPAnimation = POPAnimationOrNull;\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nvar POPAnimationMixin = {\n /**\n * Different ways to interpolate between beginning and end states\n * of properties during animation, such as spring, linear, and decay.\n */\n AnimationTypes: POPAnimation.Types,\n AnimationProperties: POPAnimation.Properties,\n\n getInitialState: function(): Object {\n this._popAnimationEnqueuedAnimationTimeouts = [];\n return {\n _currentAnimationsByNodeHandle: {},\n };\n },\n\n _ensureBookkeepingSetup: function(nodeHandle: any) {\n if (!this.state._currentAnimationsByNodeHandle[nodeHandle]) {\n this.state._currentAnimationsByNodeHandle[nodeHandle] = [];\n }\n },\n\n /**\n * Start animating the View with ref `refKey`.\n *\n * @param {key} refKey The key to reference the View to be animated.\n *\n * @param {number|Object} anim Either the identifier returned by\n * POPAnimation.create* or an object defining all the necessary\n * properties of the animation you wish to start (including type, matching\n * an entry in AnimationTypes).\n *\n * @param {func} doneCallback A callback fired when the animation is done, and\n * is passed a `finished` param that indicates whether the animation\n * completely finished, or was interrupted.\n */\n startAnimation: function(\n refKey: string,\n anim: number | {type: number; property: number;},\n doneCallback: (finished: bool) => void\n ) {\n var animID: number = 0;\n if (typeof anim === 'number') {\n animID = anim;\n } else {\n invariant(\n anim instanceof Object &&\n anim.type !== undefined &&\n anim.property !== undefined,\n 'Animation definitions must specify a type of animation and a ' +\n 'property to animate.'\n );\n animID = POPAnimation.createAnimation(anim.type, anim);\n }\n invariant(\n this.refs[refKey],\n 'Invalid refKey ' + refKey + ' for anim:\\n' + JSON.stringify(anim) +\n '\\nvalid refs: ' + JSON.stringify(Object.keys(this.refs))\n );\n var refNodeHandle = React.findNodeHandle(this.refs[refKey]);\n this.startAnimationWithNodeHandle(refNodeHandle, animID, doneCallback);\n },\n\n /**\n * Starts an animation on a native node.\n *\n * @param {NodeHandle} nodeHandle Handle to underlying native node.\n * @see `startAnimation`.\n */\n startAnimationWithNodeHandle: function(\n nodeHandle: any,\n animID: number,\n doneCallback: (finished: bool) => void\n ) {\n this._ensureBookkeepingSetup(nodeHandle);\n var animations = this.state._currentAnimationsByNodeHandle[nodeHandle];\n var animIndex = animations.length;\n animations.push(animID);\n var cleanupWrapper = (finished) => {\n if (!this.isMounted()) {\n return;\n }\n animations[animIndex] = 0; // zero it out so we don't try to stop it\n var allDone = true;\n for (var ii = 0; ii < animations.length; ii++) {\n if (animations[ii]) {\n allDone = false;\n break;\n }\n }\n if (allDone) {\n this.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;\n }\n doneCallback && doneCallback(finished);\n };\n // Hack to aviod race condition in POP:\n var animationTimeoutHandler = setTimeout(() => {\n POPAnimation.addAnimation(nodeHandle, animID, cleanupWrapper);\n }, 1);\n this._popAnimationEnqueuedAnimationTimeouts.push(animationTimeoutHandler);\n },\n\n /**\n * Starts multiple animations with one shared callback that is called when all\n * animations complete.\n *\n * @param {Array(Object} animations Array of objects defining all the\n * animations to start, each with shape `{ref|nodeHandle, anim}`.\n * @param {func} onSuccess A callback fired when all animations have returned,\n * and is passed a finished arg that is true if all animations finished\n * completely.\n * @param {func} onFailure Not supported yet.\n */\n startAnimations: function(\n animations: Array<Object>,\n onSuccess: (finished: boolean) => void,\n onFailure: () => void\n ) {\n var numReturned = 0;\n var numFinished = 0;\n var numAnimations = animations.length;\n var metaCallback = (finished) => {\n if (finished) {\n ++numFinished;\n }\n if (++numReturned === numAnimations) {\n onSuccess && onSuccess(numFinished === numAnimations);\n }\n };\n animations.forEach((anim) => {\n warning(\n anim.ref != null || anim.nodeHandle != null &&\n !anim.ref !== !anim.nodeHandle,\n 'Animations must be specified with either ref xor nodeHandle'\n );\n if (anim.ref) {\n this.startAnimation(anim.ref, anim.anim, metaCallback);\n } else if (anim.nodeHandle) {\n this.startAnimationWithNodeHandle(anim.nodeHandle, anim.anim, metaCallback);\n }\n });\n },\n\n /**\n * Stop any and all animations operating on the View with native node handle\n * `nodeHandle`.\n *\n * @param {NodeHandle} component The instance to stop animations\n * on. Do not pass a composite component.\n */\n stopNodeHandleAnimations: function(nodeHandle: any) {\n if (!this.state._currentAnimationsByNodeHandle[nodeHandle]) {\n return;\n }\n var anims = this.state._currentAnimationsByNodeHandle[nodeHandle];\n for (var i = 0; i < anims.length; i++) {\n var anim = anims[i];\n if (anim) {\n // Note: Converting the string key to a number `nodeHandle`.\n POPAnimation.removeAnimation(+nodeHandle, anim);\n }\n }\n this.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;\n },\n\n /**\n * Stop any and all animations operating on the View with ref `refKey`.\n *\n * @param {key} refKey The key to reference the View to be animated.\n */\n stopAnimations: function(refKey: string) {\n invariant(this.refs[refKey], 'invalid ref');\n this.stopNodeHandleAnimations(React.findNodeHandle(this.refs[refKey]));\n },\n\n /**\n * Stop any and all animations created by this component on itself and\n * subviews.\n */\n stopAllAnimations: function() {\n for (var nodeHandle in this.state._currentAnimationsByNodeHandle) {\n this.stopNodeHandleAnimations(nodeHandle);\n }\n },\n\n /**\n * Animates size and position of a view referenced by `refKey` to a specific\n * frame.\n *\n * @param {key} refKey ref key for view to animate.\n * @param {Object} frame The frame to animate the view to, specified as {left,\n * top, width, height}.\n * @param {const} type What type of interpolation to use, selected from\n * `inperpolationTypes`.\n * @param {Object} event Event encapsulating synthetic and native data that\n * may have triggered this animation. Velocity is extracted from it if\n * possible and applied to the animation.\n * @param {func} doneCallback A callback fired when the animation is done, and\n * is passed a `finished` param that indicates whether the animation\n * completely finished, or was interrupted.\n */\n animateToFrame: function(\n refKey: string,\n frame: {left: number; top: number; width: number; height: number;},\n type: number,\n velocity: number,\n doneCallback: (finished: boolean) => void\n ) {\n var animFrame = { // Animations use a centered coordinate system.\n x: frame.left + frame.width / 2,\n y: frame.top + frame.height / 2,\n w: frame.width,\n h: frame.height\n };\n var posAnim = POPAnimation.createAnimation(type, {\n property: POPAnimation.Properties.position,\n toValue: [animFrame.x, animFrame.y],\n velocity: velocity || [0, 0],\n });\n var sizeAnim = POPAnimation.createAnimation(type, {\n property: POPAnimation.Properties.size,\n toValue: [animFrame.w, animFrame.h]\n });\n this.startAnimation(refKey, posAnim, doneCallback);\n this.startAnimation(refKey, sizeAnim);\n },\n\n // Cleanup any potentially leaked animations.\n componentWillUnmount: function() {\n this.stopAllAnimations();\n this._popAnimationEnqueuedAnimationTimeouts.forEach(animationTimeoutHandler => {\n clearTimeout(animationTimeoutHandler);\n });\n this._popAnimationEnqueuedAnimationTimeouts = [];\n }\n};\n\nmodule.exports = POPAnimationMixin;\n\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/POPAnimationMixin.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/POPAnimation.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar RCTPOPAnimationManager=require('NativeModules').POPAnimationManager;\nif(!RCTPOPAnimationManager){\n\n\n\n\nmodule.exports = null;}else \n{\n\nvar ReactPropTypes=require('ReactPropTypes');\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar getObjectValues=require('getObjectValues');\nvar invariant=require('invariant');\nvar merge=require('merge');\n\nvar RCTTypes=RCTPOPAnimationManager.Types;\nvar RCTProperties=RCTPOPAnimationManager.Properties;\n\nvar Properties={\nbounds:RCTProperties.bounds,\nopacity:RCTProperties.opacity,\nposition:RCTProperties.position,\npositionX:RCTProperties.positionX,\npositionY:RCTProperties.positionY,\nzPosition:RCTProperties.zPosition,\nrotation:RCTProperties.rotation,\nrotationX:RCTProperties.rotationX,\nrotationY:RCTProperties.rotationY,\nscaleX:RCTProperties.scaleX,\nscaleXY:RCTProperties.scaleXY,\nscaleY:RCTProperties.scaleY,\nshadowColor:RCTProperties.shadowColor,\nshadowOffset:RCTProperties.shadowOffset,\nshadowOpacity:RCTProperties.shadowOpacity,\nshadowRadius:RCTProperties.shadowRadius,\nsize:RCTProperties.size,\nsubscaleXY:RCTProperties.subscaleXY,\nsubtranslationX:RCTProperties.subtranslationX,\nsubtranslationXY:RCTProperties.subtranslationXY,\nsubtranslationY:RCTProperties.subtranslationY,\nsubtranslationZ:RCTProperties.subtranslationZ,\ntranslationX:RCTProperties.translationX,\ntranslationXY:RCTProperties.translationXY,\ntranslationY:RCTProperties.translationY,\ntranslationZ:RCTProperties.translationZ};\n\n\nvar Types={\ndecay:RCTTypes.decay,\neaseIn:RCTTypes.easeIn,\neaseInEaseOut:RCTTypes.easeInEaseOut,\neaseOut:RCTTypes.easeOut,\nlinear:RCTTypes.linear,\nspring:RCTTypes.spring};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar POPAnimation={\nTypes:Types,\nProperties:Properties,\n\nattributeChecker:createStrictShapeTypeChecker({\ntype:ReactPropTypes.oneOf(getObjectValues(Types)),\nproperty:ReactPropTypes.oneOf(getObjectValues(Properties)),\nfromValue:ReactPropTypes.any,\ntoValue:ReactPropTypes.any,\nduration:ReactPropTypes.any,\nvelocity:ReactPropTypes.any,\ndeceleration:ReactPropTypes.any,\nspringBounciness:ReactPropTypes.any,\ndynamicsFriction:ReactPropTypes.any,\ndynamicsMass:ReactPropTypes.any,\ndynamicsTension:ReactPropTypes.any}),\n\n\nlastUsedTag:0,\nallocateTagForAnimation:function(){\nreturn ++this.lastUsedTag;},\n\n\ncreateAnimation:function(typeName,attrs){\nvar tag=this.allocateTagForAnimation();\n\nif(__DEV__){\nPOPAnimation.attributeChecker(\n{attrs:attrs},\n'attrs',\n'POPAnimation.createAnimation');\n\nPOPAnimation.attributeChecker(\n{attrs:{type:typeName}},\n'attrs',\n'POPAnimation.createAnimation');}\n\n\n\nRCTPOPAnimationManager.createAnimationInternal(tag,typeName,attrs);\nreturn tag;},\n\n\ncreateSpringAnimation:function(attrs){\nreturn this.createAnimation(this.Types.spring,attrs);},\n\n\ncreateDecayAnimation:function(attrs){\nreturn this.createAnimation(this.Types.decay,attrs);},\n\n\ncreateLinearAnimation:function(attrs){\nreturn this.createAnimation(this.Types.linear,attrs);},\n\n\ncreateEaseInAnimation:function(attrs){\nreturn this.createAnimation(this.Types.easeIn,attrs);},\n\n\ncreateEaseOutAnimation:function(attrs){\nreturn this.createAnimation(this.Types.easeOut,attrs);},\n\n\ncreateEaseInEaseOutAnimation:function(attrs){\nreturn this.createAnimation(this.Types.easeInEaseOut,attrs);},\n\n\naddAnimation:function(nodeHandle,anim,callback){\nRCTPOPAnimationManager.addAnimation(nodeHandle,anim,callback);},\n\n\nremoveAnimation:function(nodeHandle,anim){\nRCTPOPAnimationManager.removeAnimation(nodeHandle,anim);}};\n\n\n\n\n\nif(__DEV__){\nvar allProperties=merge(\nRCTPOPAnimationManager.Properties,\nRCTPOPAnimationManager.Properties);\n\nfor(var key in allProperties) {\ninvariant(\nPOPAnimation.Properties[key] === RCTPOPAnimationManager.Properties[key],\n'POPAnimation doesn\\'t copy property ' + key + ' correctly');}\n\n\n\nvar allTypes=merge(\nRCTPOPAnimationManager.Types,\nRCTPOPAnimationManager.Types);\n\nfor(var key in allTypes) {\ninvariant(\nPOPAnimation.Types[key] === RCTPOPAnimationManager.Types[key],\n'POPAnimation doesn\\'t copy type ' + key + ' correctly');}}\n\n\n\n\nmodule.exports = POPAnimation;}","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule POPAnimation\n */\n'use strict';\n\nvar RCTPOPAnimationManager = require('NativeModules').POPAnimationManager;\nif (!RCTPOPAnimationManager) {\n // POP animation isn't available in the OSS fork - this is a temporary\n // workaround to enable its availability to be determined at runtime.\n // For Flow let's pretend like we always export POPAnimation\n // so all our users don't need to do null checks\n module.exports = null;\n} else {\n\nvar ReactPropTypes = require('ReactPropTypes');\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar getObjectValues = require('getObjectValues');\nvar invariant = require('invariant');\nvar merge = require('merge');\n\nvar RCTTypes = RCTPOPAnimationManager.Types;\nvar RCTProperties = RCTPOPAnimationManager.Properties;\n\nvar Properties = {\n bounds: RCTProperties.bounds,\n opacity: RCTProperties.opacity,\n position: RCTProperties.position,\n positionX: RCTProperties.positionX,\n positionY: RCTProperties.positionY,\n zPosition: RCTProperties.zPosition,\n rotation: RCTProperties.rotation,\n rotationX: RCTProperties.rotationX,\n rotationY: RCTProperties.rotationY,\n scaleX: RCTProperties.scaleX,\n scaleXY: RCTProperties.scaleXY,\n scaleY: RCTProperties.scaleY,\n shadowColor: RCTProperties.shadowColor,\n shadowOffset: RCTProperties.shadowOffset,\n shadowOpacity: RCTProperties.shadowOpacity,\n shadowRadius: RCTProperties.shadowRadius,\n size: RCTProperties.size,\n subscaleXY: RCTProperties.subscaleXY,\n subtranslationX: RCTProperties.subtranslationX,\n subtranslationXY: RCTProperties.subtranslationXY,\n subtranslationY: RCTProperties.subtranslationY,\n subtranslationZ: RCTProperties.subtranslationZ,\n translationX: RCTProperties.translationX,\n translationXY: RCTProperties.translationXY,\n translationY: RCTProperties.translationY,\n translationZ: RCTProperties.translationZ,\n};\n\nvar Types = {\n decay: RCTTypes.decay,\n easeIn: RCTTypes.easeIn,\n easeInEaseOut: RCTTypes.easeInEaseOut,\n easeOut: RCTTypes.easeOut,\n linear: RCTTypes.linear,\n spring: RCTTypes.spring,\n};\n\ntype Attrs = {\n type?: $Enum<typeof Types>;\n property?: $Enum<typeof Properties>;\n fromValue?: any;\n toValue?: any;\n duration?: any;\n velocity?: any;\n deceleration?: any;\n springBounciness?: any;\n dynamicsFriction?: any;\n dynamicsMass?: any;\n dynamicsTension?: any;\n}\n\nvar POPAnimation = {\n Types: Types,\n Properties: Properties,\n\n attributeChecker: createStrictShapeTypeChecker({\n type: ReactPropTypes.oneOf(getObjectValues(Types)),\n property: ReactPropTypes.oneOf(getObjectValues(Properties)),\n fromValue: ReactPropTypes.any,\n toValue: ReactPropTypes.any,\n duration: ReactPropTypes.any,\n velocity: ReactPropTypes.any,\n deceleration: ReactPropTypes.any,\n springBounciness: ReactPropTypes.any,\n dynamicsFriction: ReactPropTypes.any,\n dynamicsMass: ReactPropTypes.any,\n dynamicsTension: ReactPropTypes.any,\n }),\n\n lastUsedTag: 0,\n allocateTagForAnimation: function(): number {\n return ++this.lastUsedTag;\n },\n\n createAnimation: function(typeName: number, attrs: Attrs): number {\n var tag = this.allocateTagForAnimation();\n\n if (__DEV__) {\n POPAnimation.attributeChecker(\n {attrs},\n 'attrs',\n 'POPAnimation.createAnimation'\n );\n POPAnimation.attributeChecker(\n {attrs: {type: typeName}},\n 'attrs',\n 'POPAnimation.createAnimation'\n );\n }\n\n RCTPOPAnimationManager.createAnimationInternal(tag, typeName, attrs);\n return tag;\n },\n\n createSpringAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.spring, attrs);\n },\n\n createDecayAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.decay, attrs);\n },\n\n createLinearAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.linear, attrs);\n },\n\n createEaseInAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.easeIn, attrs);\n },\n\n createEaseOutAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.easeOut, attrs);\n },\n\n createEaseInEaseOutAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.easeInEaseOut, attrs);\n },\n\n addAnimation: function(nodeHandle: any, anim: number, callback: Function) {\n RCTPOPAnimationManager.addAnimation(nodeHandle, anim, callback);\n },\n\n removeAnimation: function(nodeHandle: any, anim: number) {\n RCTPOPAnimationManager.removeAnimation(nodeHandle, anim);\n },\n};\n\n// Make sure that we correctly propagate RCTPOPAnimationManager constants\n// to POPAnimation\nif (__DEV__) {\n var allProperties = merge(\n RCTPOPAnimationManager.Properties,\n RCTPOPAnimationManager.Properties\n );\n for (var key in allProperties) {\n invariant(\n POPAnimation.Properties[key] === RCTPOPAnimationManager.Properties[key],\n 'POPAnimation doesn\\'t copy property ' + key + ' correctly'\n );\n }\n\n var allTypes = merge(\n RCTPOPAnimationManager.Types,\n RCTPOPAnimationManager.Types\n );\n for (var key in allTypes) {\n invariant(\n POPAnimation.Types[key] === RCTPOPAnimationManager.Types[key],\n 'POPAnimation doesn\\'t copy type ' + key + ' correctly'\n );\n }\n}\n\nmodule.exports = POPAnimation;\n\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/POPAnimation.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/getObjectValues.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ngetObjectValues(obj){\nvar values=[];\nfor(var key in obj) {\nvalues.push(obj[key]);}\n\nreturn values;}\n\n\nmodule.exports = getObjectValues;","sourceCode":"/**\n * @generated SignedSource<<d15b8e694c4a339791cddebd93264270>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule getObjectValues\n * @typechecks\n */\n\n/**\n * Retrieve an object's values as an array.\n *\n * If you are looking for a function that creates an Array instance based\n * on an \"Array-like\" object, use createArrayFrom instead.\n *\n * @param {object} obj An object.\n * @return {array} The object's values.\n */\nfunction getObjectValues(obj) {\n var values = [];\n for (var key in obj) {\n values.push(obj[key]);\n }\n return values;\n}\n\nmodule.exports = getObjectValues;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/getObjectValues.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/WebView/WebView.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ActivityIndicatorIOS=require('ActivityIndicatorIOS');\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar PropTypes=React.PropTypes;\nvar RCTWebViewManager=require('NativeModules').WebViewManager;\n\nvar BGWASH='rgba(255,255,255,0.8)';\nvar RCT_WEBVIEW_REF='webview';\n\nvar WebViewState=keyMirror({\nIDLE:null,\nLOADING:null,\nERROR:null});\n\n\nvar NavigationType={\nclick:RCTWebViewManager.NavigationType.LinkClicked,\nformsubmit:RCTWebViewManager.NavigationType.FormSubmitted,\nbackforward:RCTWebViewManager.NavigationType.BackForward,\nreload:RCTWebViewManager.NavigationType.Reload,\nformresubmit:RCTWebViewManager.NavigationType.FormResubmitted,\nother:RCTWebViewManager.NavigationType.Other};\n\n\nvar JSNavigationScheme=RCTWebViewManager.JSNavigationScheme;\n\n\n\n\n\n\n\n\n\nvar defaultRenderLoading=function(){return (\nReact.createElement(View,{style:styles.loadingView},\nReact.createElement(ActivityIndicatorIOS,null)));};\n\n\nvar defaultRenderError=function(errorDomain,errorCode,errorDesc){return (\nReact.createElement(View,{style:styles.errorContainer},\nReact.createElement(Text,{style:styles.errorTextTitle},'Error loading page'),\n\n\nReact.createElement(Text,{style:styles.errorText},\n'Domain: ' + errorDomain),\n\nReact.createElement(Text,{style:styles.errorText},\n'Error Code: ' + errorCode),\n\nReact.createElement(Text,{style:styles.errorText},\n'Description: ' + errorDesc)));};\n\n\n\n\nvar WebView=React.createClass({displayName:'WebView',\nstatics:{\nJSNavigationScheme:JSNavigationScheme,\nNavigationType:NavigationType},\n\n\npropTypes:{\nurl:PropTypes.string,\nhtml:PropTypes.string,\nrenderError:PropTypes.func,\nrenderLoading:PropTypes.func,\nbounces:PropTypes.bool,\nscrollEnabled:PropTypes.bool,\nautomaticallyAdjustContentInsets:PropTypes.bool,\ncontentInset:EdgeInsetsPropType,\nonNavigationStateChange:PropTypes.func,\nstartInLoadingState:PropTypes.bool,\nstyle:View.propTypes.style,\n\n\n\njavaScriptEnabledAndroid:PropTypes.bool,\n\n\n\ninjectedJavaScript:PropTypes.string,\n\n\n\n\n\nscalesPageToFit:PropTypes.bool},\n\n\ngetInitialState:function(){\nreturn {\nviewState:WebViewState.IDLE,\nlastErrorEvent:null,\nstartInLoadingState:true};},\n\n\n\ncomponentWillMount:function(){\nif(this.props.startInLoadingState){\nthis.setState({viewState:WebViewState.LOADING});}},\n\n\n\nrender:function(){\nvar otherView=null;\n\nif(this.state.viewState === WebViewState.LOADING){\notherView = (this.props.renderLoading || defaultRenderLoading)();}else \nif(this.state.viewState === WebViewState.ERROR){\nvar errorEvent=this.state.lastErrorEvent;\ninvariant(\nerrorEvent != null,\n'lastErrorEvent expected to be non-null');\n\notherView = (this.props.renderError || defaultRenderError)(\nerrorEvent.domain,\nerrorEvent.code,\nerrorEvent.description);}else \n\nif(this.state.viewState !== WebViewState.IDLE){\nconsole.error(\n'RCTWebView invalid state encountered: ' + this.state.loading);}\n\n\n\nvar webViewStyles=[styles.container,styles.webView,this.props.style];\nif(this.state.viewState === WebViewState.LOADING || \nthis.state.viewState === WebViewState.ERROR){\n\nwebViewStyles.push(styles.hidden);}\n\n\nvar webView=\nReact.createElement(RCTWebView,{\nref:RCT_WEBVIEW_REF,\nkey:'webViewKey',\nstyle:webViewStyles,\nurl:this.props.url,\nhtml:this.props.html,\ninjectedJavaScript:this.props.injectedJavaScript,\nbounces:this.props.bounces,\nscrollEnabled:this.props.scrollEnabled,\ncontentInset:this.props.contentInset,\nautomaticallyAdjustContentInsets:this.props.automaticallyAdjustContentInsets,\nonLoadingStart:this.onLoadingStart,\nonLoadingFinish:this.onLoadingFinish,\nonLoadingError:this.onLoadingError,\nscalesPageToFit:this.props.scalesPageToFit});\n\n\nreturn (\nReact.createElement(View,{style:styles.container},\nwebView,\notherView));},\n\n\n\n\ngoForward:function(){\nRCTWebViewManager.goForward(this.getWebViewHandle());},\n\n\ngoBack:function(){\nRCTWebViewManager.goBack(this.getWebViewHandle());},\n\n\nreload:function(){\nRCTWebViewManager.reload(this.getWebViewHandle());},\n\n\n\n\n\n\nupdateNavigationState:function(event){\nif(this.props.onNavigationStateChange){\nthis.props.onNavigationStateChange(event.nativeEvent);}},\n\n\n\ngetWebViewHandle:function(){\nreturn React.findNodeHandle(this.refs[RCT_WEBVIEW_REF]);},\n\n\nonLoadingStart:function(event){\nthis.updateNavigationState(event);},\n\n\nonLoadingError:function(event){\nevent.persist();\nconsole.error('Encountered an error loading page',event.nativeEvent);\n\nthis.setState({\nlastErrorEvent:event.nativeEvent,\nviewState:WebViewState.ERROR});},\n\n\n\nonLoadingFinish:function(event){\nthis.setState({\nviewState:WebViewState.IDLE});\n\nthis.updateNavigationState(event);}});\n\n\n\nvar RCTWebView=requireNativeComponent('RCTWebView',WebView);\n\nvar styles=StyleSheet.create({\ncontainer:{\nflex:1},\n\nerrorContainer:{\nflex:1,\njustifyContent:'center',\nalignItems:'center',\nbackgroundColor:BGWASH},\n\nerrorText:{\nfontSize:14,\ntextAlign:'center',\nmarginBottom:2},\n\nerrorTextTitle:{\nfontSize:15,\nfontWeight:'500',\nmarginBottom:10},\n\nhidden:{\nheight:0,\nflex:0},\n\nloadingView:{\nbackgroundColor:BGWASH,\nflex:1,\njustifyContent:'center',\nalignItems:'center'},\n\nwebView:{\nbackgroundColor:'#ffffff'}});\n\n\n\nmodule.exports = WebView;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule WebView\n * @flow\n */\n'use strict';\n\nvar ActivityIndicatorIOS = require('ActivityIndicatorIOS');\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\n\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar PropTypes = React.PropTypes;\nvar RCTWebViewManager = require('NativeModules').WebViewManager;\n\nvar BGWASH = 'rgba(255,255,255,0.8)';\nvar RCT_WEBVIEW_REF = 'webview';\n\nvar WebViewState = keyMirror({\n IDLE: null,\n LOADING: null,\n ERROR: null,\n});\n\nvar NavigationType = {\n click: RCTWebViewManager.NavigationType.LinkClicked,\n formsubmit: RCTWebViewManager.NavigationType.FormSubmitted,\n backforward: RCTWebViewManager.NavigationType.BackForward,\n reload: RCTWebViewManager.NavigationType.Reload,\n formresubmit: RCTWebViewManager.NavigationType.FormResubmitted,\n other: RCTWebViewManager.NavigationType.Other,\n};\n\nvar JSNavigationScheme = RCTWebViewManager.JSNavigationScheme;\n\ntype ErrorEvent = {\n domain: any;\n code: any;\n description: any;\n}\n\ntype Event = Object;\n\nvar defaultRenderLoading = () => (\n <View style={styles.loadingView}>\n <ActivityIndicatorIOS />\n </View>\n);\nvar defaultRenderError = (errorDomain, errorCode, errorDesc) => (\n <View style={styles.errorContainer}>\n <Text style={styles.errorTextTitle}>\n Error loading page\n </Text>\n <Text style={styles.errorText}>\n {'Domain: ' + errorDomain}\n </Text>\n <Text style={styles.errorText}>\n {'Error Code: ' + errorCode}\n </Text>\n <Text style={styles.errorText}>\n {'Description: ' + errorDesc}\n </Text>\n </View>\n);\n\nvar WebView = React.createClass({\n statics: {\n JSNavigationScheme: JSNavigationScheme,\n NavigationType: NavigationType,\n },\n\n propTypes: {\n url: PropTypes.string,\n html: PropTypes.string,\n renderError: PropTypes.func, // view to show if there's an error\n renderLoading: PropTypes.func, // loading indicator to show\n bounces: PropTypes.bool,\n scrollEnabled: PropTypes.bool,\n automaticallyAdjustContentInsets: PropTypes.bool,\n contentInset: EdgeInsetsPropType,\n onNavigationStateChange: PropTypes.func,\n startInLoadingState: PropTypes.bool, // force WebView to show loadingView on first load\n style: View.propTypes.style,\n /**\n * Used for android only, JS is enabled by default for WebView on iOS\n */\n javaScriptEnabledAndroid: PropTypes.bool,\n /**\n * Sets the JS to be injected when the webpage loads.\n */\n injectedJavaScript: PropTypes.string,\n\n /**\n * Used for iOS only, sets whether the webpage scales to fit the view and the\n * user can change the scale\n */\n scalesPageToFit: PropTypes.bool,\n },\n\n getInitialState: function() {\n return {\n viewState: WebViewState.IDLE,\n lastErrorEvent: (null: ?ErrorEvent),\n startInLoadingState: true,\n };\n },\n\n componentWillMount: function() {\n if (this.props.startInLoadingState) {\n this.setState({viewState: WebViewState.LOADING});\n }\n },\n\n render: function() {\n var otherView = null;\n\n if (this.state.viewState === WebViewState.LOADING) {\n otherView = (this.props.renderLoading || defaultRenderLoading)();\n } else if (this.state.viewState === WebViewState.ERROR) {\n var errorEvent = this.state.lastErrorEvent;\n invariant(\n errorEvent != null,\n 'lastErrorEvent expected to be non-null'\n );\n otherView = (this.props.renderError || defaultRenderError)(\n errorEvent.domain,\n errorEvent.code,\n errorEvent.description\n );\n } else if (this.state.viewState !== WebViewState.IDLE) {\n console.error(\n 'RCTWebView invalid state encountered: ' + this.state.loading\n );\n }\n\n var webViewStyles = [styles.container, styles.webView, this.props.style];\n if (this.state.viewState === WebViewState.LOADING ||\n this.state.viewState === WebViewState.ERROR) {\n // if we're in either LOADING or ERROR states, don't show the webView\n webViewStyles.push(styles.hidden);\n }\n\n var webView =\n <RCTWebView\n ref={RCT_WEBVIEW_REF}\n key=\"webViewKey\"\n style={webViewStyles}\n url={this.props.url}\n html={this.props.html}\n injectedJavaScript={this.props.injectedJavaScript}\n bounces={this.props.bounces}\n scrollEnabled={this.props.scrollEnabled}\n contentInset={this.props.contentInset}\n automaticallyAdjustContentInsets={this.props.automaticallyAdjustContentInsets}\n onLoadingStart={this.onLoadingStart}\n onLoadingFinish={this.onLoadingFinish}\n onLoadingError={this.onLoadingError}\n scalesPageToFit={this.props.scalesPageToFit}\n />;\n\n return (\n <View style={styles.container}>\n {webView}\n {otherView}\n </View>\n );\n },\n\n goForward: function() {\n RCTWebViewManager.goForward(this.getWebViewHandle());\n },\n\n goBack: function() {\n RCTWebViewManager.goBack(this.getWebViewHandle());\n },\n\n reload: function() {\n RCTWebViewManager.reload(this.getWebViewHandle());\n },\n\n /**\n * We return an event with a bunch of fields including:\n * url, title, loading, canGoBack, canGoForward\n */\n updateNavigationState: function(event: Event) {\n if (this.props.onNavigationStateChange) {\n this.props.onNavigationStateChange(event.nativeEvent);\n }\n },\n\n getWebViewHandle: function(): any {\n return React.findNodeHandle(this.refs[RCT_WEBVIEW_REF]);\n },\n\n onLoadingStart: function(event: Event) {\n this.updateNavigationState(event);\n },\n\n onLoadingError: function(event: Event) {\n event.persist(); // persist this event because we need to store it\n console.error('Encountered an error loading page', event.nativeEvent);\n\n this.setState({\n lastErrorEvent: event.nativeEvent,\n viewState: WebViewState.ERROR\n });\n },\n\n onLoadingFinish: function(event: Event) {\n this.setState({\n viewState: WebViewState.IDLE,\n });\n this.updateNavigationState(event);\n },\n});\n\nvar RCTWebView = requireNativeComponent('RCTWebView', WebView);\n\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n errorContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: BGWASH,\n },\n errorText: {\n fontSize: 14,\n textAlign: 'center',\n marginBottom: 2,\n },\n errorTextTitle: {\n fontSize: 15,\n fontWeight: '500',\n marginBottom: 10,\n },\n hidden: {\n height: 0,\n flex: 0, // disable 'flex:1' when hiding a View\n },\n loadingView: {\n backgroundColor: BGWASH,\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n webView: {\n backgroundColor: '#ffffff',\n }\n});\n\nmodule.exports = WebView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/WebView/WebView.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTActionSheetManager=require('NativeModules').ActionSheetManager;\n\nvar invariant=require('invariant');\n\nvar ActionSheetIOS={\nshowActionSheetWithOptions:function(options,callback){\ninvariant(\ntypeof options === 'object' && options !== null,\n'Options must a valid object');\n\ninvariant(\ntypeof callback === 'function',\n'Must provide a valid callback');\n\nRCTActionSheetManager.showActionSheetWithOptions(\noptions,\nfunction(){},\ncallback);},\n\n\n\nshowShareActionSheetWithOptions:function(\noptions,\nfailureCallback,\nsuccessCallback)\n{\ninvariant(\ntypeof options === 'object' && options !== null,\n'Options must a valid object');\n\ninvariant(\ntypeof failureCallback === 'function',\n'Must provide a valid failureCallback');\n\ninvariant(\ntypeof successCallback === 'function',\n'Must provide a valid successCallback');\n\nRCTActionSheetManager.showShareActionSheetWithOptions(\noptions,\nfailureCallback,\nsuccessCallback);}};\n\n\n\n\nmodule.exports = ActionSheetIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ActionSheetIOS\n * @flow\n */\n'use strict';\n\nvar RCTActionSheetManager = require('NativeModules').ActionSheetManager;\n\nvar invariant = require('invariant');\n\nvar ActionSheetIOS = {\n showActionSheetWithOptions(options: Object, callback: Function) {\n invariant(\n typeof options === 'object' && options !== null,\n 'Options must a valid object'\n );\n invariant(\n typeof callback === 'function',\n 'Must provide a valid callback'\n );\n RCTActionSheetManager.showActionSheetWithOptions(\n options,\n () => {}, // RKActionSheet compatibility hack\n callback\n );\n },\n\n showShareActionSheetWithOptions(\n options: Object,\n failureCallback: Function,\n successCallback: Function\n ) {\n invariant(\n typeof options === 'object' && options !== null,\n 'Options must a valid object'\n );\n invariant(\n typeof failureCallback === 'function',\n 'Must provide a valid failureCallback'\n );\n invariant(\n typeof successCallback === 'function',\n 'Must provide a valid successCallback'\n );\n RCTActionSheetManager.showShareActionSheetWithOptions(\n options,\n failureCallback,\n successCallback\n );\n }\n};\n\nmodule.exports = ActionSheetIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AdSupport/AdSupportIOS.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar AdSupport=require('NativeModules').AdSupport;\n\nmodule.exports = {\ngetAdvertisingId:function(onSuccess,onFailure){\nAdSupport.getAdvertisingId(onSuccess,onFailure);},\n\n\ngetAdvertisingTrackingEnabled:function(onSuccess,onFailure){\nAdSupport.getAdvertisingTrackingEnabled(onSuccess,onFailure);}};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AdSupportIOS\n * @flow\n */\n'use strict';\n\nvar AdSupport = require('NativeModules').AdSupport;\n\nmodule.exports = {\n getAdvertisingId: function(onSuccess: Function, onFailure: Function) {\n AdSupport.getAdvertisingId(onSuccess, onFailure);\n },\n\n getAdvertisingTrackingEnabled: function(onSuccess: Function, onFailure: Function) {\n AdSupport.getAdvertisingTrackingEnabled(onSuccess, onFailure);\n },\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AdSupport/AdSupportIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/AlertIOS.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTAlertManager=require('NativeModules').AlertManager;\nvar invariant=require('invariant');\n\nvar DEFAULT_BUTTON_TEXT='OK';\nvar DEFAULT_BUTTON={\ntext:DEFAULT_BUTTON_TEXT,\nonPress:null};var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nAlertIOS=(function(){function AlertIOS(){_classCallCheck(this,AlertIOS);}_createClass(AlertIOS,null,[{key:'alert',value:\nfunction alert(\ntitle,\nmessage,\nbuttons,\n\n\n\ntype)\n{\nvar callbacks=[];\nvar buttonsSpec=[];\ntitle = title || '';\nmessage = message || '';\nbuttons = buttons || [DEFAULT_BUTTON];\ntype = type || '';\n\nbuttons.forEach(function(btn,index){\ncallbacks[index] = btn.onPress;\nvar btnDef={};\nbtnDef[index] = btn.text || DEFAULT_BUTTON_TEXT;\nbuttonsSpec.push(btnDef);});\n\nRCTAlertManager.alertWithArgs({\ntitle:title,\nmessage:message,\nbuttons:buttonsSpec,\ntype:type},\nfunction(id,value){\nvar cb=callbacks[id];\ncb && cb(value);});}},{key:'prompt',value:\n\n\n\nfunction prompt(\ntitle,\nvalue,\nbuttons,\n\n\n\ncallback)\n{\nif(arguments.length === 2){\nif(typeof value === 'object'){\nbuttons = value;\nvalue = undefined;}else \nif(typeof value === 'function'){\ncallback = value;\nvalue = undefined;}}else \n\nif(arguments.length === 3 && typeof buttons === 'function'){\ncallback = buttons;\nbuttons = undefined;}\n\n\ninvariant(\n!(callback && buttons) && (callback || buttons),\n'Must provide either a button list or a callback, but not both');\n\n\nif(!buttons){\nbuttons = [{\ntext:'Cancel'},\n{\ntext:'OK',\nonPress:callback}];}\n\n\nthis.alert(title,value,buttons,'plain-text');}}]);return AlertIOS;})();\n\n\n\nmodule.exports = AlertIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AlertIOS\n * @flow\n */\n'use strict';\n\nvar RCTAlertManager = require('NativeModules').AlertManager;\nvar invariant = require('invariant');\n\nvar DEFAULT_BUTTON_TEXT = 'OK';\nvar DEFAULT_BUTTON = {\n text: DEFAULT_BUTTON_TEXT,\n onPress: null,\n};\n\n/**\n * Launches an alert dialog with the specified title and message.\n *\n * Optionally provide a list of buttons. Tapping any button will fire the\n * respective onPress callback and dismiss the alert. By default, the only\n * button will be an 'OK' button\n *\n * The last button in the list will be considered the 'Primary' button and\n * it will appear bold.\n *\n * ```\n * AlertIOS.alert(\n * 'Foo Title',\n * 'My Alert Msg',\n * [\n * {text: 'Foo', onPress: () => console.log('Foo Pressed!')},\n * {text: 'Bar', onPress: () => console.log('Bar Pressed!')},\n * ]\n * )\n * ```\n */\n\nclass AlertIOS {\n static alert(\n title: ?string,\n message?: ?string,\n buttons?: Array<{\n text: ?string;\n onPress?: ?Function;\n }>,\n type?: ?string\n ): void {\n var callbacks = [];\n var buttonsSpec = [];\n title = title || '';\n message = message || '';\n buttons = buttons || [DEFAULT_BUTTON];\n type = type || '';\n\n buttons.forEach((btn, index) => {\n callbacks[index] = btn.onPress;\n var btnDef = {};\n btnDef[index] = btn.text || DEFAULT_BUTTON_TEXT;\n buttonsSpec.push(btnDef);\n });\n RCTAlertManager.alertWithArgs({\n title,\n message,\n buttons: buttonsSpec,\n type,\n }, (id, value) => {\n var cb = callbacks[id];\n cb && cb(value);\n });\n }\n\n static prompt(\n title: string,\n value?: string,\n buttons?: Array<{\n text: ?string;\n onPress?: ?Function;\n }>,\n callback?: ?Function\n ): void {\n if (arguments.length === 2) {\n if (typeof value === 'object') {\n buttons = value;\n value = undefined;\n } else if (typeof value === 'function') {\n callback = value;\n value = undefined;\n }\n } else if (arguments.length === 3 && typeof buttons === 'function') {\n callback = buttons;\n buttons = undefined;\n }\n\n invariant(\n !(callback && buttons) && (callback || buttons),\n 'Must provide either a button list or a callback, but not both'\n );\n\n if (!buttons) {\n buttons = [{\n text: 'Cancel',\n }, {\n text: 'OK',\n onPress: callback\n }];\n }\n this.alert(title, value, buttons, 'plain-text');\n }\n}\n\nmodule.exports = AlertIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/AlertIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Animated.js":{"data":{"code":"var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n'use strict';\n\nvar Easing=require('Easing');\nvar Image=require('Image');\nvar InteractionManager=require('InteractionManager');\nvar Interpolation=require('Interpolation');\nvar React=require('React');\nvar Set=require('Set');\nvar Text=require('Text');\nvar View=require('View');\nvar invariant=require('invariant');\n\nvar flattenStyle=require('flattenStyle');\nvar rebound=require('rebound');\nvar requestAnimationFrame=require('requestAnimationFrame');var \n\n\n\n\n\n\n\n\nAnimated=(function(){function Animated(){_classCallCheck(this,Animated);}_createClass(Animated,[{key:'attach',value:\nfunction attach(){}},{key:'detach',value:\nfunction detach(){}},{key:'__getValue',value:\nfunction __getValue(){}},{key:'getAnimatedValue',value:\nfunction getAnimatedValue(){return this.__getValue();}},{key:'addChild',value:\nfunction addChild(child){}},{key:'removeChild',value:\nfunction removeChild(child){}},{key:'getChildren',value:\nfunction getChildren(){return [];}}]);return Animated;})();var \n\n\n\n\n\nAnimation=(function(){function Animation(){_classCallCheck(this,Animation);}_createClass(Animation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd,\npreviousAnimation)\n{}},{key:'stop',value:\nfunction stop(){}},{key:'__debouncedOnEnd',value:\n\nfunction __debouncedOnEnd(result){\nvar onEnd=this.__onEnd;\nthis.__onEnd = null;\nonEnd && onEnd(result);}}]);return Animation;})();var \n\n\n\nAnimatedWithChildren=(function(_Animated){_inherits(AnimatedWithChildren,_Animated);\n\n\nfunction AnimatedWithChildren(){_classCallCheck(this,AnimatedWithChildren);\n_get(Object.getPrototypeOf(AnimatedWithChildren.prototype),'constructor',this).call(this);\nthis._children = [];}_createClass(AnimatedWithChildren,[{key:'addChild',value:\n\n\nfunction addChild(child){\nif(this._children.length === 0){\nthis.attach();}\n\nthis._children.push(child);}},{key:'removeChild',value:\n\n\nfunction removeChild(child){\nvar index=this._children.indexOf(child);\nif(index === -1){\nconsole.warn('Trying to remove a child that doesn\\'t exist');\nreturn;}\n\nthis._children.splice(index,1);\nif(this._children.length === 0){\nthis.detach();}}},{key:'getChildren',value:\n\n\n\nfunction getChildren(){\nreturn this._children;}}]);return AnimatedWithChildren;})(Animated);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _flush(rootNode){\nvar animatedStyles=new Set();\nfunction findAnimatedStyles(node){\nif(typeof node.update === 'function'){\nanimatedStyles.add(node);}else \n{\nnode.getChildren().forEach(findAnimatedStyles);}}\n\n\nfindAnimatedStyles(rootNode);\nanimatedStyles.forEach(function(animatedStyle){return animatedStyle.update();});}\n\n\n\n\n\n\n\n\n\nvar easeInOut=Easing.inOut(Easing.ease);var \n\nTimingAnimation=(function(_Animation){_inherits(TimingAnimation,_Animation);\n\n\n\n\n\n\n\n\n\n\nfunction TimingAnimation(\nconfig)\n{_classCallCheck(this,TimingAnimation);\n_get(Object.getPrototypeOf(TimingAnimation.prototype),'constructor',this).call(this);\nthis._toValue = config.toValue;\nthis._easing = config.easing || easeInOut;\nthis._duration = config.duration !== undefined?config.duration:500;\nthis._delay = config.delay || 0;}_createClass(TimingAnimation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd)\n{var _this=this;\nthis.__active = true;\nthis._fromValue = fromValue;\nthis._onUpdate = onUpdate;\nthis.__onEnd = onEnd;\n\nvar start=function(){\nif(_this._duration === 0){\n_this._onUpdate(_this._toValue);\n_this.__debouncedOnEnd({finished:true});}else \n{\n_this._startTime = Date.now();\n_this._animationFrame = requestAnimationFrame(_this.onUpdate.bind(_this));}};\n\n\nif(this._delay){\nthis._timeout = setTimeout(start,this._delay);}else \n{\nstart();}}},{key:'onUpdate',value:\n\n\n\nfunction onUpdate(){\nvar now=Date.now();\nif(now >= this._startTime + this._duration){\nif(this._duration === 0){\nthis._onUpdate(this._toValue);}else \n{\nthis._onUpdate(\nthis._fromValue + this._easing(1) * (this._toValue - this._fromValue));}\n\n\nthis.__debouncedOnEnd({finished:true});\nreturn;}\n\n\nthis._onUpdate(\nthis._fromValue + \nthis._easing((now - this._startTime) / this._duration) * (\nthis._toValue - this._fromValue));\n\nif(this.__active){\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}}},{key:'stop',value:\n\n\n\nfunction stop(){\nthis.__active = false;\nclearTimeout(this._timeout);\nwindow.cancelAnimationFrame(this._animationFrame);\nthis.__debouncedOnEnd({finished:false});}}]);return TimingAnimation;})(Animation);var \n\n\n\n\n\n\n\n\n\n\n\n\n\nDecayAnimation=(function(_Animation2){_inherits(DecayAnimation,_Animation2);\n\n\n\n\n\n\n\n\nfunction DecayAnimation(\nconfig)\n{_classCallCheck(this,DecayAnimation);\n_get(Object.getPrototypeOf(DecayAnimation.prototype),'constructor',this).call(this);\nthis._deceleration = config.deceleration || 0.998;\nthis._velocity = config.velocity;}_createClass(DecayAnimation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd)\n{\nthis.__active = true;\nthis._lastValue = fromValue;\nthis._fromValue = fromValue;\nthis._onUpdate = onUpdate;\nthis.__onEnd = onEnd;\nthis._startTime = Date.now();\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}},{key:'onUpdate',value:\n\n\nfunction onUpdate(){\nvar now=Date.now();\n\nvar value=this._fromValue + \nthis._velocity / (1 - this._deceleration) * (\n1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime)));\n\nthis._onUpdate(value);\n\nif(Math.abs(this._lastValue - value) < 0.1){\nthis.__debouncedOnEnd({finished:true});\nreturn;}\n\n\nthis._lastValue = value;\nif(this.__active){\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}}},{key:'stop',value:\n\n\n\nfunction stop(){\nthis.__active = false;\nwindow.cancelAnimationFrame(this._animationFrame);\nthis.__debouncedOnEnd({finished:false});}}]);return DecayAnimation;})(Animation);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction withDefault(value,defaultValue){\nif(value === undefined || value === null){\nreturn defaultValue;}\n\nreturn value;}var \n\n\nSpringAnimation=(function(_Animation3){_inherits(SpringAnimation,_Animation3);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SpringAnimation(\nconfig)\n{_classCallCheck(this,SpringAnimation);\n_get(Object.getPrototypeOf(SpringAnimation.prototype),'constructor',this).call(this);\n\nthis._overshootClamping = withDefault(config.overshootClamping,false);\nthis._restDisplacementThreshold = withDefault(config.restDisplacementThreshold,0.001);\nthis._restSpeedThreshold = withDefault(config.restSpeedThreshold,0.001);\nthis._initialVelocity = config.velocity;\nthis._lastVelocity = withDefault(config.velocity,0);\nthis._toValue = config.toValue;\n\nvar springConfig;\nif(config.bounciness !== undefined || config.speed !== undefined){\ninvariant(\nconfig.tension === undefined && config.friction === undefined,\n'You can only define bounciness/speed or tension/friction but not both');\n\nspringConfig = rebound.SpringConfig.fromBouncinessAndSpeed(\nwithDefault(config.bounciness,8),\nwithDefault(config.speed,12));}else \n\n{\nspringConfig = rebound.SpringConfig.fromOrigamiTensionAndFriction(\nwithDefault(config.tension,40),\nwithDefault(config.friction,7));}\n\n\nthis._tension = springConfig.tension;\nthis._friction = springConfig.friction;}_createClass(SpringAnimation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd,\npreviousAnimation)\n{\nthis.__active = true;\nthis._startPosition = fromValue;\nthis._lastPosition = this._startPosition;\n\nthis._onUpdate = onUpdate;\nthis.__onEnd = onEnd;\nthis._lastTime = Date.now();\n\nif(previousAnimation instanceof SpringAnimation){\nvar internalState=previousAnimation.getInternalState();\nthis._lastPosition = internalState.lastPosition;\nthis._lastVelocity = internalState.lastVelocity;\nthis._lastTime = internalState.lastTime;}\n\nif(this._initialVelocity !== undefined && \nthis._initialVelocity !== null){\nthis._lastVelocity = this._initialVelocity;}\n\nthis.onUpdate();}},{key:'getInternalState',value:\n\n\nfunction getInternalState(){\nreturn {\nlastPosition:this._lastPosition,\nlastVelocity:this._lastVelocity,\nlastTime:this._lastTime};}},{key:'onUpdate',value:\n\n\n\nfunction onUpdate(){\nvar position=this._lastPosition;\nvar velocity=this._lastVelocity;\n\nvar tempPosition=this._lastPosition;\nvar tempVelocity=this._lastVelocity;\n\n\n\n\n\nvar MAX_STEPS=64;\nvar now=Date.now();\nif(now > this._lastTime + MAX_STEPS){\nnow = this._lastTime + MAX_STEPS;}\n\n\n\n\n\nvar TIMESTEP_MSEC=1;\nvar numSteps=Math.floor((now - this._lastTime) / TIMESTEP_MSEC);\n\nfor(var i=0;i < numSteps;++i) {\n\nvar step=TIMESTEP_MSEC / 1000;\n\n\n\nvar aVelocity=velocity;\nvar aAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\nvar tempPosition=position + aVelocity * step / 2;\nvar tempVelocity=velocity + aAcceleration * step / 2;\n\nvar bVelocity=tempVelocity;\nvar bAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\ntempPosition = position + bVelocity * step / 2;\ntempVelocity = velocity + bAcceleration * step / 2;\n\nvar cVelocity=tempVelocity;\nvar cAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\ntempPosition = position + cVelocity * step / 2;\ntempVelocity = velocity + cAcceleration * step / 2;\n\nvar dVelocity=tempVelocity;\nvar dAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\ntempPosition = position + cVelocity * step / 2;\ntempVelocity = velocity + cAcceleration * step / 2;\n\nvar dxdt=(aVelocity + 2 * (bVelocity + cVelocity) + dVelocity) / 6;\nvar dvdt=(aAcceleration + 2 * (bAcceleration + cAcceleration) + dAcceleration) / 6;\n\nposition += dxdt * step;\nvelocity += dvdt * step;}\n\n\nthis._lastTime = now;\nthis._lastPosition = position;\nthis._lastVelocity = velocity;\n\nthis._onUpdate(position);\nif(!this.__active){\nreturn;}\n\n\n\nvar isOvershooting=false;\nif(this._overshootClamping && this._tension !== 0){\nif(this._startPosition < this._toValue){\nisOvershooting = position > this._toValue;}else \n{\nisOvershooting = position < this._toValue;}}\n\n\nvar isVelocity=Math.abs(velocity) <= this._restSpeedThreshold;\nvar isDisplacement=true;\nif(this._tension !== 0){\nisDisplacement = Math.abs(this._toValue - position) <= this._restDisplacementThreshold;}\n\nif(isOvershooting || isVelocity && isDisplacement){\nthis.__debouncedOnEnd({finished:true});\nreturn;}\n\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}},{key:'stop',value:\n\n\nfunction stop(){\nthis.__active = false;\nwindow.cancelAnimationFrame(this._animationFrame);\nthis.__debouncedOnEnd({finished:false});}}]);return SpringAnimation;})(Animation);\n\n\n\n\n\nvar _uniqueId=1;var \n\nAnimatedValue=(function(_AnimatedWithChildren){_inherits(AnimatedValue,_AnimatedWithChildren);\n\n\n\n\n\n\nfunction AnimatedValue(value){_classCallCheck(this,AnimatedValue);\n_get(Object.getPrototypeOf(AnimatedValue.prototype),'constructor',this).call(this);\nthis._value = value;\nthis._offset = 0;\nthis._animation = null;\nthis._listeners = {};}_createClass(AnimatedValue,[{key:'detach',value:\n\n\nfunction detach(){\nthis.stopAnimation();}},{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn this._value + this._offset;}},{key:'setValue',value:\n\n\nfunction setValue(value){\nif(this._animation){\nthis._animation.stop();\nthis._animation = null;}\n\nthis._updateValue(value);}},{key:'setOffset',value:\n\n\nfunction setOffset(offset){\nthis._offset = offset;}},{key:'flattenOffset',value:\n\n\nfunction flattenOffset(){\nthis._value += this._offset;\nthis._offset = 0;}},{key:'addListener',value:\n\n\nfunction addListener(callback){\nvar id=String(_uniqueId++);\nthis._listeners[id] = callback;\nreturn id;}},{key:'removeListener',value:\n\n\nfunction removeListener(id){\ndelete this._listeners[id];}},{key:'removeAllListeners',value:\n\n\nfunction removeAllListeners(){\nthis._listeners = {};}},{key:'animate',value:\n\n\nfunction animate(animation,callback){var _this2=this;\nvar handle=InteractionManager.createInteractionHandle();\nvar previousAnimation=this._animation;\nthis._animation && this._animation.stop();\nthis._animation = animation;\nanimation.start(\nthis._value,\nfunction(value){\n_this2._updateValue(value);},\n\nfunction(result){\n_this2._animation = null;\nInteractionManager.clearInteractionHandle(handle);\ncallback && callback(result);},\n\npreviousAnimation);}},{key:'stopAnimation',value:\n\n\n\nfunction stopAnimation(callback){\nthis.stopTracking();\nthis._animation && this._animation.stop();\nthis._animation = null;\ncallback && callback(this.__getValue());}},{key:'stopTracking',value:\n\n\nfunction stopTracking(){\nthis._tracking && this._tracking.detach();\nthis._tracking = null;}},{key:'track',value:\n\n\nfunction track(tracking){\nthis.stopTracking();\nthis._tracking = tracking;}},{key:'interpolate',value:\n\n\nfunction interpolate(config){\nreturn new AnimatedInterpolation(this,Interpolation.create(config));}},{key:'_updateValue',value:\n\n\nfunction _updateValue(value){\nthis._value = value;\n_flush(this);\nfor(var key in this._listeners) {\nthis._listeners[key]({value:this.__getValue()});}}}]);return AnimatedValue;})(AnimatedWithChildren);var \n\n\n\n\n\nAnimatedValueXY=(function(_AnimatedWithChildren2){_inherits(AnimatedValueXY,_AnimatedWithChildren2);\n\n\n\n\nfunction AnimatedValueXY(valueIn){_classCallCheck(this,AnimatedValueXY);\n_get(Object.getPrototypeOf(AnimatedValueXY.prototype),'constructor',this).call(this);\nvar value=valueIn || {x:0,y:0};\nif(typeof value.x === 'number' && typeof value.y === 'number'){\nthis.x = new AnimatedValue(value.x);\nthis.y = new AnimatedValue(value.y);}else \n{\ninvariant(\nvalue.x instanceof AnimatedValue && \nvalue.y instanceof AnimatedValue,\n'AnimatedValueXY must be initalized with an object of numbers or ' + \n'AnimatedValues.');\n\nthis.x = value.x;\nthis.y = value.y;}\n\nthis._listeners = {};}_createClass(AnimatedValueXY,[{key:'setValue',value:\n\n\nfunction setValue(value){\nthis.x.setValue(value.x);\nthis.y.setValue(value.y);}},{key:'setOffset',value:\n\n\nfunction setOffset(offset){\nthis.x.setOffset(offset.x);\nthis.y.setOffset(offset.y);}},{key:'flattenOffset',value:\n\n\nfunction flattenOffset(){\nthis.x.flattenOffset();\nthis.y.flattenOffset();}},{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn {\nx:this.x.__getValue(),\ny:this.y.__getValue()};}},{key:'stopAnimation',value:\n\n\n\nfunction stopAnimation(callback){\nthis.x.stopAnimation();\nthis.y.stopAnimation();\ncallback && callback(this.__getValue());}},{key:'addListener',value:\n\n\nfunction addListener(callback){var _this3=this;\nvar id=String(_uniqueId++);\nvar jointCallback=function(_ref){var number=_ref.value;\ncallback(_this3.__getValue());};\n\nthis._listeners[id] = {\nx:this.x.addListener(jointCallback),\ny:this.y.addListener(jointCallback)};\n\nreturn id;}},{key:'removeListener',value:\n\n\nfunction removeListener(id){\nthis.x.removeListener(this._listeners[id].x);\nthis.y.removeListener(this._listeners[id].y);\ndelete this._listeners[id];}},{key:'getLayout',value:\n\n\nfunction getLayout(){\nreturn {\nleft:this.x,\ntop:this.y};}},{key:'getTranslateTransform',value:\n\n\n\nfunction getTranslateTransform(){\nreturn [\n{translateX:this.x},\n{translateY:this.y}];}}]);return AnimatedValueXY;})(AnimatedWithChildren);var \n\n\n\n\nAnimatedInterpolation=(function(_AnimatedWithChildren3){_inherits(AnimatedInterpolation,_AnimatedWithChildren3);\n\n\n\nfunction AnimatedInterpolation(parent,interpolation){_classCallCheck(this,AnimatedInterpolation);\n_get(Object.getPrototypeOf(AnimatedInterpolation.prototype),'constructor',this).call(this);\nthis._parent = parent;\nthis._interpolation = interpolation;}_createClass(AnimatedInterpolation,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nvar parentValue=this._parent.__getValue();\ninvariant(\ntypeof parentValue === 'number',\n'Cannot interpolate an input which is not a number.');\n\nreturn this._interpolation(parentValue);}},{key:'interpolate',value:\n\n\nfunction interpolate(config){\nreturn new AnimatedInterpolation(this,Interpolation.create(config));}},{key:'attach',value:\n\n\nfunction attach(){\nthis._parent.addChild(this);}},{key:'detach',value:\n\n\nfunction detach(){\nthis._parent.removeChild(this);}}]);return AnimatedInterpolation;})(AnimatedWithChildren);var \n\n\n\nAnimatedTransform=(function(_AnimatedWithChildren4){_inherits(AnimatedTransform,_AnimatedWithChildren4);\n\n\nfunction AnimatedTransform(transforms){_classCallCheck(this,AnimatedTransform);\n_get(Object.getPrototypeOf(AnimatedTransform.prototype),'constructor',this).call(this);\nthis._transforms = transforms;}_createClass(AnimatedTransform,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn this._transforms.map(function(transform){\nvar result={};\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nresult[key] = value.__getValue();}else \n{\nresult[key] = value;}}\n\n\nreturn result;});}},{key:'getAnimatedValue',value:\n\n\n\nfunction getAnimatedValue(){\nreturn this._transforms.map(function(transform){\nvar result={};\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nresult[key] = value.getAnimatedValue();}else \n{\n\nresult[key] = value;}}\n\n\nreturn result;});}},{key:'attach',value:\n\n\n\nfunction attach(){var _this4=this;\nthis._transforms.forEach(function(transform){\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nvalue.addChild(_this4);}}});}},{key:'detach',value:\n\n\n\n\n\nfunction detach(){var _this5=this;\nthis._transforms.forEach(function(transform){\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nvalue.removeChild(_this5);}}});}}]);return AnimatedTransform;})(AnimatedWithChildren);var \n\n\n\n\n\n\nAnimatedStyle=(function(_AnimatedWithChildren5){_inherits(AnimatedStyle,_AnimatedWithChildren5);\n\n\nfunction AnimatedStyle(style){_classCallCheck(this,AnimatedStyle);\n_get(Object.getPrototypeOf(AnimatedStyle.prototype),'constructor',this).call(this);\nstyle = flattenStyle(style) || {};\nif(style.transform){\nstyle = _extends({},\nstyle,{\ntransform:new AnimatedTransform(style.transform)});}\n\n\nthis._style = style;}_createClass(AnimatedStyle,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nvar style={};\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nstyle[key] = value.__getValue();}else \n{\nstyle[key] = value;}}\n\n\nreturn style;}},{key:'getAnimatedValue',value:\n\n\nfunction getAnimatedValue(){\nvar style={};\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nstyle[key] = value.getAnimatedValue();}}\n\n\nreturn style;}},{key:'attach',value:\n\n\nfunction attach(){\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nvalue.addChild(this);}}}},{key:'detach',value:\n\n\n\n\nfunction detach(){\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nvalue.removeChild(this);}}}}]);return AnimatedStyle;})(AnimatedWithChildren);var \n\n\n\n\n\nAnimatedProps=(function(_Animated2){_inherits(AnimatedProps,_Animated2);\n\n\n\nfunction AnimatedProps(\nprops,\ncallback)\n{_classCallCheck(this,AnimatedProps);\n_get(Object.getPrototypeOf(AnimatedProps.prototype),'constructor',this).call(this);\nif(props.style){\nprops = _extends({},\nprops,{\nstyle:new AnimatedStyle(props.style)});}\n\n\nthis._props = props;\nthis._callback = callback;\nthis.attach();}_createClass(AnimatedProps,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nvar props={};\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nprops[key] = value.__getValue();}else \n{\nprops[key] = value;}}\n\n\nreturn props;}},{key:'getAnimatedValue',value:\n\n\nfunction getAnimatedValue(){\nvar props={};\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nprops[key] = value.getAnimatedValue();}}\n\n\nreturn props;}},{key:'attach',value:\n\n\nfunction attach(){\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nvalue.addChild(this);}}}},{key:'detach',value:\n\n\n\n\nfunction detach(){\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nvalue.removeChild(this);}}}},{key:'update',value:\n\n\n\n\nfunction update(){\nthis._callback();}}]);return AnimatedProps;})(Animated);\n\n\n\nfunction createAnimatedComponent(Component){\nvar refName='node';var \n\nAnimatedComponent=(function(_React$Component){_inherits(AnimatedComponent,_React$Component);function AnimatedComponent(){_classCallCheck(this,AnimatedComponent);_get(Object.getPrototypeOf(AnimatedComponent.prototype),'constructor',this).apply(this,arguments);}_createClass(AnimatedComponent,[{key:'componentWillUnmount',value:\n\n\nfunction componentWillUnmount(){\nthis._propsAnimated && this._propsAnimated.detach();}},{key:'setNativeProps',value:\n\n\nfunction setNativeProps(props){\nthis.refs[refName].setNativeProps(props);}},{key:'componentWillMount',value:\n\n\nfunction componentWillMount(){\nthis.attachProps(this.props);}},{key:'attachProps',value:\n\n\nfunction attachProps(nextProps){var _this6=this;\nvar oldPropsAnimated=this._propsAnimated;\n\n\n\n\n\n\n\nvar callback=function(){\nif(_this6.refs[refName].setNativeProps){\nvar value=_this6._propsAnimated.getAnimatedValue();\n_this6.refs[refName].setNativeProps(value);}else \n{\n_this6.forceUpdate();}};\n\n\n\nthis._propsAnimated = new AnimatedProps(\nnextProps,\ncallback);\n\n\n\n\n\n\n\n\n\n\noldPropsAnimated && oldPropsAnimated.detach();}},{key:'componentWillReceiveProps',value:\n\n\nfunction componentWillReceiveProps(nextProps){\nthis.attachProps(nextProps);}},{key:'render',value:\n\n\nfunction render(){\nreturn (\nReact.createElement(Component,_extends({},\nthis._propsAnimated.__getValue(),{\nref:refName})));}}]);return AnimatedComponent;})(React.Component);\n\n\n\n\n\nreturn AnimatedComponent;}var \n\n\nAnimatedTracking=(function(_Animated3){_inherits(AnimatedTracking,_Animated3);\n\n\n\n\n\n\nfunction AnimatedTracking(\nvalue,\nparent,\nanimationClass,\nanimationConfig,\ncallback)\n{_classCallCheck(this,AnimatedTracking);\n_get(Object.getPrototypeOf(AnimatedTracking.prototype),'constructor',this).call(this);\nthis._value = value;\nthis._parent = parent;\nthis._animationClass = animationClass;\nthis._animationConfig = animationConfig;\nthis._callback = callback;\nthis.attach();}_createClass(AnimatedTracking,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn this._parent.__getValue();}},{key:'attach',value:\n\n\nfunction attach(){\nthis._parent.addChild(this);}},{key:'detach',value:\n\n\nfunction detach(){\nthis._parent.removeChild(this);}},{key:'update',value:\n\n\nfunction update(){\nthis._value.animate(new this._animationClass(_extends({},\nthis._animationConfig,{\ntoValue:this._animationConfig.toValue.__getValue()})),\nthis._callback);}}]);return AnimatedTracking;})(Animated);\n\n\n\n\n\n\n\n\nvar maybeVectorAnim=function(\nvalue,\nconfig,\nanim)\n{\nif(value instanceof AnimatedValueXY){\nvar configX=_extends({},config);\nvar configY=_extends({},config);\nfor(var key in config) {var _config$key=\nconfig[key];var x=_config$key.x;var y=_config$key.y;\nif(x !== undefined && y !== undefined){\nconfigX[key] = x;\nconfigY[key] = y;}}\n\n\nvar aX=anim(value.x,configX);\nvar aY=anim(value.y,configY);\n\n\nreturn parallel([aX,aY],{stopTogether:false});}\n\nreturn null;};\n\n\nvar spring=function(\nvalue,\nconfig)\n{\nreturn maybeVectorAnim(value,config,spring) || {\nstart:function(callback){\nvar singleValue=value;\nvar singleConfig=config;\nsingleValue.stopTracking();\nif(config.toValue instanceof Animated){\nsingleValue.track(new AnimatedTracking(\nsingleValue,\nconfig.toValue,\nSpringAnimation,\nsingleConfig,\ncallback));}else \n\n{\nsingleValue.animate(new SpringAnimation(singleConfig),callback);}},\n\n\n\nstop:function(){\nvalue.stopAnimation();}};};\n\n\n\n\nvar timing=function(\nvalue,\nconfig)\n{\nreturn maybeVectorAnim(value,config,timing) || {\nstart:function(callback){\nvar singleValue=value;\nvar singleConfig=config;\nsingleValue.stopTracking();\nif(config.toValue instanceof Animated){\nsingleValue.track(new AnimatedTracking(\nsingleValue,\nconfig.toValue,\nTimingAnimation,\nsingleConfig,\ncallback));}else \n\n{\nsingleValue.animate(new TimingAnimation(singleConfig),callback);}},\n\n\n\nstop:function(){\nvalue.stopAnimation();}};};\n\n\n\n\nvar decay=function(\nvalue,\nconfig)\n{\nreturn maybeVectorAnim(value,config,decay) || {\nstart:function(callback){\nvar singleValue=value;\nvar singleConfig=config;\nsingleValue.stopTracking();\nsingleValue.animate(new DecayAnimation(singleConfig),callback);},\n\n\nstop:function(){\nvalue.stopAnimation();}};};\n\n\n\n\nvar sequence=function(\nanimations)\n{\nvar current=0;\nreturn {\nstart:function(callback){\nvar onComplete=function(result){\nif(!result.finished){\ncallback && callback(result);\nreturn;}\n\n\ncurrent++;\n\nif(current === animations.length){\ncallback && callback(result);\nreturn;}\n\n\nanimations[current].start(onComplete);};\n\n\nif(animations.length === 0){\ncallback && callback({finished:true});}else \n{\nanimations[current].start(onComplete);}},\n\n\n\nstop:function(){\nif(current < animations.length){\nanimations[current].stop();}}};};\n\n\n\n\n\n\n\n\nvar parallel=function(\nanimations,\nconfig)\n{\nvar doneCount=0;\n\nvar hasEnded={};\nvar stopTogether=!(config && config.stopTogether === false);\n\nvar result={\nstart:function(callback){\nif(doneCount === animations.length){\ncallback && callback({finished:true});\nreturn;}\n\n\nanimations.forEach(function(animation,idx){\nanimation.start(function(endResult){\nhasEnded[idx] = true;\ndoneCount++;\nif(doneCount === animations.length){\ndoneCount = 0;\ncallback && callback(endResult);\nreturn;}\n\n\nif(!endResult.finished && stopTogether){\nresult.stop();}});});},\n\n\n\n\n\nstop:function(){\nanimations.forEach(function(animation,idx){\n!hasEnded[idx] && animation.stop();\nhasEnded[idx] = true;});}};\n\n\n\n\nreturn result;};\n\n\nvar delay=function(time){\n\nreturn timing(new AnimatedValue(0),{toValue:0,delay:time,duration:0});};\n\n\nvar stagger=function(\ntime,\nanimations)\n{\nreturn parallel(animations.map(function(animation,i){\nreturn sequence([\ndelay(time * i),\nanimation]);}));};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar event=function(\nargMapping,\nconfig)\n{\nreturn function(){for(var _len=arguments.length,args=Array(_len),_key=0;_key < _len;_key++) {args[_key] = arguments[_key];}\nvar traverse=function(recMapping,recEvt,key){\nif(typeof recEvt === 'number'){\ninvariant(\nrecMapping instanceof AnimatedValue,\n'Bad mapping of type ' + typeof recMapping + ' for key ' + key + \n', event value must map to AnimatedValue');\n\nrecMapping.setValue(recEvt);\nreturn;}\n\ninvariant(\ntypeof recMapping === 'object',\n'Bad mapping of type ' + typeof recMapping + ' for key ' + key);\n\ninvariant(\ntypeof recEvt === 'object',\n'Bad event of type ' + typeof recEvt + ' for key ' + key);\n\nfor(var key in recMapping) {\ntraverse(recMapping[key],recEvt[key],key);}};\n\n\nargMapping.forEach(function(mapping,idx){\ntraverse(mapping,args[idx],'arg' + idx);});\n\nif(config && config.listener){\nconfig.listener.apply(null,args);}};};\n\n\n\n\nmodule.exports = {\ndelay:delay,\nsequence:sequence,\nparallel:parallel,\nstagger:stagger,\n\ndecay:decay,\ntiming:timing,\nspring:spring,\n\nevent:event,\n\nValue:AnimatedValue,\nValueXY:AnimatedValueXY,\n__PropsOnlyForTests:AnimatedProps,\nView:createAnimatedComponent(View),\nText:createAnimatedComponent(Text),\nImage:createAnimatedComponent(Image),\ncreateAnimatedComponent:createAnimatedComponent};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Animated\n * @flow\n */\n'use strict';\n\nvar Easing = require('Easing');\nvar Image = require('Image');\nvar InteractionManager = require('InteractionManager');\nvar Interpolation = require('Interpolation');\nvar React = require('React');\nvar Set = require('Set');\nvar Text = require('Text');\nvar View = require('View');\nvar invariant = require('invariant');\n\nvar flattenStyle = require('flattenStyle');\nvar rebound = require('rebound');\nvar requestAnimationFrame = require('requestAnimationFrame');\n\nimport type InterpolationConfigType from 'Interpolation';\n\ntype EndResult = {finished: bool};\ntype EndCallback = (result: EndResult) => void;\n\n// Note(vjeux): this would be better as an interface but flow doesn't\n// support them yet\nclass Animated {\n attach(): void {}\n detach(): void {}\n __getValue(): any {}\n getAnimatedValue(): any { return this.__getValue(); }\n addChild(child: Animated) {}\n removeChild(child: Animated) {}\n getChildren(): Array<Animated> { return []; }\n}\n\n// Important note: start() and stop() will only be called at most once.\n// Once an animation has been stopped or finished its course, it will\n// not be reused.\nclass Animation {\n __active: bool;\n __onEnd: ?EndCallback;\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n ): void {}\n stop(): void {}\n // Helper function for subclasses to make sure onEnd is only called once.\n __debouncedOnEnd(result: EndResult) {\n var onEnd = this.__onEnd;\n this.__onEnd = null;\n onEnd && onEnd(result);\n }\n}\n\nclass AnimatedWithChildren extends Animated {\n _children: Array<Animated>;\n\n constructor() {\n super();\n this._children = [];\n }\n\n addChild(child: Animated): void {\n if (this._children.length === 0) {\n this.attach();\n }\n this._children.push(child);\n }\n\n removeChild(child: Animated): void {\n var index = this._children.indexOf(child);\n if (index === -1) {\n console.warn('Trying to remove a child that doesn\\'t exist');\n return;\n }\n this._children.splice(index, 1);\n if (this._children.length === 0) {\n this.detach();\n }\n }\n\n getChildren(): Array<Animated> {\n return this._children;\n }\n}\n\n/**\n * Animated works by building a directed acyclic graph of dependencies\n * transparently when you render your Animated components.\n *\n * new Animated.Value(0)\n * .interpolate() .interpolate() new Animated.Value(1)\n * opacity translateY scale\n * style transform\n * View#234 style\n * View#123\n *\n * A) Top Down phase\n * When an Animated.Value is updated, we recursively go down through this\n * graph in order to find leaf nodes: the views that we flag as needing\n * an update.\n *\n * B) Bottom Up phase\n * When a view is flagged as needing an update, we recursively go back up\n * in order to build the new value that it needs. The reason why we need\n * this two-phases process is to deal with composite props such as\n * transform which can receive values from multiple parents.\n */\nfunction _flush(rootNode: AnimatedValue): void {\n var animatedStyles = new Set();\n function findAnimatedStyles(node) {\n if (typeof node.update === 'function') {\n animatedStyles.add(node);\n } else {\n node.getChildren().forEach(findAnimatedStyles);\n }\n }\n findAnimatedStyles(rootNode);\n animatedStyles.forEach(animatedStyle => animatedStyle.update());\n}\n\ntype TimingAnimationConfig = {\n toValue: number;\n easing?: (value: number) => number;\n duration?: number;\n delay?: number;\n};\n\nvar easeInOut = Easing.inOut(Easing.ease);\n\nclass TimingAnimation extends Animation {\n _startTime: number;\n _fromValue: number;\n _toValue: number;\n _duration: number;\n _delay: number;\n _easing: (value: number) => number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n _timeout: any;\n\n constructor(\n config: TimingAnimationConfig,\n ) {\n super();\n this._toValue = config.toValue;\n this._easing = config.easing || easeInOut;\n this._duration = config.duration !== undefined ? config.duration : 500;\n this._delay = config.delay || 0;\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n ): void {\n this.__active = true;\n this._fromValue = fromValue;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n\n var start = () => {\n if (this._duration === 0) {\n this._onUpdate(this._toValue);\n this.__debouncedOnEnd({finished: true});\n } else {\n this._startTime = Date.now();\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n };\n if (this._delay) {\n this._timeout = setTimeout(start, this._delay);\n } else {\n start();\n }\n }\n\n onUpdate(): void {\n var now = Date.now();\n if (now >= this._startTime + this._duration) {\n if (this._duration === 0) {\n this._onUpdate(this._toValue);\n } else {\n this._onUpdate(\n this._fromValue + this._easing(1) * (this._toValue - this._fromValue)\n );\n }\n this.__debouncedOnEnd({finished: true});\n return;\n }\n\n this._onUpdate(\n this._fromValue +\n this._easing((now - this._startTime) / this._duration) *\n (this._toValue - this._fromValue)\n );\n if (this.__active) {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n stop(): void {\n this.__active = false;\n clearTimeout(this._timeout);\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype DecayAnimationConfig = {\n velocity: number | {x: number, y: number};\n deceleration?: number;\n};\n\ntype DecayAnimationConfigSingle = {\n velocity: number;\n deceleration?: number;\n};\n\nclass DecayAnimation extends Animation {\n _startTime: number;\n _lastValue: number;\n _fromValue: number;\n _deceleration: number;\n _velocity: number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n\n constructor(\n config: DecayAnimationConfigSingle,\n ) {\n super();\n this._deceleration = config.deceleration || 0.998;\n this._velocity = config.velocity;\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n ): void {\n this.__active = true;\n this._lastValue = fromValue;\n this._fromValue = fromValue;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n this._startTime = Date.now();\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n\n onUpdate(): void {\n var now = Date.now();\n\n var value = this._fromValue +\n (this._velocity / (1 - this._deceleration)) *\n (1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime)));\n\n this._onUpdate(value);\n\n if (Math.abs(this._lastValue - value) < 0.1) {\n this.__debouncedOnEnd({finished: true});\n return;\n }\n\n this._lastValue = value;\n if (this.__active) {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n stop(): void {\n this.__active = false;\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype SpringAnimationConfig = {\n toValue: number | AnimatedValue | {x: number, y: number} | AnimatedValueXY;\n overshootClamping?: bool;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number | {x: number, y: number};\n bounciness?: number;\n speed?: number;\n tension?: number;\n friction?: number;\n};\n\ntype SpringAnimationConfigSingle = {\n toValue: number | AnimatedValue;\n overshootClamping?: bool;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number;\n bounciness?: number;\n speed?: number;\n tension?: number;\n friction?: number;\n};\n\nfunction withDefault<T>(value: ?T, defaultValue: T): T {\n if (value === undefined || value === null) {\n return defaultValue;\n }\n return value;\n}\n\nclass SpringAnimation extends Animation {\n _overshootClamping: bool;\n _restDisplacementThreshold: number;\n _restSpeedThreshold: number;\n _initialVelocity: ?number;\n _lastVelocity: number;\n _startPosition: number;\n _lastPosition: number;\n _fromValue: number;\n _toValue: any;\n _tension: number;\n _friction: number;\n _lastTime: number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n\n constructor(\n config: SpringAnimationConfigSingle,\n ) {\n super();\n\n this._overshootClamping = withDefault(config.overshootClamping, false);\n this._restDisplacementThreshold = withDefault(config.restDisplacementThreshold, 0.001);\n this._restSpeedThreshold = withDefault(config.restSpeedThreshold, 0.001);\n this._initialVelocity = config.velocity;\n this._lastVelocity = withDefault(config.velocity, 0);\n this._toValue = config.toValue;\n\n var springConfig;\n if (config.bounciness !== undefined || config.speed !== undefined) {\n invariant(\n config.tension === undefined && config.friction === undefined,\n 'You can only define bounciness/speed or tension/friction but not both',\n );\n springConfig = rebound.SpringConfig.fromBouncinessAndSpeed(\n withDefault(config.bounciness, 8),\n withDefault(config.speed, 12),\n );\n } else {\n springConfig = rebound.SpringConfig.fromOrigamiTensionAndFriction(\n withDefault(config.tension, 40),\n withDefault(config.friction, 7),\n );\n }\n this._tension = springConfig.tension;\n this._friction = springConfig.friction;\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n ): void {\n this.__active = true;\n this._startPosition = fromValue;\n this._lastPosition = this._startPosition;\n\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n this._lastTime = Date.now();\n\n if (previousAnimation instanceof SpringAnimation) {\n var internalState = previousAnimation.getInternalState();\n this._lastPosition = internalState.lastPosition;\n this._lastVelocity = internalState.lastVelocity;\n this._lastTime = internalState.lastTime;\n }\n if (this._initialVelocity !== undefined &&\n this._initialVelocity !== null) {\n this._lastVelocity = this._initialVelocity;\n }\n this.onUpdate();\n }\n\n getInternalState(): Object {\n return {\n lastPosition: this._lastPosition,\n lastVelocity: this._lastVelocity,\n lastTime: this._lastTime,\n };\n }\n\n onUpdate(): void {\n var position = this._lastPosition;\n var velocity = this._lastVelocity;\n\n var tempPosition = this._lastPosition;\n var tempVelocity = this._lastVelocity;\n\n // If for some reason we lost a lot of frames (e.g. process large payload or\n // stopped in the debugger), we only advance by 4 frames worth of\n // computation and will continue on the next frame. It's better to have it\n // running at faster speed than jumping to the end.\n var MAX_STEPS = 64;\n var now = Date.now();\n if (now > this._lastTime + MAX_STEPS) {\n now = this._lastTime + MAX_STEPS;\n }\n\n // We are using a fixed time step and a maximum number of iterations.\n // The following post provides a lot of thoughts into how to build this\n // loop: http://gafferongames.com/game-physics/fix-your-timestep/\n var TIMESTEP_MSEC = 1;\n var numSteps = Math.floor((now - this._lastTime) / TIMESTEP_MSEC);\n\n for (var i = 0; i < numSteps; ++i) {\n // Velocity is based on seconds instead of milliseconds\n var step = TIMESTEP_MSEC / 1000;\n\n // This is using RK4. A good blog post to understand how it works:\n // http://gafferongames.com/game-physics/integration-basics/\n var aVelocity = velocity;\n var aAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n var tempPosition = position + aVelocity * step / 2;\n var tempVelocity = velocity + aAcceleration * step / 2;\n\n var bVelocity = tempVelocity;\n var bAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n tempPosition = position + bVelocity * step / 2;\n tempVelocity = velocity + bAcceleration * step / 2;\n\n var cVelocity = tempVelocity;\n var cAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n tempPosition = position + cVelocity * step / 2;\n tempVelocity = velocity + cAcceleration * step / 2;\n\n var dVelocity = tempVelocity;\n var dAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n tempPosition = position + cVelocity * step / 2;\n tempVelocity = velocity + cAcceleration * step / 2;\n\n var dxdt = (aVelocity + 2 * (bVelocity + cVelocity) + dVelocity) / 6;\n var dvdt = (aAcceleration + 2 * (bAcceleration + cAcceleration) + dAcceleration) / 6;\n\n position += dxdt * step;\n velocity += dvdt * step;\n }\n\n this._lastTime = now;\n this._lastPosition = position;\n this._lastVelocity = velocity;\n\n this._onUpdate(position);\n if (!this.__active) { // a listener might have stopped us in _onUpdate\n return;\n }\n\n // Conditions for stopping the spring animation\n var isOvershooting = false;\n if (this._overshootClamping && this._tension !== 0) {\n if (this._startPosition < this._toValue) {\n isOvershooting = position > this._toValue;\n } else {\n isOvershooting = position < this._toValue;\n }\n }\n var isVelocity = Math.abs(velocity) <= this._restSpeedThreshold;\n var isDisplacement = true;\n if (this._tension !== 0) {\n isDisplacement = Math.abs(this._toValue - position) <= this._restDisplacementThreshold;\n }\n if (isOvershooting || (isVelocity && isDisplacement)) {\n this.__debouncedOnEnd({finished: true});\n return;\n }\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n\n stop(): void {\n this.__active = false;\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype ValueListenerCallback = (state: {value: number}) => void;\n\nvar _uniqueId = 1;\n\nclass AnimatedValue extends AnimatedWithChildren {\n _value: number;\n _offset: number;\n _animation: ?Animation;\n _tracking: ?Animated;\n _listeners: {[key: string]: ValueListenerCallback};\n\n constructor(value: number) {\n super();\n this._value = value;\n this._offset = 0;\n this._animation = null;\n this._listeners = {};\n }\n\n detach() {\n this.stopAnimation();\n }\n\n __getValue(): number {\n return this._value + this._offset;\n }\n\n setValue(value: number): void {\n if (this._animation) {\n this._animation.stop();\n this._animation = null;\n }\n this._updateValue(value);\n }\n\n setOffset(offset: number): void {\n this._offset = offset;\n }\n\n flattenOffset(): void {\n this._value += this._offset;\n this._offset = 0;\n }\n\n addListener(callback: ValueListenerCallback): string {\n var id = String(_uniqueId++);\n this._listeners[id] = callback;\n return id;\n }\n\n removeListener(id: string): void {\n delete this._listeners[id];\n }\n\n removeAllListeners(): void {\n this._listeners = {};\n }\n\n animate(animation: Animation, callback: ?EndCallback): void {\n var handle = InteractionManager.createInteractionHandle();\n var previousAnimation = this._animation;\n this._animation && this._animation.stop();\n this._animation = animation;\n animation.start(\n this._value,\n (value) => {\n this._updateValue(value);\n },\n (result) => {\n this._animation = null;\n InteractionManager.clearInteractionHandle(handle);\n callback && callback(result);\n },\n previousAnimation,\n );\n }\n\n stopAnimation(callback?: ?(value: number) => void): void {\n this.stopTracking();\n this._animation && this._animation.stop();\n this._animation = null;\n callback && callback(this.__getValue());\n }\n\n stopTracking(): void {\n this._tracking && this._tracking.detach();\n this._tracking = null;\n }\n\n track(tracking: Animated): void {\n this.stopTracking();\n this._tracking = tracking;\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, Interpolation.create(config));\n }\n\n _updateValue(value: number): void {\n this._value = value;\n _flush(this);\n for (var key in this._listeners) {\n this._listeners[key]({value: this.__getValue()});\n }\n }\n}\n\ntype ValueXYListenerCallback = (value: {x: number; y: number}) => void;\nclass AnimatedValueXY extends AnimatedWithChildren {\n x: AnimatedValue;\n y: AnimatedValue;\n _listeners: {[key: string]: {x: string; y: string}};\n\n constructor(valueIn?: ?{x: number | AnimatedValue; y: number | AnimatedValue}) {\n super();\n var value: any = valueIn || {x: 0, y: 0}; // @flowfixme: shouldn't need `: any`\n if (typeof value.x === 'number' && typeof value.y === 'number') {\n this.x = new AnimatedValue(value.x);\n this.y = new AnimatedValue(value.y);\n } else {\n invariant(\n value.x instanceof AnimatedValue &&\n value.y instanceof AnimatedValue,\n 'AnimatedValueXY must be initalized with an object of numbers or ' +\n 'AnimatedValues.'\n );\n this.x = value.x;\n this.y = value.y;\n }\n this._listeners = {};\n }\n\n setValue(value: {x: number; y: number}) {\n this.x.setValue(value.x);\n this.y.setValue(value.y);\n }\n\n setOffset(offset: {x: number; y: number}) {\n this.x.setOffset(offset.x);\n this.y.setOffset(offset.y);\n }\n\n flattenOffset(): void {\n this.x.flattenOffset();\n this.y.flattenOffset();\n }\n\n __getValue(): {x: number; y: number} {\n return {\n x: this.x.__getValue(),\n y: this.y.__getValue(),\n };\n }\n\n stopAnimation(callback?: ?() => number): void {\n this.x.stopAnimation();\n this.y.stopAnimation();\n callback && callback(this.__getValue());\n }\n\n addListener(callback: ValueXYListenerCallback): string {\n var id = String(_uniqueId++);\n var jointCallback = ({value: number}) => {\n callback(this.__getValue());\n };\n this._listeners[id] = {\n x: this.x.addListener(jointCallback),\n y: this.y.addListener(jointCallback),\n };\n return id;\n }\n\n removeListener(id: string): void {\n this.x.removeListener(this._listeners[id].x);\n this.y.removeListener(this._listeners[id].y);\n delete this._listeners[id];\n }\n\n getLayout(): {[key: string]: AnimatedValue} {\n return {\n left: this.x,\n top: this.y,\n };\n }\n\n getTranslateTransform(): Array<{[key: string]: AnimatedValue}> {\n return [\n {translateX: this.x},\n {translateY: this.y}\n ];\n }\n}\n\nclass AnimatedInterpolation extends AnimatedWithChildren {\n _parent: Animated;\n _interpolation: (input: number) => number | string;\n\n constructor(parent: Animated, interpolation: (input: number) => number | string) {\n super();\n this._parent = parent;\n this._interpolation = interpolation;\n }\n\n __getValue(): number | string {\n var parentValue: number = this._parent.__getValue();\n invariant(\n typeof parentValue === 'number',\n 'Cannot interpolate an input which is not a number.'\n );\n return this._interpolation(parentValue);\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, Interpolation.create(config));\n }\n\n attach(): void {\n this._parent.addChild(this);\n }\n\n detach(): void {\n this._parent.removeChild(this);\n }\n}\n\nclass AnimatedTransform extends AnimatedWithChildren {\n _transforms: Array<Object>;\n\n constructor(transforms: Array<Object>) {\n super();\n this._transforms = transforms;\n }\n\n __getValue(): Array<Object> {\n return this._transforms.map(transform => {\n var result = {};\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n result[key] = value.__getValue();\n } else {\n result[key] = value;\n }\n }\n return result;\n });\n }\n\n getAnimatedValue(): Array<Object> {\n return this._transforms.map(transform => {\n var result = {};\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n result[key] = value.getAnimatedValue();\n } else {\n // All transform components needed to recompose matrix\n result[key] = value;\n }\n }\n return result;\n });\n }\n\n attach(): void {\n this._transforms.forEach(transform => {\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n value.addChild(this);\n }\n }\n });\n }\n\n detach(): void {\n this._transforms.forEach(transform => {\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n value.removeChild(this);\n }\n }\n });\n }\n}\n\nclass AnimatedStyle extends AnimatedWithChildren {\n _style: Object;\n\n constructor(style: any) {\n super();\n style = flattenStyle(style) || {};\n if (style.transform) {\n style = {\n ...style,\n transform: new AnimatedTransform(style.transform),\n };\n }\n this._style = style;\n }\n\n __getValue(): Object {\n var style = {};\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n style[key] = value.__getValue();\n } else {\n style[key] = value;\n }\n }\n return style;\n }\n\n getAnimatedValue(): Object {\n var style = {};\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n style[key] = value.getAnimatedValue();\n }\n }\n return style;\n }\n\n attach(): void {\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n value.addChild(this);\n }\n }\n }\n\n detach(): void {\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n value.removeChild(this);\n }\n }\n }\n}\n\nclass AnimatedProps extends Animated {\n _props: Object;\n _callback: () => void;\n\n constructor(\n props: Object,\n callback: () => void,\n ) {\n super();\n if (props.style) {\n props = {\n ...props,\n style: new AnimatedStyle(props.style),\n };\n }\n this._props = props;\n this._callback = callback;\n this.attach();\n }\n\n __getValue(): Object {\n var props = {};\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n props[key] = value.__getValue();\n } else {\n props[key] = value;\n }\n }\n return props;\n }\n\n getAnimatedValue(): Object {\n var props = {};\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n props[key] = value.getAnimatedValue();\n }\n }\n return props;\n }\n\n attach(): void {\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n value.addChild(this);\n }\n }\n }\n\n detach(): void {\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n value.removeChild(this);\n }\n }\n }\n\n update(): void {\n this._callback();\n }\n}\n\nfunction createAnimatedComponent(Component: any): any {\n var refName = 'node';\n\n class AnimatedComponent extends React.Component {\n _propsAnimated: AnimatedProps;\n\n componentWillUnmount() {\n this._propsAnimated && this._propsAnimated.detach();\n }\n\n setNativeProps(props) {\n this.refs[refName].setNativeProps(props);\n }\n\n componentWillMount() {\n this.attachProps(this.props);\n }\n\n attachProps(nextProps) {\n var oldPropsAnimated = this._propsAnimated;\n\n // The system is best designed when setNativeProps is implemented. It is\n // able to avoid re-rendering and directly set the attributes that\n // changed. However, setNativeProps can only be implemented on leaf\n // native components. If you want to animate a composite component, you\n // need to re-render it. In this case, we have a fallback that uses\n // forceUpdate.\n var callback = () => {\n if (this.refs[refName].setNativeProps) {\n var value = this._propsAnimated.getAnimatedValue();\n this.refs[refName].setNativeProps(value);\n } else {\n this.forceUpdate();\n }\n };\n\n this._propsAnimated = new AnimatedProps(\n nextProps,\n callback,\n );\n\n // When you call detach, it removes the element from the parent list\n // of children. If it goes to 0, then the parent also detaches itself\n // and so on.\n // An optimization is to attach the new elements and THEN detach the old\n // ones instead of detaching and THEN attaching.\n // This way the intermediate state isn't to go to 0 and trigger\n // this expensive recursive detaching to then re-attach everything on\n // the very next operation.\n oldPropsAnimated && oldPropsAnimated.detach();\n }\n\n componentWillReceiveProps(nextProps) {\n this.attachProps(nextProps);\n }\n\n render() {\n return (\n <Component\n {...this._propsAnimated.__getValue()}\n ref={refName}\n />\n );\n }\n }\n\n return AnimatedComponent;\n}\n\nclass AnimatedTracking extends Animated {\n _value: AnimatedValue;\n _parent: Animated;\n _callback: ?EndCallback;\n _animationConfig: Object;\n _animationClass: any;\n\n constructor(\n value: AnimatedValue,\n parent: Animated,\n animationClass: any,\n animationConfig: Object,\n callback?: ?EndCallback,\n ) {\n super();\n this._value = value;\n this._parent = parent;\n this._animationClass = animationClass;\n this._animationConfig = animationConfig;\n this._callback = callback;\n this.attach();\n }\n\n __getValue(): Object {\n return this._parent.__getValue();\n }\n\n attach(): void {\n this._parent.addChild(this);\n }\n\n detach(): void {\n this._parent.removeChild(this);\n }\n\n update(): void {\n this._value.animate(new this._animationClass({\n ...this._animationConfig,\n toValue: (this._animationConfig.toValue: any).__getValue(),\n }), this._callback);\n }\n}\n\ntype CompositeAnimation = {\n start: (callback?: ?EndCallback) => void;\n stop: () => void;\n};\n\nvar maybeVectorAnim = function(\n value: AnimatedValue | AnimatedValueXY,\n config: Object,\n anim: (value: AnimatedValue, config: Object) => CompositeAnimation\n): ?CompositeAnimation {\n if (value instanceof AnimatedValueXY) {\n var configX = {...config};\n var configY = {...config};\n for (var key in config) {\n var {x, y} = config[key];\n if (x !== undefined && y !== undefined) {\n configX[key] = x;\n configY[key] = y;\n }\n }\n var aX = anim((value: AnimatedValueXY).x, configX);\n var aY = anim((value: AnimatedValueXY).y, configY);\n // We use `stopTogether: false` here because otherwise tracking will break\n // because the second animation will get stopped before it can update.\n return parallel([aX, aY], {stopTogether: false});\n }\n return null;\n};\n\nvar spring = function(\n value: AnimatedValue | AnimatedValueXY,\n config: SpringAnimationConfig,\n): CompositeAnimation {\n return maybeVectorAnim(value, config, spring) || {\n start: function(callback?: ?EndCallback): void {\n var singleValue: any = value;\n var singleConfig: any = config;\n singleValue.stopTracking();\n if (config.toValue instanceof Animated) {\n singleValue.track(new AnimatedTracking(\n singleValue,\n config.toValue,\n SpringAnimation,\n singleConfig,\n callback\n ));\n } else {\n singleValue.animate(new SpringAnimation(singleConfig), callback);\n }\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n };\n};\n\nvar timing = function(\n value: AnimatedValue | AnimatedValueXY,\n config: TimingAnimationConfig,\n): CompositeAnimation {\n return maybeVectorAnim(value, config, timing) || {\n start: function(callback?: ?EndCallback): void {\n var singleValue: any = value;\n var singleConfig: any = config;\n singleValue.stopTracking();\n if (config.toValue instanceof Animated) {\n singleValue.track(new AnimatedTracking(\n singleValue,\n config.toValue,\n TimingAnimation,\n singleConfig,\n callback\n ));\n } else {\n singleValue.animate(new TimingAnimation(singleConfig), callback);\n }\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n };\n};\n\nvar decay = function(\n value: AnimatedValue | AnimatedValueXY,\n config: DecayAnimationConfig,\n): CompositeAnimation {\n return maybeVectorAnim(value, config, decay) || {\n start: function(callback?: ?EndCallback): void {\n var singleValue: any = value;\n var singleConfig: any = config;\n singleValue.stopTracking();\n singleValue.animate(new DecayAnimation(singleConfig), callback);\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n };\n};\n\nvar sequence = function(\n animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n var current = 0;\n return {\n start: function(callback?: ?EndCallback) {\n var onComplete = function(result) {\n if (!result.finished) {\n callback && callback(result);\n return;\n }\n\n current++;\n\n if (current === animations.length) {\n callback && callback(result);\n return;\n }\n\n animations[current].start(onComplete);\n };\n\n if (animations.length === 0) {\n callback && callback({finished: true});\n } else {\n animations[current].start(onComplete);\n }\n },\n\n stop: function() {\n if (current < animations.length) {\n animations[current].stop();\n }\n }\n };\n};\n\ntype ParallelConfig = {\n stopTogether?: bool; // If one is stopped, stop all. default: true\n}\nvar parallel = function(\n animations: Array<CompositeAnimation>,\n config?: ?ParallelConfig,\n): CompositeAnimation {\n var doneCount = 0;\n // Make sure we only call stop() at most once for each animation\n var hasEnded = {};\n var stopTogether = !(config && config.stopTogether === false);\n\n var result = {\n start: function(callback?: ?EndCallback) {\n if (doneCount === animations.length) {\n callback && callback({finished: true});\n return;\n }\n\n animations.forEach((animation, idx) => {\n animation.start(endResult => {\n hasEnded[idx] = true;\n doneCount++;\n if (doneCount === animations.length) {\n doneCount = 0;\n callback && callback(endResult);\n return;\n }\n\n if (!endResult.finished && stopTogether) {\n result.stop();\n }\n });\n });\n },\n\n stop: function(): void {\n animations.forEach((animation, idx) => {\n !hasEnded[idx] && animation.stop();\n hasEnded[idx] = true;\n });\n }\n };\n\n return result;\n};\n\nvar delay = function(time: number): CompositeAnimation {\n // Would be nice to make a specialized implementation\n return timing(new AnimatedValue(0), {toValue: 0, delay: time, duration: 0});\n};\n\nvar stagger = function(\n time: number,\n animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n return parallel(animations.map((animation, i) => {\n return sequence([\n delay(time * i),\n animation,\n ]);\n }));\n};\n\ntype Mapping = {[key: string]: Mapping} | AnimatedValue;\n\n/**\n * Takes an array of mappings and extracts values from each arg accordingly,\n * then calls setValue on the mapped outputs. e.g.\n *\n * onScroll={this.AnimatedEvent(\n * [{nativeEvent: {contentOffset: {x: this._scrollX}}}]\n * {listener} // optional listener invoked asynchronously\n * )\n * ...\n * onPanResponderMove: this.AnimatedEvent([\n * null, // raw event arg\n * {dx: this._panX}, // gestureState arg\n * ]),\n *\n */\ntype EventConfig = {listener?: ?Function};\nvar event = function(\n argMapping: Array<?Mapping>,\n config?: ?EventConfig,\n): () => void {\n return function(...args): void {\n var traverse = function(recMapping, recEvt, key) {\n if (typeof recEvt === 'number') {\n invariant(\n recMapping instanceof AnimatedValue,\n 'Bad mapping of type ' + typeof recMapping + ' for key ' + key +\n ', event value must map to AnimatedValue'\n );\n recMapping.setValue(recEvt);\n return;\n }\n invariant(\n typeof recMapping === 'object',\n 'Bad mapping of type ' + typeof recMapping + ' for key ' + key\n );\n invariant(\n typeof recEvt === 'object',\n 'Bad event of type ' + typeof recEvt + ' for key ' + key\n );\n for (var key in recMapping) {\n traverse(recMapping[key], recEvt[key], key);\n }\n };\n argMapping.forEach((mapping, idx) => {\n traverse(mapping, args[idx], 'arg' + idx);\n });\n if (config && config.listener) {\n config.listener.apply(null, args);\n }\n };\n};\n\nmodule.exports = {\n delay,\n sequence,\n parallel,\n stagger,\n\n decay,\n timing,\n spring,\n\n event,\n\n Value: AnimatedValue,\n ValueXY: AnimatedValueXY,\n __PropsOnlyForTests: AnimatedProps,\n View: createAnimatedComponent(View),\n Text: createAnimatedComponent(Text),\n Image: createAnimatedComponent(Image),\n createAnimatedComponent,\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Animated.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Interpolation.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=function(condition,message){\nif(!condition){\nvar error=new Error(message);\nerror.framesToPop = 1;\nthrow error;}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar linear=function(t){return t;};var \n\n\n\n\n\nInterpolation=(function(){function Interpolation(){_classCallCheck(this,Interpolation);}_createClass(Interpolation,null,[{key:'create',value:\nfunction create(config){\n\nif(config.outputRange && typeof config.outputRange[0] === 'string'){\nreturn createInterpolationFromStringOutputRange(config);}\n\n\nvar outputRange=config.outputRange;\ncheckInfiniteRange('outputRange',outputRange);\n\nvar inputRange=config.inputRange;\ncheckInfiniteRange('inputRange',inputRange);\ncheckValidInputRange(inputRange);\n\ninvariant(\ninputRange.length === outputRange.length,\n'inputRange (' + inputRange.length + ') and outputRange (' + \noutputRange.length + ') must have the same length');\n\n\nvar easing=config.easing || linear;\n\nvar extrapolateLeft='extend';\nif(config.extrapolateLeft !== undefined){\nextrapolateLeft = config.extrapolateLeft;}else \nif(config.extrapolate !== undefined){\nextrapolateLeft = config.extrapolate;}\n\n\nvar extrapolateRight='extend';\nif(config.extrapolateRight !== undefined){\nextrapolateRight = config.extrapolateRight;}else \nif(config.extrapolate !== undefined){\nextrapolateRight = config.extrapolate;}\n\n\nreturn function(input){\ninvariant(\ntypeof input === 'number',\n'Cannot interpolation an input which is not a number');\n\n\nvar range=findRange(input,inputRange);\nreturn interpolate(\ninput,\ninputRange[range],\ninputRange[range + 1],\noutputRange[range],\noutputRange[range + 1],\neasing,\nextrapolateLeft,\nextrapolateRight);};}}]);return Interpolation;})();\n\n\n\n\n\nfunction interpolate(\ninput,\ninputMin,\ninputMax,\noutputMin,\noutputMax,\neasing,\nextrapolateLeft,\nextrapolateRight)\n{\nvar result=input;\n\n\nif(result < inputMin){\nif(extrapolateLeft === 'identity'){\nreturn result;}else \nif(extrapolateLeft === 'clamp'){\nresult = inputMin;}else \nif(extrapolateLeft === 'extend'){}}\n\n\n\n\nif(result > inputMax){\nif(extrapolateRight === 'identity'){\nreturn result;}else \nif(extrapolateRight === 'clamp'){\nresult = inputMax;}else \nif(extrapolateRight === 'extend'){}}\n\n\n\n\nif(outputMin === outputMax){\nreturn outputMin;}\n\n\nif(inputMin === inputMax){\nif(input <= inputMin){\nreturn outputMin;}\n\nreturn outputMax;}\n\n\n\nif(inputMin === -Infinity){\nresult = -result;}else \nif(inputMax === Infinity){\nresult = result - inputMin;}else \n{\nresult = (result - inputMin) / (inputMax - inputMin);}\n\n\n\nresult = easing(result);\n\n\nif(outputMin === -Infinity){\nresult = -result;}else \nif(outputMax === Infinity){\nresult = result + outputMin;}else \n{\nresult = result * (outputMax - outputMin) + outputMin;}\n\n\nreturn result;}\n\n\nvar stringShapeRegex=/[0-9\\.-]+/g;\n\n\n\n\n\n\n\n\n\nfunction createInterpolationFromStringOutputRange(\nconfig)\n{\nvar outputRange=config.outputRange;\ninvariant(outputRange.length >= 2,'Bad output range');\ncheckPattern(outputRange);\n\n\n\n\n\n\n\n\n\nvar outputRanges=outputRange[0].match(stringShapeRegex).map(function(){return [];});\noutputRange.forEach(function(value){\nvalue.match(stringShapeRegex).forEach(function(number,i){\noutputRanges[i].push(+number);});});\n\n\n\nvar interpolations=outputRange[0].match(stringShapeRegex).map(function(value,i){\nreturn Interpolation.create(_extends({},\nconfig,{\noutputRange:outputRanges[i]}));});\n\n\n\nreturn function(input){\nvar i=0;\n\n\n\nreturn outputRange[0].replace(stringShapeRegex,function(){\nreturn String(interpolations[i++](input));});};}\n\n\n\n\nfunction checkPattern(arr){\nvar pattern=arr[0].replace(stringShapeRegex,'');\nfor(var i=1;i < arr.length;++i) {\ninvariant(\npattern === arr[i].replace(stringShapeRegex,''),\n'invalid pattern ' + arr[0] + ' and ' + arr[i]);}}\n\n\n\n\nfunction findRange(input,inputRange){\nfor(var i=1;i < inputRange.length - 1;++i) {\nif(inputRange[i] >= input){\nbreak;}}\n\n\nreturn i - 1;}\n\n\nfunction checkValidInputRange(arr){\ninvariant(arr.length >= 2,'inputRange must have at least 2 elements');\nfor(var i=1;i < arr.length;++i) {\ninvariant(\narr[i] >= arr[i - 1],\n\n\n\n\n\n\n'inputRange must be monotonically increasing ' + arr);}}\n\n\n\n\nfunction checkInfiniteRange(name,arr){\ninvariant(arr.length >= 2,name + ' must have at least 2 elements');\ninvariant(\narr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,\n\n\n\n\n\n\nname + 'cannot be ]-infinity;+infinity[ ' + arr);}\n\n\n\nmodule.exports = Interpolation;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Interpolation\n * @flow\n */\n'use strict';\n\n// TODO(#7644673): fix this hack once github jest actually checks invariants\nvar invariant = function(condition, message) {\n if (!condition) {\n var error = new Error(message);\n (error: any).framesToPop = 1; // $FlowIssue\n throw error;\n }\n};\n\ntype ExtrapolateType = 'extend' | 'identity' | 'clamp';\n\n// $FlowFixMe D2163827\nexport type InterpolationConfigType = {\n inputRange: Array<number>;\n outputRange: (Array<number> | Array<string>);\n easing?: ((input: number) => number);\n extrapolate?: ExtrapolateType;\n extrapolateLeft?: ExtrapolateType;\n extrapolateRight?: ExtrapolateType;\n};\n\nvar linear = (t) => t;\n\n/**\n * Very handy helper to map input ranges to output ranges with an easing\n * function and custom behavior outside of the ranges.\n */\nclass Interpolation {\n static create(config: InterpolationConfigType): (input: number) => number | string {\n\n if (config.outputRange && typeof config.outputRange[0] === 'string') {\n return createInterpolationFromStringOutputRange(config);\n }\n\n var outputRange: Array<number> = (config.outputRange: any);\n checkInfiniteRange('outputRange', outputRange);\n\n var inputRange = config.inputRange;\n checkInfiniteRange('inputRange', inputRange);\n checkValidInputRange(inputRange);\n\n invariant(\n inputRange.length === outputRange.length,\n 'inputRange (' + inputRange.length + ') and outputRange (' +\n outputRange.length + ') must have the same length'\n );\n\n var easing = config.easing || linear;\n\n var extrapolateLeft: ExtrapolateType = 'extend';\n if (config.extrapolateLeft !== undefined) {\n extrapolateLeft = config.extrapolateLeft;\n } else if (config.extrapolate !== undefined) {\n extrapolateLeft = config.extrapolate;\n }\n\n var extrapolateRight: ExtrapolateType = 'extend';\n if (config.extrapolateRight !== undefined) {\n extrapolateRight = config.extrapolateRight;\n } else if (config.extrapolate !== undefined) {\n extrapolateRight = config.extrapolate;\n }\n\n return (input) => {\n invariant(\n typeof input === 'number',\n 'Cannot interpolation an input which is not a number'\n );\n\n var range = findRange(input, inputRange);\n return interpolate(\n input,\n inputRange[range],\n inputRange[range + 1],\n outputRange[range],\n outputRange[range + 1],\n easing,\n extrapolateLeft,\n extrapolateRight,\n );\n };\n }\n}\n\nfunction interpolate(\n input: number,\n inputMin: number,\n inputMax: number,\n outputMin: number,\n outputMax: number,\n easing: ((input: number) => number),\n extrapolateLeft: ExtrapolateType,\n extrapolateRight: ExtrapolateType,\n) {\n var result = input;\n\n // Extrapolate\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') {\n return result;\n } else if (extrapolateLeft === 'clamp') {\n result = inputMin;\n } else if (extrapolateLeft === 'extend') {\n // noop\n }\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') {\n return result;\n } else if (extrapolateRight === 'clamp') {\n result = inputMax;\n } else if (extrapolateRight === 'extend') {\n // noop\n }\n }\n\n if (outputMin === outputMax) {\n return outputMin;\n }\n\n if (inputMin === inputMax) {\n if (input <= inputMin) {\n return outputMin;\n }\n return outputMax;\n }\n\n // Input Range\n if (inputMin === -Infinity) {\n result = -result;\n } else if (inputMax === Infinity) {\n result = result - inputMin;\n } else {\n result = (result - inputMin) / (inputMax - inputMin);\n }\n\n // Easing\n result = easing(result);\n\n // Output Range\n if (outputMin === -Infinity) {\n result = -result;\n } else if (outputMax === Infinity) {\n result = result + outputMin;\n } else {\n result = result * (outputMax - outputMin) + outputMin;\n }\n\n return result;\n}\n\nvar stringShapeRegex = /[0-9\\.-]+/g;\n\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape. Supports\n * things like:\n *\n * rgba(123, 42, 99, 0.36) // colors\n * -45deg // values with units\n */\nfunction createInterpolationFromStringOutputRange(\n config: InterpolationConfigType,\n): (input: number) => string {\n var outputRange: Array<string> = (config.outputRange: any);\n invariant(outputRange.length >= 2, 'Bad output range');\n checkPattern(outputRange);\n\n // ['rgba(0, 100, 200, 0)', 'rgba(50, 150, 250, 0.5)']\n // ->\n // [\n // [0, 50],\n // [100, 150],\n // [200, 250],\n // [0, 0.5],\n // ]\n var outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);\n outputRange.forEach(value => {\n value.match(stringShapeRegex).forEach((number, i) => {\n outputRanges[i].push(+number);\n });\n });\n\n var interpolations = outputRange[0].match(stringShapeRegex).map((value, i) => {\n return Interpolation.create({\n ...config,\n outputRange: outputRanges[i],\n });\n });\n\n return (input) => {\n var i = 0;\n // 'rgba(0, 100, 200, 0)'\n // ->\n // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'\n return outputRange[0].replace(stringShapeRegex, () => {\n return String(interpolations[i++](input));\n });\n };\n}\n\nfunction checkPattern(arr: Array<string>) {\n var pattern = arr[0].replace(stringShapeRegex, '');\n for (var i = 1; i < arr.length; ++i) {\n invariant(\n pattern === arr[i].replace(stringShapeRegex, ''),\n 'invalid pattern ' + arr[0] + ' and ' + arr[i],\n );\n }\n}\n\nfunction findRange(input: number, inputRange: Array<number>) {\n for (var i = 1; i < inputRange.length - 1; ++i) {\n if (inputRange[i] >= input) {\n break;\n }\n }\n return i - 1;\n}\n\nfunction checkValidInputRange(arr: Array<number>) {\n invariant(arr.length >= 2, 'inputRange must have at least 2 elements');\n for (var i = 1; i < arr.length; ++i) {\n invariant(\n arr[i] >= arr[i - 1],\n /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n * one or both of the operands may be something that doesn't cleanly\n * convert to a string, like undefined, null, and object, etc. If you really\n * mean this implicit string conversion, you can do something like\n * String(myThing)\n */\n 'inputRange must be monotonically increasing ' + arr\n );\n }\n}\n\nfunction checkInfiniteRange(name: string, arr: Array<number>) {\n invariant(arr.length >= 2, name + ' must have at least 2 elements');\n invariant(\n arr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,\n /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n * one or both of the operands may be something that doesn't cleanly convert\n * to a string, like undefined, null, and object, etc. If you really mean\n * this implicit string conversion, you can do something like\n * String(myThing)\n */\n name + 'cannot be ]-infinity;+infinity[ ' + arr\n );\n}\n\nmodule.exports = Interpolation;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Interpolation.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Easing.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar _bezier=require('bezier');var \n\n\n\n\n\n\nEasing=(function(){function Easing(){_classCallCheck(this,Easing);}_createClass(Easing,null,[{key:'step0',value:\nfunction step0(n){\nreturn n > 0?1:0;}},{key:'step1',value:\n\n\nfunction step1(n){\nreturn n >= 1?1:0;}},{key:'linear',value:\n\n\nfunction linear(t){\nreturn t;}},{key:'ease',value:(function(_ease){function ease(_x){return _ease.apply(this,arguments);}ease.toString = function(){return _ease.toString();};return ease;})(\n\n\nfunction(t){\nreturn ease(t);})},{key:'quad',value:\n\n\nfunction quad(t){\nreturn t * t;}},{key:'cubic',value:\n\n\nfunction cubic(t){\nreturn t * t * t;}},{key:'poly',value:\n\n\nfunction poly(n){\nreturn function(t){return Math.pow(t,n);};}},{key:'sin',value:\n\n\nfunction sin(t){\nreturn 1 - Math.cos(t * Math.PI / 2);}},{key:'circle',value:\n\n\nfunction circle(t){\nreturn 1 - Math.sqrt(1 - t * t);}},{key:'exp',value:\n\n\nfunction exp(t){\nreturn Math.pow(2,10 * (t - 1));}},{key:'elastic',value:\n\n\nfunction elastic(a,p){\nvar tau=Math.PI * 2;\n\n\nvar s;\nif(arguments.length < 2){\np = 0.45;}\n\nif(arguments.length){\ns = p / tau * Math.asin(1 / a);}else \n{\na = 1;\ns = p / 4;}\n\nreturn function(t){return 1 + a * Math.pow(2,-10 * t) * Math.sin((t - s) * tau / p);};}},{key:'back',value:\n\n\nfunction back(s){\nif(s === undefined){\ns = 1.70158;}\n\nreturn function(t){return t * t * ((s + 1) * t - s);};}},{key:'bounce',value:\n\n\nfunction bounce(t){\nif(t < 1 / 2.75){\nreturn 7.5625 * t * t;}\n\n\nif(t < 2 / 2.75){\nt -= 1.5 / 2.75;\nreturn 7.5625 * t * t + 0.75;}\n\n\nif(t < 2.5 / 2.75){\nt -= 2.25 / 2.75;\nreturn 7.5625 * t * t + 0.9375;}\n\n\nt -= 2.625 / 2.75;\nreturn 7.5625 * t * t + 0.984375;}},{key:'bezier',value:\n\n\nfunction bezier(\nx1,\ny1,\nx2,\ny2,\nepsilon)\n{\nif(epsilon === undefined){\n\n\nvar duration=500;\nepsilon = 1000 / 60 / duration / 4;}\n\n\nreturn _bezier(x1,y1,x2,y2,epsilon);}},{key:'in',value:\n\n\nfunction _in(\neasing)\n{\nreturn easing;}},{key:'out',value:\n\n\nfunction out(\neasing)\n{\nreturn function(t){return 1 - easing(1 - t);};}},{key:'inOut',value:\n\n\nfunction inOut(\neasing)\n{\nreturn function(t){\nif(t < 0.5){\nreturn easing(t * 2) / 2;}\n\nreturn 1 - easing((1 - t) * 2) / 2;};}}]);return Easing;})();\n\n\n\n\nvar ease=Easing.bezier(0.42,0,1,1);\n\nmodule.exports = Easing;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Easing\n * @flow\n */\n'use strict';\n\nvar bezier = require('bezier');\n\n/**\n * This class implements common easing functions. The math is pretty obscure,\n * but this cool website has nice visual illustrations of what they represent:\n * http://xaedes.de/dev/transitions/\n */\nclass Easing {\n static step0(n) {\n return n > 0 ? 1 : 0;\n }\n\n static step1(n) {\n return n >= 1 ? 1 : 0;\n }\n\n static linear(t) {\n return t;\n }\n\n static ease(t: number): number {\n return ease(t);\n }\n\n static quad(t) {\n return t * t;\n }\n\n static cubic(t) {\n return t * t * t;\n }\n\n static poly(n) {\n return (t) => Math.pow(t, n);\n }\n\n static sin(t) {\n return 1 - Math.cos(t * Math.PI / 2);\n }\n\n static circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n\n static exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n\n static elastic(a: number, p: number): (t: number) => number {\n var tau = Math.PI * 2;\n // flow isn't smart enough to figure out that s is always assigned to a\n // number before being used in the returned function\n var s: any;\n if (arguments.length < 2) {\n p = 0.45;\n }\n if (arguments.length) {\n s = p / tau * Math.asin(1 / a);\n } else {\n a = 1;\n s = p / 4;\n }\n return (t) => 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * tau / p);\n };\n\n static back(s: number): (t: number) => number {\n if (s === undefined) {\n s = 1.70158;\n }\n return (t) => t * t * ((s + 1) * t - s);\n };\n\n static bounce(t: number): number {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n }\n\n if (t < 2 / 2.75) {\n t -= 1.5 / 2.75;\n return 7.5625 * t * t + 0.75;\n }\n\n if (t < 2.5 / 2.75) {\n t -= 2.25 / 2.75;\n return 7.5625 * t * t + 0.9375;\n }\n\n t -= 2.625 / 2.75;\n return 7.5625 * t * t + 0.984375;\n };\n\n static bezier(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n epsilon?: ?number,\n ): (t: number) => number {\n if (epsilon === undefined) {\n // epsilon determines the precision of the solved values\n // a good approximation is:\n var duration = 500; // duration of animation in milliseconds.\n epsilon = (1000 / 60 / duration) / 4;\n }\n\n return bezier(x1, y1, x2, y2, epsilon);\n }\n\n static in(\n easing: (t: number) => number,\n ): (t: number) => number {\n return easing;\n }\n\n static out(\n easing: (t: number) => number,\n ): (t: number) => number {\n return (t) => 1 - easing(1 - t);\n }\n\n static inOut(\n easing: (t: number) => number,\n ): (t: number) => number {\n return (t) => {\n if (t < 0.5) {\n return easing(t * 2) / 2;\n }\n return 1 - easing((1 - t) * 2) / 2;\n };\n }\n}\n\nvar ease = Easing.bezier(0.42, 0, 1, 1);\n\nmodule.exports = Easing;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Easing.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/bezier.js":{"data":{"code":"module.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports = function(x1,y1,x2,y2,epsilon){\n\nvar curveX=function(t){\nvar v=1 - t;\nreturn 3 * v * v * t * x1 + 3 * v * t * t * x2 + t * t * t;};\n\n\nvar curveY=function(t){\nvar v=1 - t;\nreturn 3 * v * v * t * y1 + 3 * v * t * t * y2 + t * t * t;};\n\n\nvar derivativeCurveX=function(t){\nvar v=1 - t;\nreturn 3 * (2 * (t - 1) * t + v * v) * x1 + 3 * (-t * t * t + 2 * v * t) * x2;};\n\n\nreturn function(t){\n\nvar x=t,t0,t1,t2,x2,d2,i;\n\n\nfor(t2 = x,i = 0;i < 8;i++) {\nx2 = curveX(t2) - x;\nif(Math.abs(x2) < epsilon)return curveY(t2);\nd2 = derivativeCurveX(t2);\nif(Math.abs(d2) < 1e-6)break;\nt2 = t2 - x2 / d2;}\n\n\nt0 = 0,t1 = 1,t2 = x;\n\nif(t2 < t0)return curveY(t0);\nif(t2 > t1)return curveY(t1);\n\n\nwhile(t0 < t1) {\nx2 = curveX(t2);\nif(Math.abs(x2 - x) < epsilon)return curveY(t2);\nif(x > x2)t0 = t2;else \nt1 = t2;\nt2 = (t1 - t0) * .5 + t0;}\n\n\n\nreturn curveY(t2);};};","sourceCode":"/**\n * https://github.com/arian/cubic-bezier\n *\n * MIT License\n *\n * Copyright (c) 2013 Arian Stolwijk\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @providesModule bezier\n * @nolint\n */\n\nmodule.exports = function(x1, y1, x2, y2, epsilon){\n\n var curveX = function(t){\n var v = 1 - t;\n return 3 * v * v * t * x1 + 3 * v * t * t * x2 + t * t * t;\n };\n\n var curveY = function(t){\n var v = 1 - t;\n return 3 * v * v * t * y1 + 3 * v * t * t * y2 + t * t * t;\n };\n\n var derivativeCurveX = function(t){\n var v = 1 - t;\n return 3 * (2 * (t - 1) * t + v * v) * x1 + 3 * (- t * t * t + 2 * v * t) * x2;\n };\n\n return function(t){\n\n var x = t, t0, t1, t2, x2, d2, i;\n\n // First try a few iterations of Newton's method -- normally very fast.\n for (t2 = x, i = 0; i < 8; i++){\n x2 = curveX(t2) - x;\n if (Math.abs(x2) < epsilon) return curveY(t2);\n d2 = derivativeCurveX(t2);\n if (Math.abs(d2) < 1e-6) break;\n t2 = t2 - x2 / d2;\n }\n\n t0 = 0, t1 = 1, t2 = x;\n\n if (t2 < t0) return curveY(t0);\n if (t2 > t1) return curveY(t1);\n\n // Fallback to the bisection method for reliability.\n while (t0 < t1){\n x2 = curveX(t2);\n if (Math.abs(x2 - x) < epsilon) return curveY(t2);\n if (x > x2) t0 = t2;\n else t1 = t2;\n t2 = (t1 - t0) * .5 + t0;\n }\n\n // Failure\n return curveY(t2);\n\n };\n\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/bezier.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/requestAnimationFrame.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nemptyFunction=require('emptyFunction');\nvar nativeRequestAnimationFrame=require('nativeRequestAnimationFrame');\n\nvar lastTime=0;\n\nvar requestAnimationFrame=\nnativeRequestAnimationFrame || \nfunction(callback){\nvar currTime=Date.now();\nvar timeDelay=Math.max(0,16 - (currTime - lastTime));\nlastTime = currTime + timeDelay;\nreturn global.setTimeout(function(){\ncallback(Date.now());},\ntimeDelay);};\n\n\n\nrequestAnimationFrame(emptyFunction);\n\nmodule.exports = requestAnimationFrame;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule requestAnimationFrame\n */\n\nvar emptyFunction = require('emptyFunction');\nvar nativeRequestAnimationFrame = require('nativeRequestAnimationFrame');\n\nvar lastTime = 0;\n\nvar requestAnimationFrame =\n nativeRequestAnimationFrame ||\n function(callback) {\n var currTime = Date.now();\n var timeDelay = Math.max(0, 16 - (currTime - lastTime));\n lastTime = currTime + timeDelay;\n return global.setTimeout(function() {\n callback(Date.now());\n }, timeDelay);\n };\n\n// Works around a rare bug in Safari 6 where the first request is never invoked.\nrequestAnimationFrame(emptyFunction);\n\nmodule.exports = requestAnimationFrame;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/requestAnimationFrame.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/nativeRequestAnimationFrame.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nnativeRequestAnimationFrame=\nglobal.requestAnimationFrame || \nglobal.webkitRequestAnimationFrame || \nglobal.mozRequestAnimationFrame || \nglobal.oRequestAnimationFrame || \nglobal.msRequestAnimationFrame;\n\nmodule.exports = nativeRequestAnimationFrame;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule nativeRequestAnimationFrame\n */\n\nvar nativeRequestAnimationFrame =\n global.requestAnimationFrame ||\n global.webkitRequestAnimationFrame ||\n global.mozRequestAnimationFrame ||\n global.oRequestAnimationFrame ||\n global.msRequestAnimationFrame;\n\nmodule.exports = nativeRequestAnimationFrame;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/nativeRequestAnimationFrame.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AppRegistry/AppRegistry.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar renderApplication=require('renderApplication');\n\nif(__DEV__){\n\n\nrequire('RCTRenderingPerf');}\n\n\nvar runnables={};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AppRegistry={\nregisterConfig:function(config){\nfor(var i=0;i < config.length;++i) {\nvar appConfig=config[i];\nif(appConfig.run){\nAppRegistry.registerRunnable(appConfig.appKey,appConfig.run);}else \n{\nAppRegistry.registerComponent(appConfig.appKey,appConfig.component);}}},\n\n\n\n\nregisterComponent:function(appKey,getComponentFunc){\nrunnables[appKey] = {\nrun:function(appParameters){return (\nrenderApplication(getComponentFunc(),appParameters.initialProps,appParameters.rootTag));}};\n\nreturn appKey;},\n\n\nregisterRunnable:function(appKey,func){\nrunnables[appKey] = {run:func};\nreturn appKey;},\n\n\nrunApplication:function(appKey,appParameters){\nconsole.log(\n'Running application \"' + appKey + '\" with appParams: ' + \nJSON.stringify(appParameters) + '. ' + \n'__DEV__ === ' + String(__DEV__) + \n', development-level warning are ' + (__DEV__?'ON':'OFF') + \n', performance optimizations are ' + (__DEV__?'OFF':'ON'));\n\ninvariant(\nrunnables[appKey] && runnables[appKey].run,\n'Application ' + appKey + ' has not been registered. This ' + \n'is either due to a require() error during initialization ' + \n'or failure to call AppRegistry.registerComponent.');\n\nrunnables[appKey].run(appParameters);}};\n\n\n\nmodule.exports = AppRegistry;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AppRegistry\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar renderApplication = require('renderApplication');\n\nif (__DEV__) {\n // In order to use Cmd+P to record/dump perf data, we need to make sure\n // this module is available in the bundle\n require('RCTRenderingPerf');\n}\n\nvar runnables = {};\n\ntype AppConfig = {\n appKey: string;\n component: ReactClass<any, any, any>;\n run?: Function;\n};\n\n/**\n * `AppRegistry` is the JS entry point to running all React Native apps. App\n * root components should register themselves with\n * `AppRegistry.registerComponent`, then the native system can load the bundle\n * for the app and then actually run the app when it's ready by invoking\n * `AppRegistry.runApplication`.\n *\n * `AppRegistry` should be `require`d early in the `require` sequence to make\n * sure the JS execution environment is setup before other modules are\n * `require`d.\n */\nvar AppRegistry = {\n registerConfig: function(config: Array<AppConfig>) {\n for (var i = 0; i < config.length; ++i) {\n var appConfig = config[i];\n if (appConfig.run) {\n AppRegistry.registerRunnable(appConfig.appKey, appConfig.run);\n } else {\n AppRegistry.registerComponent(appConfig.appKey, appConfig.component);\n }\n }\n },\n\n registerComponent: function(appKey: string, getComponentFunc: Function): string {\n runnables[appKey] = {\n run: (appParameters) =>\n renderApplication(getComponentFunc(), appParameters.initialProps, appParameters.rootTag)\n };\n return appKey;\n },\n\n registerRunnable: function(appKey: string, func: Function): string {\n runnables[appKey] = {run: func};\n return appKey;\n },\n\n runApplication: function(appKey: string, appParameters: any): void {\n console.log(\n 'Running application \"' + appKey + '\" with appParams: ' +\n JSON.stringify(appParameters) + '. ' +\n '__DEV__ === ' + String(__DEV__) +\n ', development-level warning are ' + (__DEV__ ? 'ON' : 'OFF') +\n ', performance optimizations are ' + (__DEV__ ? 'OFF' : 'ON')\n );\n invariant(\n runnables[appKey] && runnables[appKey].run,\n 'Application ' + appKey + ' has not been registered. This ' +\n 'is either due to a require() error during initialization ' +\n 'or failure to call AppRegistry.registerComponent.'\n );\n runnables[appKey].run(appParameters);\n },\n};\n\nmodule.exports = AppRegistry;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AppRegistry/AppRegistry.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/renderApplication.ios.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\nvar Inspector=require('Inspector');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Subscribable=require('Subscribable');\nvar View=require('View');\nvar WarningBox=require('WarningBox');\n\nvar invariant=require('invariant');\n\nvar AppContainer=React.createClass({displayName:'AppContainer',\nmixins:[Subscribable.Mixin],\n\ngetInitialState:function(){\nreturn {inspector:null};},\n\n\ntoggleElementInspector:function(){\nvar inspector=this.state.inspector?\nnull:\nReact.createElement(Inspector,{\nrootTag:this.props.rootTag,\ninspectedViewTag:React.findNodeHandle(this.refs.main)});\n\nthis.setState({inspector:inspector});},\n\n\ncomponentDidMount:function(){\nthis.addListenerOn(\nRCTDeviceEventEmitter,\n'toggleElementInspector',\nthis.toggleElementInspector);},\n\n\n\nrender:function(){\nvar shouldRenderWarningBox=__DEV__ && console.yellowBoxEnabled;\nvar warningBox=shouldRenderWarningBox?React.createElement(WarningBox,null):null;\nreturn (\nReact.createElement(View,{style:styles.appContainer},\nReact.createElement(View,{collapsible:false,style:styles.appContainer,ref:'main'},\nthis.props.children),\n\nwarningBox,\nthis.state.inspector));}});\n\n\n\n\n\nfunction renderApplication(\nRootComponent,\ninitialProps,\nrootTag)\n{\ninvariant(\nrootTag,\n'Expect to have a valid rootTag, instead got ',rootTag);\n\nReact.render(\nReact.createElement(AppContainer,{rootTag:rootTag},\nReact.createElement(RootComponent,_extends({},\ninitialProps,{\nrootTag:rootTag}))),\n\n\nrootTag);}\n\n\n\nvar styles=StyleSheet.create({\nappContainer:{\nposition:'absolute',\nleft:0,\ntop:0,\nright:0,\nbottom:0}});\n\n\n\nmodule.exports = renderApplication;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule renderApplication\n */\n'use strict';\n\nvar Inspector = require('Inspector');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Subscribable = require('Subscribable');\nvar View = require('View');\nvar WarningBox = require('WarningBox');\n\nvar invariant = require('invariant');\n\nvar AppContainer = React.createClass({\n mixins: [Subscribable.Mixin],\n\n getInitialState: function() {\n return { inspector: null };\n },\n\n toggleElementInspector: function() {\n var inspector = this.state.inspector\n ? null\n : <Inspector\n rootTag={this.props.rootTag}\n inspectedViewTag={React.findNodeHandle(this.refs.main)}\n />;\n this.setState({inspector});\n },\n\n componentDidMount: function() {\n this.addListenerOn(\n RCTDeviceEventEmitter,\n 'toggleElementInspector',\n this.toggleElementInspector\n );\n },\n\n render: function() {\n var shouldRenderWarningBox = __DEV__ && console.yellowBoxEnabled;\n var warningBox = shouldRenderWarningBox ? <WarningBox /> : null;\n return (\n <View style={styles.appContainer}>\n <View collapsible={false} style={styles.appContainer} ref=\"main\">\n {this.props.children}\n </View>\n {warningBox}\n {this.state.inspector}\n </View>\n );\n }\n});\n\nfunction renderApplication<D, P, S>(\n RootComponent: ReactClass<D, P, S>,\n initialProps: P,\n rootTag: any\n) {\n invariant(\n rootTag,\n 'Expect to have a valid rootTag, instead got ', rootTag\n );\n React.render(\n <AppContainer rootTag={rootTag}>\n <RootComponent\n {...initialProps}\n rootTag={rootTag}\n />\n </AppContainer>,\n rootTag\n );\n}\n\nvar styles = StyleSheet.create({\n appContainer: {\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n});\n\nmodule.exports = renderApplication;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/renderApplication.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/Inspector.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\nvar InspectorOverlay=require('InspectorOverlay');\nvar InspectorPanel=require('InspectorPanel');\nvar InspectorUtils=require('InspectorUtils');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar UIManager=require('NativeModules').UIManager;\nvar View=require('View');var \n\nInspector=(function(_React$Component){_inherits(Inspector,_React$Component);\nfunction Inspector(props){_classCallCheck(this,Inspector);\n_get(Object.getPrototypeOf(Inspector.prototype),'constructor',this).call(this,props);\nthis.state = {\npanelPos:'bottom',\ninspecting:true,\nperfing:false,\ninspected:null};}_createClass(Inspector,[{key:'setSelection',value:\n\n\n\nfunction setSelection(i){var _this=this;\nvar instance=this.state.hierarchy[i];\nvar publicInstance=instance.getPublicInstance();\nUIManager.measure(React.findNodeHandle(instance),function(x,y,width,height,left,top){\n_this.setState({\ninspected:{\nframe:{left:left,top:top,width:width,height:height},\nstyle:publicInstance.props?publicInstance.props.style:{}},\n\nselection:i});});}},{key:'onTouchInstance',value:\n\n\n\n\nfunction onTouchInstance(instance,frame,pointerY){\nvar hierarchy=InspectorUtils.getOwnerHierarchy(instance);\nvar publicInstance=instance.getPublicInstance();\nvar props=publicInstance.props || {};\nthis.setState({\npanelPos:pointerY > Dimensions.get('window').height / 2?'top':'bottom',\nselection:hierarchy.length - 1,\nhierarchy:hierarchy,\ninspected:{\nstyle:props.style || {},\nframe:frame}});}},{key:'setPerfing',value:\n\n\n\n\nfunction setPerfing(val){\nthis.setState({\nperfing:val,\ninspecting:false,\ninspected:null});}},{key:'setInspecting',value:\n\n\n\nfunction setInspecting(val){\nthis.setState({\ninspecting:val,\ninspected:null});}},{key:'render',value:\n\n\n\nfunction render(){\nvar panelContainerStyle=this.state.panelPos === 'bottom'?{bottom:0}:{top:0};\nreturn (\nReact.createElement(View,{style:styles.container,pointerEvents:'box-none'},\nthis.state.inspecting && \nReact.createElement(InspectorOverlay,{\nrootTag:this.props.rootTag,\ninspected:this.state.inspected,\ninspectedViewTag:this.props.inspectedViewTag,\nonTouchInstance:this.onTouchInstance.bind(this)}),\n\nReact.createElement(View,{style:[styles.panelContainer,panelContainerStyle]},\nReact.createElement(InspectorPanel,{\ninspecting:this.state.inspecting,\nperfing:this.state.perfing,\nsetPerfing:this.setPerfing.bind(this),\nsetInspecting:this.setInspecting.bind(this),\ninspected:this.state.inspected,\nhierarchy:this.state.hierarchy,\nselection:this.state.selection,\nsetSelection:this.setSelection.bind(this)}))));}}]);return Inspector;})(React.Component);\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nposition:'absolute',\nbackgroundColor:'transparent',\ntop:0,\nleft:0,\nright:0,\nbottom:0},\n\npanelContainer:{\nposition:'absolute',\nleft:0,\nright:0}});\n\n\n\nmodule.exports = Inspector;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Inspector\n * @flow\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar InspectorOverlay = require('InspectorOverlay');\nvar InspectorPanel = require('InspectorPanel');\nvar InspectorUtils = require('InspectorUtils');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar UIManager = require('NativeModules').UIManager;\nvar View = require('View');\n\nclass Inspector extends React.Component {\n constructor(props: Object) {\n super(props);\n this.state = {\n panelPos: 'bottom',\n inspecting: true,\n perfing: false,\n inspected: null,\n };\n }\n\n setSelection(i: number) {\n var instance = this.state.hierarchy[i];\n var publicInstance = instance.getPublicInstance();\n UIManager.measure(React.findNodeHandle(instance), (x, y, width, height, left, top) => {\n this.setState({\n inspected: {\n frame: {left, top, width, height},\n style: publicInstance.props ? publicInstance.props.style : {},\n },\n selection: i,\n });\n });\n }\n\n onTouchInstance(instance: Object, frame: Object, pointerY: number) {\n var hierarchy = InspectorUtils.getOwnerHierarchy(instance);\n var publicInstance = instance.getPublicInstance();\n var props = publicInstance.props || {};\n this.setState({\n panelPos: pointerY > Dimensions.get('window').height / 2 ? 'top' : 'bottom',\n selection: hierarchy.length - 1,\n hierarchy,\n inspected: {\n style: props.style || {},\n frame,\n },\n });\n }\n\n setPerfing(val: bool) {\n this.setState({\n perfing: val,\n inspecting: false,\n inspected: null,\n });\n }\n\n setInspecting(val: bool) {\n this.setState({\n inspecting: val,\n inspected: null\n });\n }\n\n render() {\n var panelContainerStyle = (this.state.panelPos === 'bottom') ? {bottom: 0} : {top: 0};\n return (\n <View style={styles.container} pointerEvents=\"box-none\">\n {this.state.inspecting &&\n <InspectorOverlay\n rootTag={this.props.rootTag}\n inspected={this.state.inspected}\n inspectedViewTag={this.props.inspectedViewTag}\n onTouchInstance={this.onTouchInstance.bind(this)}\n />}\n <View style={[styles.panelContainer, panelContainerStyle]}>\n <InspectorPanel\n inspecting={this.state.inspecting}\n perfing={this.state.perfing}\n setPerfing={this.setPerfing.bind(this)}\n setInspecting={this.setInspecting.bind(this)}\n inspected={this.state.inspected}\n hierarchy={this.state.hierarchy}\n selection={this.state.selection}\n setSelection={this.setSelection.bind(this)}\n />\n </View>\n </View>\n );\n }\n}\n\nvar styles = StyleSheet.create({\n container: {\n position: 'absolute',\n backgroundColor: 'transparent',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n panelContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n },\n});\n\nmodule.exports = Inspector;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/Inspector.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorOverlay.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\nvar InspectorUtils=require('InspectorUtils');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar UIManager=require('NativeModules').UIManager;\nvar View=require('View');\nvar ElementBox=require('ElementBox');\n\nvar PropTypes=React.PropTypes;\n\n\n\n\n\nvar InspectorOverlay=React.createClass({displayName:'InspectorOverlay',\npropTypes:{\ninspectedViewTag:PropTypes.object,\nonTouchInstance:PropTypes.func.isRequired},\n\n\nfindViewForTouchEvent:function(e){var _this=this;var _e$nativeEvent$touches$0=\ne.nativeEvent.touches[0];var locationX=_e$nativeEvent$touches$0.locationX;var locationY=_e$nativeEvent$touches$0.locationY;\nUIManager.findSubviewIn(\nthis.props.inspectedViewTag,\n[locationX,locationY],\nfunction(nativeViewTag,left,top,width,height){\nvar instance=InspectorUtils.findInstanceByNativeTag(_this.props.rootTag,nativeViewTag);\nif(!instance){\nreturn;}\n\n_this.props.onTouchInstance(instance,{left:left,top:top,width:width,height:height},locationY);});},\n\n\n\n\nshouldSetResponser:function(e){\nthis.findViewForTouchEvent(e);\nreturn true;},\n\n\nrender:function(){\nvar content=null;\nif(this.props.inspected){\ncontent = React.createElement(ElementBox,{frame:this.props.inspected.frame,style:this.props.inspected.style});}\n\n\nreturn (\nReact.createElement(View,{\nonStartShouldSetResponder:this.shouldSetResponser,\nonResponderMove:this.findViewForTouchEvent,\nstyle:[styles.inspector,{height:Dimensions.get('window').height}]},\ncontent));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ninspector:{\nbackgroundColor:'transparent',\nposition:'absolute',\nleft:0,\ntop:0,\nright:0}});\n\n\n\nmodule.exports = InspectorOverlay;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InspectorOverlay\n * @flow\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar InspectorUtils = require('InspectorUtils');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar UIManager = require('NativeModules').UIManager;\nvar View = require('View');\nvar ElementBox = require('ElementBox');\n\nvar PropTypes = React.PropTypes;\n\ntype EventLike = {\n nativeEvent: Object;\n};\n\nvar InspectorOverlay = React.createClass({\n propTypes: {\n inspectedViewTag: PropTypes.object,\n onTouchInstance: PropTypes.func.isRequired,\n },\n\n findViewForTouchEvent: function(e: EventLike) {\n var {locationX, locationY} = e.nativeEvent.touches[0];\n UIManager.findSubviewIn(\n this.props.inspectedViewTag,\n [locationX, locationY],\n (nativeViewTag, left, top, width, height) => {\n var instance = InspectorUtils.findInstanceByNativeTag(this.props.rootTag, nativeViewTag);\n if (!instance) {\n return;\n }\n this.props.onTouchInstance(instance, {left, top, width, height}, locationY);\n }\n );\n },\n\n shouldSetResponser: function(e: EventLike): bool {\n this.findViewForTouchEvent(e);\n return true;\n },\n\n render: function() {\n var content = null;\n if (this.props.inspected) {\n content = <ElementBox frame={this.props.inspected.frame} style={this.props.inspected.style} />;\n }\n\n return (\n <View\n onStartShouldSetResponder={this.shouldSetResponser}\n onResponderMove={this.findViewForTouchEvent}\n style={[styles.inspector, {height: Dimensions.get('window').height}]}>\n {content}\n </View>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n inspector: {\n backgroundColor: 'transparent',\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n },\n});\n\nmodule.exports = InspectorOverlay;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorOverlay.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/ElementBox.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar View=require('View');\nvar StyleSheet=require('StyleSheet');\nvar BorderBox=require('BorderBox');\nvar resolveBoxStyle=require('resolveBoxStyle');\n\nvar flattenStyle=require('flattenStyle');var \n\nElementBox=(function(_React$Component){_inherits(ElementBox,_React$Component);function ElementBox(){_classCallCheck(this,ElementBox);_get(Object.getPrototypeOf(ElementBox.prototype),'constructor',this).apply(this,arguments);}_createClass(ElementBox,[{key:'render',value:\nfunction render(){\nvar style=flattenStyle(this.props.style) || {};\nvar margin=resolveBoxStyle('margin',style);\nvar padding=resolveBoxStyle('padding',style);\nvar frameStyle=this.props.frame;\nif(margin){\nframeStyle = {\ntop:frameStyle.top - margin.top,\nleft:frameStyle.left - margin.left,\nheight:frameStyle.height + margin.top + margin.bottom,\nwidth:frameStyle.width + margin.left + margin.right};}\n\n\nvar contentStyle={\nwidth:this.props.frame.width,\nheight:this.props.frame.height};\n\nif(padding){\ncontentStyle = {\nwidth:contentStyle.width - padding.left - padding.right,\nheight:contentStyle.height - padding.top - padding.bottom};}\n\n\nreturn (\nReact.createElement(View,{style:[styles.frame,frameStyle],pointerEvents:'none'},\nReact.createElement(BorderBox,{box:margin,style:styles.margin},\nReact.createElement(BorderBox,{box:padding,style:styles.padding},\nReact.createElement(View,{style:[styles.content,contentStyle]})))));}}]);return ElementBox;})(React.Component);\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nframe:{\nposition:'absolute'},\n\ncontent:{\nbackgroundColor:'rgba(200, 230, 255, 0.8)'},\n\npadding:{\nborderColor:'rgba(77, 255, 0, 0.3)'},\n\nmargin:{\nborderColor:'rgba(255, 132, 0, 0.3)'}});\n\n\n\nmodule.exports = ElementBox;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ElementBox\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar View = require('View');\nvar StyleSheet = require('StyleSheet');\nvar BorderBox = require('BorderBox');\nvar resolveBoxStyle = require('resolveBoxStyle');\n\nvar flattenStyle = require('flattenStyle');\n\nclass ElementBox extends React.Component {\n render() {\n var style = flattenStyle(this.props.style) || {};\n var margin = resolveBoxStyle('margin', style);\n var padding = resolveBoxStyle('padding', style);\n var frameStyle = this.props.frame;\n if (margin) {\n frameStyle = {\n top: frameStyle.top - margin.top,\n left: frameStyle.left - margin.left,\n height: frameStyle.height + margin.top + margin.bottom,\n width: frameStyle.width + margin.left + margin.right,\n };\n }\n var contentStyle = {\n width: this.props.frame.width,\n height: this.props.frame.height,\n };\n if (padding) {\n contentStyle = {\n width: contentStyle.width - padding.left - padding.right,\n height: contentStyle.height - padding.top - padding.bottom,\n };\n }\n return (\n <View style={[styles.frame, frameStyle]} pointerEvents=\"none\">\n <BorderBox box={margin} style={styles.margin}>\n <BorderBox box={padding} style={styles.padding}>\n <View style={[styles.content, contentStyle]} />\n </BorderBox>\n </BorderBox>\n </View>\n );\n }\n}\n\nvar styles = StyleSheet.create({\n frame: {\n position: 'absolute',\n },\n content: {\n backgroundColor: 'rgba(200, 230, 255, 0.8)',\n },\n padding: {\n borderColor: 'rgba(77, 255, 0, 0.3)',\n },\n margin: {\n borderColor: 'rgba(255, 132, 0, 0.3)',\n },\n});\n\nmodule.exports = ElementBox;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/ElementBox.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/BorderBox.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar View=require('View');var \n\nBorderBox=(function(_React$Component){_inherits(BorderBox,_React$Component);function BorderBox(){_classCallCheck(this,BorderBox);_get(Object.getPrototypeOf(BorderBox.prototype),'constructor',this).apply(this,arguments);}_createClass(BorderBox,[{key:'render',value:\nfunction render(){\nvar box=this.props.box;\nif(!box){\nreturn this.props.children;}\n\nvar style={\nborderTopWidth:box.top,\nborderBottomWidth:box.bottom,\nborderLeftWidth:box.left,\nborderRightWidth:box.right};\n\nreturn (\nReact.createElement(View,{style:[style,this.props.style]},\nthis.props.children));}}]);return BorderBox;})(React.Component);\n\n\n\n\n\nmodule.exports = BorderBox;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BorderBox\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar View = require('View');\n\nclass BorderBox extends React.Component {\n render() {\n var box = this.props.box;\n if (!box) {\n return this.props.children;\n }\n var style = {\n borderTopWidth: box.top,\n borderBottomWidth: box.bottom,\n borderLeftWidth: box.left,\n borderRightWidth: box.right,\n };\n return (\n <View style={[style, this.props.style]}>\n {this.props.children}\n </View>\n );\n }\n}\n\nmodule.exports = BorderBox;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/BorderBox.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/resolveBoxStyle.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction resolveBoxStyle(prefix,style){\nvar res={};\nvar subs=['top','left','bottom','right'];\nvar set=false;\nsubs.forEach(function(sub){\nres[sub] = style[prefix] || 0;});\n\nif(style[prefix]){\nset = true;}\n\nif(style[prefix + 'Vertical']){\nres.top = res.bottom = style[prefix + 'Vertical'];\nset = true;}\n\nif(style[prefix + 'Horizontal']){\nres.left = res.right = style[prefix + 'Horizontal'];\nset = true;}\n\nsubs.forEach(function(sub){\nvar val=style[prefix + capFirst(sub)];\nif(val){\nres[sub] = val;\nset = true;}});\n\n\nif(!set){\nreturn;}\n\nreturn res;}\n\n\nfunction capFirst(text){\nreturn text[0].toUpperCase() + text.slice(1);}\n\n\nmodule.exports = resolveBoxStyle;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule resolveBoxStyle\n * @flow\n */\n'use strict';\n\n/**\n * Resolve a style property into it's component parts, e.g.\n *\n * resolveProperties('margin', {margin: 5, marginBottom: 10})\n * ->\n * {top: 5, left: 5, right: 5, bottom: 10}\n *\n * If none are set, returns false.\n */\nfunction resolveBoxStyle(prefix: string, style: Object): ?Object {\n var res = {};\n var subs = ['top', 'left', 'bottom', 'right'];\n var set = false;\n subs.forEach(sub => {\n res[sub] = style[prefix] || 0;\n });\n if (style[prefix]) {\n set = true;\n }\n if (style[prefix + 'Vertical']) {\n res.top = res.bottom = style[prefix + 'Vertical'];\n set = true;\n }\n if (style[prefix + 'Horizontal']) {\n res.left = res.right = style[prefix + 'Horizontal'];\n set = true;\n }\n subs.forEach(sub => {\n var val = style[prefix + capFirst(sub)];\n if (val) {\n res[sub] = val;\n set = true;\n }\n });\n if (!set) {\n return;\n }\n return res;\n}\n\nfunction capFirst(text) {\n return text[0].toUpperCase() + text.slice(1);\n}\n\nmodule.exports = resolveBoxStyle;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/resolveBoxStyle.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorPanel.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');\nvar ElementProperties=require('ElementProperties');\nvar PerformanceOverlay=require('PerformanceOverlay');\nvar TouchableHighlight=require('TouchableHighlight');\n\nvar PropTypes=React.PropTypes;var \n\nInspectorPanel=(function(_React$Component){_inherits(InspectorPanel,_React$Component);function InspectorPanel(){_classCallCheck(this,InspectorPanel);_get(Object.getPrototypeOf(InspectorPanel.prototype),'constructor',this).apply(this,arguments);}_createClass(InspectorPanel,[{key:'renderWaiting',value:\nfunction renderWaiting(){\nif(this.props.inspecting){\nreturn (\nReact.createElement(Text,{style:styles.waitingText},'Tap something to inspect it'));}\n\n\n\n\nreturn React.createElement(Text,{style:styles.waitingText},'Nothing is inspected');}},{key:'render',value:\n\n\nfunction render(){\nvar contents;\nif(this.props.inspected){\ncontents = \nReact.createElement(ElementProperties,{\nstyle:this.props.inspected.style,\nframe:this.props.inspected.frame,\nhierarchy:this.props.hierarchy,\nselection:this.props.selection,\nsetSelection:this.props.setSelection});}else \n\n\nif(this.props.perfing){\ncontents = \nReact.createElement(PerformanceOverlay,null);}else \n\n{\ncontents = \nReact.createElement(View,{style:styles.waiting},\nthis.renderWaiting());}\n\n\n\nreturn (\nReact.createElement(View,{style:styles.container},\ncontents,\nReact.createElement(View,{style:styles.buttonRow},\nReact.createElement(Button,{\ntitle:'Inspect',\npressed:this.props.inspecting,\nonClick:this.props.setInspecting}),\n\nReact.createElement(Button,{title:'Perf',\npressed:this.props.perfing,\nonClick:this.props.setPerfing}))));}}]);return InspectorPanel;})(React.Component);\n\n\n\n\n\n\n\nInspectorPanel.propTypes = {\ninspecting:PropTypes.bool,\nsetInspecting:PropTypes.func,\ninspected:PropTypes.object,\nperfing:PropTypes.bool,\nsetPerfing:PropTypes.func};var \n\n\nButton=(function(_React$Component2){_inherits(Button,_React$Component2);function Button(){_classCallCheck(this,Button);_get(Object.getPrototypeOf(Button.prototype),'constructor',this).apply(this,arguments);}_createClass(Button,[{key:'render',value:\nfunction render(){var _this=this;\nreturn (\nReact.createElement(TouchableHighlight,{onPress:function(){return _this.props.onClick(!_this.props.pressed);},style:[\nstyles.button,\nthis.props.pressed && styles.buttonPressed]},\n\nReact.createElement(Text,{style:styles.buttonText},this.props.title)));}}]);return Button;})(React.Component);\n\n\n\n\n\nvar styles=StyleSheet.create({\nbuttonRow:{\nflexDirection:'row'},\n\nbutton:{\nbackgroundColor:'rgba(0, 0, 0, 0.3)',\nmargin:2,\nheight:30,\njustifyContent:'center',\nalignItems:'center'},\n\nbuttonPressed:{\nbackgroundColor:'rgba(255, 255, 255, 0.3)'},\n\nbuttonText:{\ntextAlign:'center',\ncolor:'white',\nmargin:5},\n\ncontainer:{\nbackgroundColor:'rgba(0, 0, 0, 0.7)'},\n\nwaiting:{\nheight:100},\n\nwaitingText:{\nfontSize:20,\ntextAlign:'center',\nmarginVertical:20}});\n\n\n\nmodule.exports = InspectorPanel;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InspectorPanel\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\nvar ElementProperties = require('ElementProperties');\nvar PerformanceOverlay = require('PerformanceOverlay');\nvar TouchableHighlight = require('TouchableHighlight');\n\nvar PropTypes = React.PropTypes;\n\nclass InspectorPanel extends React.Component {\n renderWaiting() {\n if (this.props.inspecting) {\n return (\n <Text style={styles.waitingText}>\n Tap something to inspect it\n </Text>\n );\n }\n return <Text style={styles.waitingText}>Nothing is inspected</Text>;\n }\n\n render() {\n var contents;\n if (this.props.inspected) {\n contents = (\n <ElementProperties\n style={this.props.inspected.style}\n frame={this.props.inspected.frame}\n hierarchy={this.props.hierarchy}\n selection={this.props.selection}\n setSelection={this.props.setSelection}\n />\n );\n } else if (this.props.perfing) {\n contents = (\n <PerformanceOverlay />\n );\n } else {\n contents = (\n <View style={styles.waiting}>\n {this.renderWaiting()}\n </View>\n );\n }\n return (\n <View style={styles.container}>\n {contents}\n <View style={styles.buttonRow}>\n <Button\n title={'Inspect'}\n pressed={this.props.inspecting}\n onClick={this.props.setInspecting}\n />\n <Button title={'Perf'}\n pressed={this.props.perfing}\n onClick={this.props.setPerfing}\n />\n </View>\n </View>\n );\n }\n}\n\nInspectorPanel.propTypes = {\n inspecting: PropTypes.bool,\n setInspecting: PropTypes.func,\n inspected: PropTypes.object,\n perfing: PropTypes.bool,\n setPerfing: PropTypes.func,\n};\n\nclass Button extends React.Component {\n render() {\n return (\n <TouchableHighlight onPress={() => this.props.onClick(!this.props.pressed)} style={[\n styles.button,\n this.props.pressed && styles.buttonPressed\n ]}>\n <Text style={styles.buttonText}>{this.props.title}</Text>\n </TouchableHighlight>\n );\n }\n}\n\nvar styles = StyleSheet.create({\n buttonRow: {\n flexDirection: 'row',\n },\n button: {\n backgroundColor: 'rgba(0, 0, 0, 0.3)',\n margin: 2,\n height: 30,\n justifyContent: 'center',\n alignItems: 'center',\n },\n buttonPressed: {\n backgroundColor: 'rgba(255, 255, 255, 0.3)',\n },\n buttonText: {\n textAlign: 'center',\n color: 'white',\n margin: 5,\n },\n container: {\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n },\n waiting: {\n height: 100,\n },\n waitingText: {\n fontSize: 20,\n textAlign: 'center',\n marginVertical: 20,\n },\n});\n\nmodule.exports = InspectorPanel;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorPanel.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/ElementProperties.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar BoxInspector=require('BoxInspector');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleInspector=require('StyleInspector');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar TouchableHighlight=require('TouchableHighlight');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\nvar View=require('View');\n\nvar flattenStyle=require('flattenStyle');\nvar mapWithSeparator=require('mapWithSeparator');\n\nvar ElementProperties=React.createClass({displayName:'ElementProperties',\npropTypes:{\nhierarchy:PropTypes.array.isRequired,\nstyle:PropTypes.array.isRequired},\n\n\nrender:function(){var _this=this;\nvar style=flattenStyle(this.props.style);\nvar selection=this.props.selection;\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,null,\nReact.createElement(View,{style:styles.info},\nReact.createElement(View,{style:styles.breadcrumb},\nmapWithSeparator(\nthis.props.hierarchy,\nfunction(item,i){return (\nReact.createElement(TouchableHighlight,{\nstyle:[styles.breadItem,i === selection && styles.selected],\nonPress:function(){return _this.props.setSelection(i);}},\nReact.createElement(Text,{style:styles.breadItemText},\nitem.getName?item.getName():'Unknown')));},\n\n\n\nfunction(){return React.createElement(Text,{style:styles.breadSep},'▸');})),\n\n\nReact.createElement(View,{style:styles.row},\nReact.createElement(StyleInspector,{style:style}),\nReact.createElement(BoxInspector,{style:style,frame:this.props.frame})))));}});\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nbreadSep:{\nfontSize:8,\ncolor:'white'},\n\nbreadcrumb:{\nflexDirection:'row',\nflexWrap:'wrap',\nmarginBottom:5},\n\nselected:{\nborderColor:'white',\nborderRadius:5},\n\nbreadItem:{\nborderWidth:1,\nborderColor:'transparent',\nmarginHorizontal:2},\n\nbreadItemText:{\nfontSize:10,\ncolor:'white',\nmarginHorizontal:5},\n\nrow:{\nflexDirection:'row',\nalignItems:'center',\njustifyContent:'space-between'},\n\ninfo:{\npadding:10},\n\npath:{\ncolor:'white',\nfontSize:9}});\n\n\n\nmodule.exports = ElementProperties;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ElementProperties\n * @flow\n */\n'use strict';\n\nvar BoxInspector = require('BoxInspector');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleInspector = require('StyleInspector');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar TouchableHighlight = require('TouchableHighlight');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\nvar View = require('View');\n\nvar flattenStyle = require('flattenStyle');\nvar mapWithSeparator = require('mapWithSeparator');\n\nvar ElementProperties = React.createClass({\n propTypes: {\n hierarchy: PropTypes.array.isRequired,\n style: PropTypes.array.isRequired,\n },\n\n render: function() {\n var style = flattenStyle(this.props.style);\n var selection = this.props.selection;\n // Without the `TouchableWithoutFeedback`, taps on this inspector pane\n // would change the inspected element to whatever is under the inspector\n return (\n <TouchableWithoutFeedback>\n <View style={styles.info}>\n <View style={styles.breadcrumb}>\n {mapWithSeparator(\n this.props.hierarchy,\n (item, i) => (\n <TouchableHighlight\n style={[styles.breadItem, i === selection && styles.selected]}\n onPress={() => this.props.setSelection(i)}>\n <Text style={styles.breadItemText}>\n {item.getName ? item.getName() : 'Unknown'}\n </Text>\n </TouchableHighlight>\n ),\n () => <Text style={styles.breadSep}>&#9656;</Text>\n )}\n </View>\n <View style={styles.row}>\n <StyleInspector style={style} />\n <BoxInspector style={style} frame={this.props.frame} />\n </View>\n </View>\n </TouchableWithoutFeedback>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n breadSep: {\n fontSize: 8,\n color: 'white',\n },\n breadcrumb: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n marginBottom: 5,\n },\n selected: {\n borderColor: 'white',\n borderRadius: 5,\n },\n breadItem: {\n borderWidth: 1,\n borderColor: 'transparent',\n marginHorizontal: 2,\n },\n breadItemText: {\n fontSize: 10,\n color: 'white',\n marginHorizontal: 5,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n info: {\n padding: 10,\n },\n path: {\n color: 'white',\n fontSize: 9,\n },\n});\n\nmodule.exports = ElementProperties;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/ElementProperties.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/BoxInspector.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');\nvar resolveBoxStyle=require('resolveBoxStyle');\n\nvar blank={\ntop:0,\nleft:0,\nright:0,\nbottom:0};var \n\n\nBoxInspector=(function(_React$Component){_inherits(BoxInspector,_React$Component);function BoxInspector(){_classCallCheck(this,BoxInspector);_get(Object.getPrototypeOf(BoxInspector.prototype),'constructor',this).apply(this,arguments);}_createClass(BoxInspector,[{key:'render',value:\nfunction render(){\nvar frame=this.props.frame;\nvar style=this.props.style;\nvar margin=style && resolveBoxStyle('margin',style) || blank;\nvar padding=style && resolveBoxStyle('padding',style) || blank;\nreturn (\nReact.createElement(BoxContainer,{title:'margin',titleStyle:styles.marginLabel,box:margin},\nReact.createElement(BoxContainer,{title:'padding',box:padding},\nReact.createElement(View,null,\nReact.createElement(Text,{style:styles.innerText},'(',\nframe.left,', ',frame.top,')'),\n\nReact.createElement(Text,{style:styles.innerText},\nframe.width,' × ',frame.height)))));}}]);return BoxInspector;})(React.Component);var \n\n\n\n\n\n\n\n\nBoxContainer=(function(_React$Component2){_inherits(BoxContainer,_React$Component2);function BoxContainer(){_classCallCheck(this,BoxContainer);_get(Object.getPrototypeOf(BoxContainer.prototype),'constructor',this).apply(this,arguments);}_createClass(BoxContainer,[{key:'render',value:\nfunction render(){\nvar box=this.props.box;\nreturn (\nReact.createElement(View,{style:styles.box},\nReact.createElement(View,{style:styles.row},\nReact.createElement(Text,{style:[this.props.titleStyle,styles.label]},this.props.title),\nReact.createElement(Text,{style:styles.boxText},box.top)),\n\nReact.createElement(View,{style:styles.row},\nReact.createElement(Text,{style:styles.boxText},box.left),\nthis.props.children,\nReact.createElement(Text,{style:styles.boxText},box.right)),\n\nReact.createElement(Text,{style:styles.boxText},box.bottom)));}}]);return BoxContainer;})(React.Component);\n\n\n\n\n\nvar styles=StyleSheet.create({\nrow:{\nflexDirection:'row',\nalignItems:'center',\njustifyContent:'space-around'},\n\nmarginLabel:{\nwidth:60},\n\nlabel:{\nfontSize:10,\ncolor:'rgb(255,100,0)',\nmarginLeft:5,\nflex:1,\ntextAlign:'left',\ntop:-3},\n\nbuffer:{\nfontSize:10,\ncolor:'yellow',\nflex:1,\ntextAlign:'center'},\n\ninnerText:{\ncolor:'yellow',\nfontSize:12,\ntextAlign:'center',\nwidth:70},\n\nbox:{\nborderWidth:1,\nborderColor:'grey'},\n\nboxText:{\ncolor:'white',\nfontSize:12,\nmarginHorizontal:3,\nmarginVertical:2,\ntextAlign:'center'}});\n\n\n\nmodule.exports = BoxInspector;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BoxInspector\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\nvar resolveBoxStyle = require('resolveBoxStyle');\n\nvar blank = {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n};\n\nclass BoxInspector extends React.Component {\n render() {\n var frame = this.props.frame;\n var style = this.props.style;\n var margin = style && resolveBoxStyle('margin', style) || blank;\n var padding = style && resolveBoxStyle('padding', style) || blank;\n return (\n <BoxContainer title=\"margin\" titleStyle={styles.marginLabel} box={margin}>\n <BoxContainer title=\"padding\" box={padding}>\n <View>\n <Text style={styles.innerText}>\n ({frame.left}, {frame.top})\n </Text>\n <Text style={styles.innerText}>\n {frame.width} &times; {frame.height}\n </Text>\n </View>\n </BoxContainer>\n </BoxContainer>\n );\n }\n}\n\nclass BoxContainer extends React.Component {\n render() {\n var box = this.props.box;\n return (\n <View style={styles.box}>\n <View style={styles.row}>\n <Text style={[this.props.titleStyle, styles.label]}>{this.props.title}</Text>\n <Text style={styles.boxText}>{box.top}</Text>\n </View>\n <View style={styles.row}>\n <Text style={styles.boxText}>{box.left}</Text>\n {this.props.children}\n <Text style={styles.boxText}>{box.right}</Text>\n </View>\n <Text style={styles.boxText}>{box.bottom}</Text>\n </View>\n );\n }\n}\n\nvar styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-around',\n },\n marginLabel: {\n width: 60,\n },\n label: {\n fontSize: 10,\n color: 'rgb(255,100,0)',\n marginLeft: 5,\n flex: 1,\n textAlign: 'left',\n top: -3,\n },\n buffer: {\n fontSize: 10,\n color: 'yellow',\n flex: 1,\n textAlign: 'center',\n },\n innerText: {\n color: 'yellow',\n fontSize: 12,\n textAlign: 'center',\n width: 70,\n },\n box: {\n borderWidth: 1,\n borderColor: 'grey',\n },\n boxText: {\n color: 'white',\n fontSize: 12,\n marginHorizontal: 3,\n marginVertical: 2,\n textAlign: 'center',\n },\n});\n\nmodule.exports = BoxInspector;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/BoxInspector.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/StyleInspector.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');var \n\nStyleInspector=(function(_React$Component){_inherits(StyleInspector,_React$Component);function StyleInspector(){_classCallCheck(this,StyleInspector);_get(Object.getPrototypeOf(StyleInspector.prototype),'constructor',this).apply(this,arguments);}_createClass(StyleInspector,[{key:'render',value:\nfunction render(){var _this=this;\nif(!this.props.style){\nreturn React.createElement(Text,{style:styles.noStyle},'No style');}\n\nvar names=Object.keys(this.props.style);\nreturn (\nReact.createElement(View,{style:styles.container},\nReact.createElement(View,null,\nnames.map(function(name){return React.createElement(Text,{style:styles.attr},name,':');})),\n\nReact.createElement(View,null,\nnames.map(function(name){return React.createElement(Text,{style:styles.value},_this.props.style[name]);}))));}}]);return StyleInspector;})(React.Component);\n\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nflexDirection:'row'},\n\nrow:{\nflexDirection:'row',\nalignItems:'center',\njustifyContent:'space-around'},\n\nattr:{\nfontSize:10,\ncolor:'#ccc'},\n\nvalue:{\nfontSize:10,\ncolor:'white',\nmarginLeft:10},\n\nnoStyle:{\ncolor:'white',\nfontSize:10}});\n\n\n\nmodule.exports = StyleInspector;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StyleInspector\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\n\nclass StyleInspector extends React.Component {\n render() {\n if (!this.props.style) {\n return <Text style={styles.noStyle}>No style</Text>;\n }\n var names = Object.keys(this.props.style);\n return (\n <View style={styles.container}>\n <View>\n {names.map(name => <Text style={styles.attr}>{name}:</Text>)}\n </View>\n <View>\n {names.map(name => <Text style={styles.value}>{this.props.style[name]}</Text>)}\n </View>\n </View>\n );\n }\n}\n\nvar styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-around',\n },\n attr: {\n fontSize: 10,\n color: '#ccc',\n },\n value: {\n fontSize: 10,\n color: 'white',\n marginLeft: 10,\n },\n noStyle: {\n color: 'white',\n fontSize: 10,\n },\n});\n\nmodule.exports = StyleInspector;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/StyleInspector.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/mapWithSeparator.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\nfunction mapWithSeparator(array,valueFunction,separatorFunction){\nvar results=[];\nfor(var i=0;i < array.length;i++) {\nresults.push(valueFunction(array[i],i,array));\nif(i !== array.length - 1){\nresults.push(separatorFunction(i));}}\n\n\nreturn results;}\n\n\nmodule.exports = mapWithSeparator;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule mapWithSeparator\n */\n'use strict';\n\nfunction mapWithSeparator(array, valueFunction, separatorFunction) {\n var results = [];\n for (var i = 0; i < array.length; i++) {\n results.push(valueFunction(array[i], i, array));\n if (i !== array.length - 1) {\n results.push(separatorFunction(i));\n }\n }\n return results;\n}\n\nmodule.exports = mapWithSeparator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/mapWithSeparator.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/PerformanceOverlay.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PerformanceLogger=require('PerformanceLogger');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');\n\nvar PerformanceOverlay=React.createClass({displayName:'PerformanceOverlay',\nrender:function(){\nvar perfLogs=PerformanceLogger.getTimespans();\nvar items=[];\n\nfor(var key in perfLogs) {\nif(perfLogs[key].totalTime){\nitems.push(\nReact.createElement(View,{style:styles.row},\nReact.createElement(Text,{style:[styles.text,styles.label]},key),\nReact.createElement(Text,{style:[styles.text,styles.totalTime]},\nperfLogs[key].totalTime + 'ms')));}}\n\n\n\n\n\n\nreturn (\nReact.createElement(View,{style:styles.container},\nitems));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nheight:100,\npaddingTop:10},\n\nlabel:{\nflex:1},\n\nrow:{\nflexDirection:'row',\npaddingHorizontal:10},\n\ntext:{\ncolor:'white',\nfontSize:12},\n\ntotalTime:{\npaddingRight:100}});\n\n\n\nmodule.exports = PerformanceOverlay;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PerformanceOverlay\n * @flow\n */\n'use strict';\n\nvar PerformanceLogger = require('PerformanceLogger');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\n\nvar PerformanceOverlay = React.createClass({\n render: function() {\n var perfLogs = PerformanceLogger.getTimespans();\n var items = [];\n\n for (var key in perfLogs) {\n if (perfLogs[key].totalTime) {\n items.push(\n <View style={styles.row}>\n <Text style={[styles.text, styles.label]}>{key}</Text>\n <Text style={[styles.text, styles.totalTime]}>\n {perfLogs[key].totalTime + 'ms'}\n </Text>\n </View>\n );\n }\n }\n\n return (\n <View style={styles.container}>\n {items}\n </View>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n container: {\n height: 100,\n paddingTop: 10,\n },\n label: {\n flex: 1,\n },\n row: {\n flexDirection: 'row',\n paddingHorizontal: 10,\n },\n text: {\n color: 'white',\n fontSize: 12,\n },\n totalTime: {\n paddingRight: 100,\n },\n});\n\nmodule.exports = PerformanceOverlay;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/PerformanceOverlay.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/WarningBox.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\nvar AsyncStorage=require('AsyncStorage');\nvar EventEmitter=require('EventEmitter');\nvar Map=require('Map');\nvar PanResponder=require('PanResponder');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar TouchableOpacity=require('TouchableOpacity');\nvar View=require('View');\n\nvar invariant=require('invariant');\nvar rebound=require('rebound');\nvar stringifySafe=require('stringifySafe');\n\nvar SCREEN_WIDTH=require('Dimensions').get('window').width;\nvar IGNORED_WARNINGS_KEY='__DEV_WARNINGS_IGNORED';\n\nvar consoleWarn=console.warn.bind(console);\n\nvar warningCounts=new Map();\nvar ignoredWarnings=[];\nvar totalWarningCount=0;\nvar warningCountEvents=new EventEmitter();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nif(__DEV__){\nconsole.warn = function(){\nconsoleWarn.apply(null,arguments);\nif(!console.yellowBoxEnabled){\nreturn;}\n\nvar warning=Array.prototype.map.call(arguments,stringifySafe).join(' ');\nif(!console.yellowBoxResetIgnored && \nignoredWarnings.indexOf(warning) !== -1){\nreturn;}\n\nvar count=warningCounts.has(warning)?warningCounts.get(warning) + 1:1;\nwarningCounts.set(warning,count);\ntotalWarningCount += 1;\nwarningCountEvents.emit('count',totalWarningCount);};}\n\n\n\nfunction saveIgnoredWarnings(){\nAsyncStorage.setItem(\nIGNORED_WARNINGS_KEY,\nJSON.stringify(ignoredWarnings),\nfunction(err){\nif(err){\nconsole.warn('Could not save ignored warnings.',err);}});}\n\n\n\n\n\nAsyncStorage.getItem(IGNORED_WARNINGS_KEY,function(err,data){\nif(!err && data && !console.yellowBoxResetIgnored){\nignoredWarnings = JSON.parse(data);}});\n\n\n\nvar WarningRow=React.createClass({displayName:'WarningRow',\ncomponentWillMount:function(){var _this=this;\nthis.springSystem = new rebound.SpringSystem();\nthis.dismissalSpring = this.springSystem.createSpring();\nthis.dismissalSpring.setRestSpeedThreshold(0.05);\nthis.dismissalSpring.setCurrentValue(0);\nthis.dismissalSpring.addListener({\nonSpringUpdate:function(){\nvar val=_this.dismissalSpring.getCurrentValue();\n_this.text && _this.text.setNativeProps({\nleft:SCREEN_WIDTH * val});\n\n_this.container && _this.container.setNativeProps({\nopacity:1 - val});\n\n_this.closeButton && _this.closeButton.setNativeProps({\nopacity:1 - val * 5});},\n\n\nonSpringAtRest:function(){\nif(_this.dismissalSpring.getCurrentValue()){\n_this.collapseSpring.setEndValue(1);}}});\n\n\n\nthis.collapseSpring = this.springSystem.createSpring();\nthis.collapseSpring.setRestSpeedThreshold(0.05);\nthis.collapseSpring.setCurrentValue(0);\nthis.collapseSpring.getSpringConfig().friction = 20;\nthis.collapseSpring.getSpringConfig().tension = 200;\nthis.collapseSpring.addListener({\nonSpringUpdate:function(){\nvar val=_this.collapseSpring.getCurrentValue();\n_this.container && _this.container.setNativeProps({\nheight:Math.abs(46 - val * 46)});},\n\n\nonSpringAtRest:function(){\n_this.props.onDismissed();}});\n\n\nthis.panGesture = PanResponder.create({\nonStartShouldSetPanResponder:function(){\nreturn !!_this.dismissalSpring.getCurrentValue();},\n\nonMoveShouldSetPanResponder:function(){return true;},\nonPanResponderGrant:function(){\n_this.isResponderOnlyToBlockTouches = \n!!_this.dismissalSpring.getCurrentValue();},\n\nonPanResponderMove:function(e,gestureState){\nif(_this.isResponderOnlyToBlockTouches){\nreturn;}\n\n_this.dismissalSpring.setCurrentValue(gestureState.dx / SCREEN_WIDTH);},\n\nonPanResponderRelease:function(e,gestureState){\nif(_this.isResponderOnlyToBlockTouches){\nreturn;}\n\nvar gestureCompletion=gestureState.dx / SCREEN_WIDTH;\nvar doesGestureRelease=gestureState.vx + gestureCompletion > 0.5;\n_this.dismissalSpring.setEndValue(doesGestureRelease?1:0);}});},\n\n\n\nrender:function(){var _this2=this;\nvar countText;\nif(warningCounts.get(this.props.warning) > 1){\ncountText = \nReact.createElement(Text,{style:styles.bold},'(',\nwarningCounts.get(this.props.warning),')',\" \");}\n\n\n\nreturn (\nReact.createElement(View,_extends({\nstyle:styles.warningBox,\nref:function(container){_this2.container = container;}},\nthis.panGesture.panHandlers),\nReact.createElement(TouchableOpacity,{\nonPress:this.props.onOpened},\nReact.createElement(View,null,\nReact.createElement(Text,{\nstyle:styles.warningText,\nnumberOfLines:2,\nref:function(text){_this2.text = text;}},\ncountText,\nthis.props.warning))),\n\n\n\nReact.createElement(View,{\nref:function(closeButton){_this2.closeButton = closeButton;},\nstyle:styles.closeButton},\nReact.createElement(TouchableOpacity,{\nonPress:function(){\n_this2.dismissalSpring.setEndValue(1);}},\n\nReact.createElement(Text,{style:styles.closeButtonText},'✕')))));}});\n\n\n\n\n\n\n\nvar WarningBoxOpened=React.createClass({displayName:'WarningBoxOpened',\nrender:function(){\nvar countText;\nif(warningCounts.get(this.props.warning) > 1){\ncountText = \nReact.createElement(Text,{style:styles.bold},'(',\nwarningCounts.get(this.props.warning),')',\" \");}\n\n\n\nreturn (\nReact.createElement(TouchableOpacity,{\nactiveOpacity:0.9,\nonPress:this.props.onClose},\nReact.createElement(View,{style:styles.yellowBox},\nReact.createElement(Text,{style:styles.yellowBoxText},\ncountText,\nthis.props.warning),\n\nReact.createElement(View,{style:styles.yellowBoxButtons},\nReact.createElement(View,{style:styles.yellowBoxButton},\nReact.createElement(TouchableOpacity,{\nonPress:this.props.onDismissed},\nReact.createElement(Text,{style:styles.yellowBoxButtonText},'Dismiss'))),\n\n\n\n\nReact.createElement(View,{style:styles.yellowBoxButton},\nReact.createElement(TouchableOpacity,{\nonPress:this.props.onIgnored},\nReact.createElement(Text,{style:styles.yellowBoxButtonText},'Ignore')))))));}});\n\n\n\n\n\n\n\n\n\n\n\nvar canMountWarningBox=true;\n\nvar WarningBox=React.createClass({displayName:'WarningBox',\ngetInitialState:function(){\nreturn {\ntotalWarningCount:totalWarningCount,\nopenWarning:null};},\n\n\ncomponentWillMount:function(){\nif(console.yellowBoxResetIgnored){\nAsyncStorage.setItem(IGNORED_WARNINGS_KEY,'[]',function(err){\nif(err){\nconsole.warn('Could not reset ignored warnings.',err);}});\n\n\nignoredWarnings = [];}},\n\n\ncomponentDidMount:function(){\ninvariant(\ncanMountWarningBox,\n'There can only be one WarningBox');\n\ncanMountWarningBox = false;\nwarningCountEvents.addListener(\n'count',\nthis._onWarningCount);},\n\n\ncomponentWillUnmount:function(){\nwarningCountEvents.removeAllListeners();\ncanMountWarningBox = true;},\n\n_onWarningCount:function(totalWarningCount){var _this3=this;\n\n\nsetImmediate(function(){\n_this3.setState({totalWarningCount:totalWarningCount});});},\n\n\n_onDismiss:function(warning){\nwarningCounts.delete(warning);\nthis.setState({\nopenWarning:null});},\n\n\nrender:function(){var _this4=this;\nif(warningCounts.size === 0){\nreturn React.createElement(View,null);}\n\nif(this.state.openWarning){\nreturn (\nReact.createElement(WarningBoxOpened,{\nwarning:this.state.openWarning,\nonClose:function(){\n_this4.setState({openWarning:null});},\n\nonDismissed:this._onDismiss.bind(this,this.state.openWarning),\nonIgnored:function(){\nignoredWarnings.push(_this4.state.openWarning);\nsaveIgnoredWarnings();\n_this4._onDismiss(_this4.state.openWarning);}}));}\n\n\n\n\nvar warningRows=[];\nwarningCounts.forEach(function(count,warning){\nwarningRows.push(\nReact.createElement(WarningRow,{\nkey:warning,\nonOpened:function(){\n_this4.setState({openWarning:warning});},\n\nonDismissed:_this4._onDismiss.bind(_this4,warning),\nwarning:warning}));});\n\n\n\nreturn (\nReact.createElement(View,{style:styles.warningContainer},\nwarningRows));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nbold:{\nfontWeight:'bold'},\n\ncloseButton:{\nposition:'absolute',\nright:0,\nheight:46,\nwidth:46},\n\ncloseButtonText:{\ncolor:'white',\nfontSize:32,\nposition:'relative',\nleft:8},\n\nwarningContainer:{\nposition:'absolute',\nleft:0,\nright:0,\nbottom:0},\n\nwarningBox:{\nposition:'relative',\nbackgroundColor:'rgba(171, 124, 36, 0.9)',\nflex:1,\nheight:46},\n\nwarningText:{\ncolor:'white',\nposition:'absolute',\nleft:0,\nmarginLeft:15,\nmarginRight:46,\ntop:7},\n\nyellowBox:{\nbackgroundColor:'rgba(171, 124, 36, 0.9)',\nposition:'absolute',\nleft:0,\nright:0,\ntop:0,\nbottom:0,\npadding:15,\npaddingTop:35},\n\nyellowBoxText:{\ncolor:'white',\nfontSize:20},\n\nyellowBoxButtons:{\nflexDirection:'row',\nposition:'absolute',\nbottom:0},\n\nyellowBoxButton:{\nflex:1,\npadding:25},\n\nyellowBoxButtonText:{\ncolor:'white',\nfontSize:16}});\n\n\n\nmodule.exports = WarningBox;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule WarningBox\n */\n'use strict';\n\nvar AsyncStorage = require('AsyncStorage');\nvar EventEmitter = require('EventEmitter');\nvar Map = require('Map');\nvar PanResponder = require('PanResponder');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar TouchableOpacity = require('TouchableOpacity');\nvar View = require('View');\n\nvar invariant = require('invariant');\nvar rebound = require('rebound');\nvar stringifySafe = require('stringifySafe');\n\nvar SCREEN_WIDTH = require('Dimensions').get('window').width;\nvar IGNORED_WARNINGS_KEY = '__DEV_WARNINGS_IGNORED';\n\nvar consoleWarn = console.warn.bind(console);\n\nvar warningCounts = new Map();\nvar ignoredWarnings: Array<string> = [];\nvar totalWarningCount = 0;\nvar warningCountEvents = new EventEmitter();\n\n/**\n * WarningBox renders warnings on top of the app being developed. Warnings help\n * guard against subtle yet significant issues that can impact the quality of\n * your application, such as accessibility and memory leaks. This \"in your\n * face\" style of warning allows developers to notice and correct these issues\n * as quickly as possible.\n *\n * The warning box is currently opt-in. Set the following flag to enable it:\n *\n * `console.yellowBoxEnabled = true;`\n *\n * If \"ignore\" is tapped on a warning, the WarningBox will record that warning\n * and will not display it again. This is useful for hiding errors that already\n * exist or have been introduced elsewhere. To re-enable all of the errors, set\n * the following:\n *\n * `console.yellowBoxResetIgnored = true;`\n *\n * This can also be set permanently, and ignore will only silence the warnings\n * until the next refresh.\n */\n\nif (__DEV__) {\n console.warn = function() {\n consoleWarn.apply(null, arguments);\n if (!console.yellowBoxEnabled) {\n return;\n }\n var warning = Array.prototype.map.call(arguments, stringifySafe).join(' ');\n if (!console.yellowBoxResetIgnored &&\n ignoredWarnings.indexOf(warning) !== -1) {\n return;\n }\n var count = warningCounts.has(warning) ? warningCounts.get(warning) + 1 : 1;\n warningCounts.set(warning, count);\n totalWarningCount += 1;\n warningCountEvents.emit('count', totalWarningCount);\n };\n}\n\nfunction saveIgnoredWarnings() {\n AsyncStorage.setItem(\n IGNORED_WARNINGS_KEY,\n JSON.stringify(ignoredWarnings),\n function(err) {\n if (err) {\n console.warn('Could not save ignored warnings.', err);\n }\n }\n );\n}\n\nAsyncStorage.getItem(IGNORED_WARNINGS_KEY, function(err, data) {\n if (!err && data && !console.yellowBoxResetIgnored) {\n ignoredWarnings = JSON.parse(data);\n }\n});\n\nvar WarningRow = React.createClass({\n componentWillMount: function() {\n this.springSystem = new rebound.SpringSystem();\n this.dismissalSpring = this.springSystem.createSpring();\n this.dismissalSpring.setRestSpeedThreshold(0.05);\n this.dismissalSpring.setCurrentValue(0);\n this.dismissalSpring.addListener({\n onSpringUpdate: () => {\n var val = this.dismissalSpring.getCurrentValue();\n this.text && this.text.setNativeProps({\n left: SCREEN_WIDTH * val,\n });\n this.container && this.container.setNativeProps({\n opacity: 1 - val,\n });\n this.closeButton && this.closeButton.setNativeProps({\n opacity: 1 - (val * 5),\n });\n },\n onSpringAtRest: () => {\n if (this.dismissalSpring.getCurrentValue()) {\n this.collapseSpring.setEndValue(1);\n }\n },\n });\n this.collapseSpring = this.springSystem.createSpring();\n this.collapseSpring.setRestSpeedThreshold(0.05);\n this.collapseSpring.setCurrentValue(0);\n this.collapseSpring.getSpringConfig().friction = 20;\n this.collapseSpring.getSpringConfig().tension = 200;\n this.collapseSpring.addListener({\n onSpringUpdate: () => {\n var val = this.collapseSpring.getCurrentValue();\n this.container && this.container.setNativeProps({\n height: Math.abs(46 - (val * 46)),\n });\n },\n onSpringAtRest: () => {\n this.props.onDismissed();\n },\n });\n this.panGesture = PanResponder.create({\n onStartShouldSetPanResponder: () => {\n return !! this.dismissalSpring.getCurrentValue();\n },\n onMoveShouldSetPanResponder: () => true,\n onPanResponderGrant: () => {\n this.isResponderOnlyToBlockTouches =\n !! this.dismissalSpring.getCurrentValue();\n },\n onPanResponderMove: (e, gestureState) => {\n if (this.isResponderOnlyToBlockTouches) {\n return;\n }\n this.dismissalSpring.setCurrentValue(gestureState.dx / SCREEN_WIDTH);\n },\n onPanResponderRelease: (e, gestureState) => {\n if (this.isResponderOnlyToBlockTouches) {\n return;\n }\n var gestureCompletion = gestureState.dx / SCREEN_WIDTH;\n var doesGestureRelease = (gestureState.vx + gestureCompletion) > 0.5;\n this.dismissalSpring.setEndValue(doesGestureRelease ? 1 : 0);\n }\n });\n },\n render: function() {\n var countText;\n if (warningCounts.get(this.props.warning) > 1) {\n countText = (\n <Text style={styles.bold}>\n ({warningCounts.get(this.props.warning)}){\" \"}\n </Text>\n );\n }\n return (\n <View\n style={styles.warningBox}\n ref={container => { this.container = container; }}\n {...this.panGesture.panHandlers}>\n <TouchableOpacity\n onPress={this.props.onOpened}>\n <View>\n <Text\n style={styles.warningText}\n numberOfLines={2}\n ref={text => { this.text = text; }}>\n {countText}\n {this.props.warning}\n </Text>\n </View>\n </TouchableOpacity>\n <View\n ref={closeButton => { this.closeButton = closeButton; }}\n style={styles.closeButton}>\n <TouchableOpacity\n onPress={() => {\n this.dismissalSpring.setEndValue(1);\n }}>\n <Text style={styles.closeButtonText}>✕</Text>\n </TouchableOpacity>\n </View>\n </View>\n );\n }\n});\n\nvar WarningBoxOpened = React.createClass({\n render: function() {\n var countText;\n if (warningCounts.get(this.props.warning) > 1) {\n countText = (\n <Text style={styles.bold}>\n ({warningCounts.get(this.props.warning)}){\" \"}\n </Text>\n );\n }\n return (\n <TouchableOpacity\n activeOpacity={0.9}\n onPress={this.props.onClose}>\n <View style={styles.yellowBox}>\n <Text style={styles.yellowBoxText}>\n {countText}\n {this.props.warning}\n </Text>\n <View style={styles.yellowBoxButtons}>\n <View style={styles.yellowBoxButton}>\n <TouchableOpacity\n onPress={this.props.onDismissed}>\n <Text style={styles.yellowBoxButtonText}>\n Dismiss\n </Text>\n </TouchableOpacity>\n </View>\n <View style={styles.yellowBoxButton}>\n <TouchableOpacity\n onPress={this.props.onIgnored}>\n <Text style={styles.yellowBoxButtonText}>\n Ignore\n </Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n </TouchableOpacity>\n );\n },\n});\n\nvar canMountWarningBox = true;\n\nvar WarningBox = React.createClass({\n getInitialState: function() {\n return {\n totalWarningCount,\n openWarning: null,\n };\n },\n componentWillMount: function() {\n if (console.yellowBoxResetIgnored) {\n AsyncStorage.setItem(IGNORED_WARNINGS_KEY, '[]', function(err) {\n if (err) {\n console.warn('Could not reset ignored warnings.', err);\n }\n });\n ignoredWarnings = [];\n }\n },\n componentDidMount: function() {\n invariant(\n canMountWarningBox,\n 'There can only be one WarningBox'\n );\n canMountWarningBox = false;\n warningCountEvents.addListener(\n 'count',\n this._onWarningCount\n );\n },\n componentWillUnmount: function() {\n warningCountEvents.removeAllListeners();\n canMountWarningBox = true;\n },\n _onWarningCount: function(totalWarningCount) {\n // Must use setImmediate because warnings often happen during render and\n // state cannot be set while rendering\n setImmediate(() => {\n this.setState({ totalWarningCount, });\n });\n },\n _onDismiss: function(warning) {\n warningCounts.delete(warning);\n this.setState({\n openWarning: null,\n });\n },\n render: function() {\n if (warningCounts.size === 0) {\n return <View />;\n }\n if (this.state.openWarning) {\n return (\n <WarningBoxOpened\n warning={this.state.openWarning}\n onClose={() => {\n this.setState({ openWarning: null });\n }}\n onDismissed={this._onDismiss.bind(this, this.state.openWarning)}\n onIgnored={() => {\n ignoredWarnings.push(this.state.openWarning);\n saveIgnoredWarnings();\n this._onDismiss(this.state.openWarning);\n }}\n />\n );\n }\n var warningRows = [];\n warningCounts.forEach((count, warning) => {\n warningRows.push(\n <WarningRow\n key={warning}\n onOpened={() => {\n this.setState({ openWarning: warning });\n }}\n onDismissed={this._onDismiss.bind(this, warning)}\n warning={warning}\n />\n );\n });\n return (\n <View style={styles.warningContainer}>\n {warningRows}\n </View>\n );\n },\n});\n\nvar styles = StyleSheet.create({\n bold: {\n fontWeight: 'bold',\n },\n closeButton: {\n position: 'absolute',\n right: 0,\n height: 46,\n width: 46,\n },\n closeButtonText: {\n color: 'white',\n fontSize: 32,\n position: 'relative',\n left: 8,\n },\n warningContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0\n },\n warningBox: {\n position: 'relative',\n backgroundColor: 'rgba(171, 124, 36, 0.9)',\n flex: 1,\n height: 46,\n },\n warningText: {\n color: 'white',\n position: 'absolute',\n left: 0,\n marginLeft: 15,\n marginRight: 46,\n top: 7,\n },\n yellowBox: {\n backgroundColor: 'rgba(171, 124, 36, 0.9)',\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n padding: 15,\n paddingTop: 35,\n },\n yellowBoxText: {\n color: 'white',\n fontSize: 20,\n },\n yellowBoxButtons: {\n flexDirection: 'row',\n position: 'absolute',\n bottom: 0,\n },\n yellowBoxButton: {\n flex: 1,\n padding: 25,\n },\n yellowBoxButtonText: {\n color: 'white',\n fontSize: 16,\n }\n});\n\nmodule.exports = WarningBox;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/WarningBox.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Storage/AsyncStorage.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('NativeModules');\nvar RCTAsyncLocalStorage=NativeModules.AsyncLocalStorage;\nvar RCTAsyncRocksDBStorage=NativeModules.AsyncRocksDBStorage;\n\n\nvar RCTAsyncStorage=RCTAsyncRocksDBStorage || RCTAsyncLocalStorage;\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AsyncStorage={\n\n\n\n\ngetItem:function(\nkey,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiGet([key],function(errors,result){\n\nvar value=result && result[0] && result[0][1]?result[0][1]:null;\ncallback && callback(errors && convertError(errors[0]) || null,value);\nif(errors){\nreject(convertError(errors[0]));}else \n{\nresolve(value);}});});},\n\n\n\n\n\n\n\n\n\nsetItem:function(\nkey,\nvalue,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiSet([[key,value]],function(errors){\ncallback && callback(errors && convertError(errors[0]) || null);\nif(errors){\nreject(convertError(errors[0]));}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\nremoveItem:function(\nkey,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiRemove([key],function(errors){\ncallback && callback(errors && convertError(errors[0]) || null);\nif(errors){\nreject(convertError(errors[0]));}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\n\n\nmergeItem:function(\nkey,\nvalue,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiMerge([[key,value]],function(errors){\ncallback && callback(errors && convertError(errors[0]) || null);\nif(errors){\nreject(convertError(errors[0]));}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\n\n\nclear:function(callback){\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.clear(function(error){\ncallback && callback(convertError(error));\nif(error && convertError(error)){\nreject(convertError(error));}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\ngetAllKeys:function(callback){\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.getAllKeys(function(error,keys){\ncallback && callback(convertError(error),keys);\nif(error){\nreject(convertError(error));}else \n{\nresolve(keys);}});});},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmultiGet:function(\nkeys,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiGet(keys,function(errors,result){\nvar error=errors && errors.map(function(error){return convertError(error);}) || null;\ncallback && callback(error,result);\nif(errors){\nreject(error);}else \n{\nresolve(result);}});});},\n\n\n\n\n\n\n\n\n\n\n\nmultiSet:function(\nkeyValuePairs,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiSet(keyValuePairs,function(errors){\nvar error=errors && errors.map(function(error){return convertError(error);}) || null;\ncallback && callback(error);\nif(errors){\nreject(error);}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\nmultiRemove:function(\nkeys,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiRemove(keys,function(errors){\nvar error=errors && errors.map(function(error){return convertError(error);}) || null;\ncallback && callback(error);\nif(errors){\nreject(error);}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\n\n\n\nmultiMerge:function(\nkeyValuePairs,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiMerge(keyValuePairs,function(errors){\nvar error=errors && errors.map(function(error){return convertError(error);}) || null;\ncallback && callback(error);\nif(errors){\nreject(error);}else \n{\nresolve(null);}});});}};\n\n\n\n\n\n\n\nif(!RCTAsyncStorage.multiMerge){\ndelete AsyncStorage.mergeItem;\ndelete AsyncStorage.multiMerge;}\n\n\nfunction convertError(error){\nif(!error){\nreturn null;}\n\nvar out=new Error(error.message);\nout.key = error.key;\nreturn out;}\n\n\nmodule.exports = AsyncStorage;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AsyncStorage\n * @flow-weak\n */\n'use strict';\n\nvar NativeModules = require('NativeModules');\nvar RCTAsyncLocalStorage = NativeModules.AsyncLocalStorage;\nvar RCTAsyncRocksDBStorage = NativeModules.AsyncRocksDBStorage;\n\n// We use RocksDB if available.\nvar RCTAsyncStorage = RCTAsyncRocksDBStorage || RCTAsyncLocalStorage;\n\n/**\n * AsyncStorage is a simple, asynchronous, persistent, key-value storage\n * system that is global to the app. It should be used instead of LocalStorage.\n *\n * It is recommended that you use an abstraction on top of AsyncStorage instead\n * of AsyncStorage directly for anything more than light usage since it\n * operates globally.\n *\n * This JS code is a simple facade over the native iOS implementation to provide\n * a clear JS API, real Error objects, and simple non-multi functions. Each\n * method returns a `Promise` object.\n */\nvar AsyncStorage = {\n /**\n * Fetches `key` and passes the result to `callback`, along with an `Error` if\n * there is any. Returns a `Promise` object.\n */\n getItem: function(\n key: string,\n callback?: ?(error: ?Error, result: ?string) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiGet([key], function(errors, result) {\n // Unpack result to get value from [[key,value]]\n var value = (result && result[0] && result[0][1]) ? result[0][1] : null;\n callback && callback((errors && convertError(errors[0])) || null, value);\n if (errors) {\n reject(convertError(errors[0]));\n } else {\n resolve(value);\n }\n });\n });\n },\n\n /**\n * Sets `value` for `key` and calls `callback` on completion, along with an\n * `Error` if there is any. Returns a `Promise` object.\n */\n setItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiSet([[key,value]], function(errors) {\n callback && callback((errors && convertError(errors[0])) || null);\n if (errors) {\n reject(convertError(errors[0]));\n } else {\n resolve(null);\n }\n });\n });\n },\n /**\n * Returns a `Promise` object.\n */\n removeItem: function(\n key: string,\n callback?: ?(error: ?Error) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiRemove([key], function(errors) {\n callback && callback((errors && convertError(errors[0])) || null);\n if (errors) {\n reject(convertError(errors[0]));\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Merges existing value with input value, assuming they are stringified json. Returns a `Promise` object.\n *\n * Not supported by all native implementations.\n */\n mergeItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiMerge([[key,value]], function(errors) {\n callback && callback((errors && convertError(errors[0])) || null);\n if (errors) {\n reject(convertError(errors[0]));\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Erases *all* AsyncStorage for all clients, libraries, etc. You probably\n * don't want to call this - use removeItem or multiRemove to clear only your\n * own keys instead. Returns a `Promise` object.\n */\n clear: function(callback?: ?(error: ?Error) => void): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.clear(function(error) {\n callback && callback(convertError(error));\n if (error && convertError(error)){\n reject(convertError(error));\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Gets *all* keys known to the app, for all callers, libraries, etc. Returns a `Promise` object.\n */\n getAllKeys: function(callback?: ?(error: ?Error, keys: ?Array<string>) => void): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.getAllKeys(function(error, keys) {\n callback && callback(convertError(error), keys);\n if (error) {\n reject(convertError(error));\n } else {\n resolve(keys);\n }\n });\n });\n },\n\n /**\n * The following batched functions are useful for executing a lot of\n * operations at once, allowing for native optimizations and provide the\n * convenience of a single callback after all operations are complete.\n *\n * These functions return arrays of errors, potentially one for every key.\n * For key-specific errors, the Error object will have a key property to\n * indicate which key caused the error.\n */\n\n /**\n * multiGet invokes callback with an array of key-value pair arrays that\n * matches the input format of multiSet. Returns a `Promise` object.\n *\n * multiGet(['k1', 'k2'], cb) -> cb([['k1', 'val1'], ['k2', 'val2']])\n */\n multiGet: function(\n keys: Array<string>,\n callback?: ?(errors: ?Array<Error>, result: ?Array<Array<string>>) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiGet(keys, function(errors, result) {\n var error = (errors && errors.map((error) => convertError(error))) || null;\n callback && callback(error, result);\n if (errors) {\n reject(error);\n } else {\n resolve(result);\n }\n });\n });\n },\n\n /**\n * multiSet and multiMerge take arrays of key-value array pairs that match\n * the output of multiGet. Returns a `Promise` object.\n *\n * multiSet([['k1', 'val1'], ['k2', 'val2']], cb);\n */\n multiSet: function(\n keyValuePairs: Array<Array<string>>,\n callback?: ?(errors: ?Array<Error>) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiSet(keyValuePairs, function(errors) {\n var error = (errors && errors.map((error) => convertError(error))) || null;\n callback && callback(error);\n if (errors) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Delete all the keys in the `keys` array. Returns a `Promise` object.\n */\n multiRemove: function(\n keys: Array<string>,\n callback?: ?(errors: ?Array<Error>) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiRemove(keys, function(errors) {\n var error = (errors && errors.map((error) => convertError(error))) || null;\n callback && callback(error);\n if (errors) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Merges existing values with input values, assuming they are stringified\n * json. Returns a `Promise` object.\n *\n * Not supported by all native implementations.\n */\n multiMerge: function(\n keyValuePairs: Array<Array<string>>,\n callback?: ?(errors: ?Array<Error>) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiMerge(keyValuePairs, function(errors) {\n var error = (errors && errors.map((error) => convertError(error))) || null;\n callback && callback(error);\n if (errors) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n};\n\n// Not all native implementations support merge.\nif (!RCTAsyncStorage.multiMerge) {\n delete AsyncStorage.mergeItem;\n delete AsyncStorage.multiMerge;\n}\n\nfunction convertError(error) {\n if (!error) {\n return null;\n }\n var out = new Error(error.message);\n out.key = error.key; // flow doesn't like this :(\n return out;\n}\n\nmodule.exports = AsyncStorage;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Storage/AsyncStorage.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/RCTRenderingPerf.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactDefaultPerf=require('ReactDefaultPerf');\n\nvar invariant=require('invariant');\n\n\n\n\n\n\nvar perfModules=[];\nvar enabled=false;\n\nvar RCTRenderingPerf={\n\ntoggle:function(){\nconsole.log('Render perfomance measurements enabled');\nenabled = true;},\n\n\nstart:function(){\nif(!enabled){\nreturn;}\n\n\nReactDefaultPerf.start();\nperfModules.forEach(function(module){return module.start();});},\n\n\nstop:function(){\nif(!enabled){\nreturn;}\n\n\nReactDefaultPerf.stop();\nReactDefaultPerf.printInclusive();\nReactDefaultPerf.printWasted();\n\nvar totalRender=0;\nvar totalTime=0;\nvar measurements=ReactDefaultPerf.getLastMeasurements();\nfor(var ii=0;ii < measurements.length;ii++) {\nvar render=measurements[ii].render;\nfor(var nodeName in render) {\ntotalRender += render[nodeName];}\n\ntotalTime += measurements[ii].totalTime;}\n\nconsole.log('Total time spent in render(): ' + totalRender + 'ms');\n\nperfModules.forEach(function(module){return module.stop();});},\n\n\nregister:function(module){\ninvariant(\ntypeof module.start === 'function',\n'Perf module should have start() function');\n\ninvariant(\ntypeof module.stop === 'function',\n'Perf module should have stop() function');\n\nperfModules.push(module);}};\n\n\n\nmodule.exports = RCTRenderingPerf;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTRenderingPerf\n * @flow\n */\n'use strict';\n\nvar ReactDefaultPerf = require('ReactDefaultPerf');\n\nvar invariant = require('invariant');\n\ntype perfModule = {\n start: () => void;\n stop: () => void;\n}\n\nvar perfModules = [];\nvar enabled = false;\n\nvar RCTRenderingPerf = {\n // Once perf is enabled, it stays enabled\n toggle: function() {\n console.log('Render perfomance measurements enabled');\n enabled = true;\n },\n\n start: function() {\n if (!enabled) {\n return;\n }\n\n ReactDefaultPerf.start();\n perfModules.forEach((module) => module.start());\n },\n\n stop: function() {\n if (!enabled) {\n return;\n }\n\n ReactDefaultPerf.stop();\n ReactDefaultPerf.printInclusive();\n ReactDefaultPerf.printWasted();\n\n var totalRender = 0;\n var totalTime = 0;\n var measurements = ReactDefaultPerf.getLastMeasurements();\n for (var ii = 0; ii < measurements.length; ii++) {\n var render = measurements[ii].render;\n for (var nodeName in render) {\n totalRender += render[nodeName];\n }\n totalTime += measurements[ii].totalTime;\n }\n console.log('Total time spent in render(): ' + totalRender + 'ms');\n\n perfModules.forEach((module) => module.stop());\n },\n\n register: function(module: perfModule) {\n invariant(\n typeof module.start === 'function',\n 'Perf module should have start() function'\n );\n invariant(\n typeof module.stop === 'function',\n 'Perf module should have stop() function'\n );\n perfModules.push(module);\n }\n};\n\nmodule.exports = RCTRenderingPerf;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/RCTRenderingPerf.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactDefaultPerf.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DOMProperty=require('DOMProperty');\nvar ReactDefaultPerfAnalysis=require('ReactDefaultPerfAnalysis');\nvar ReactMount=require('ReactMount');\nvar ReactPerf=require('ReactPerf');\n\nvar performanceNow=require('performanceNow');\n\nfunction roundFloat(val){\nreturn Math.floor(val * 100) / 100;}\n\n\nfunction addValue(obj,key,val){\nobj[key] = (obj[key] || 0) + val;}\n\n\nvar ReactDefaultPerf={\n_allMeasurements:[],\n_mountStack:[0],\n_injected:false,\n\nstart:function(){\nif(!ReactDefaultPerf._injected){\nReactPerf.injection.injectMeasure(ReactDefaultPerf.measure);}\n\n\nReactDefaultPerf._allMeasurements.length = 0;\nReactPerf.enableMeasure = true;},\n\n\nstop:function(){\nReactPerf.enableMeasure = false;},\n\n\ngetLastMeasurements:function(){\nreturn ReactDefaultPerf._allMeasurements;},\n\n\nprintExclusive:function(measurements){\nmeasurements = measurements || ReactDefaultPerf._allMeasurements;\nvar summary=ReactDefaultPerfAnalysis.getExclusiveSummary(measurements);\nconsole.table(summary.map(function(item){\nreturn {\n'Component class name':item.componentName,\n'Total inclusive time (ms)':roundFloat(item.inclusive),\n'Exclusive mount time (ms)':roundFloat(item.exclusive),\n'Exclusive render time (ms)':roundFloat(item.render),\n'Mount time per instance (ms)':roundFloat(item.exclusive / item.count),\n'Render time per instance (ms)':roundFloat(item.render / item.count),\n'Instances':item.count};}));},\n\n\n\n\n\n\nprintInclusive:function(measurements){\nmeasurements = measurements || ReactDefaultPerf._allMeasurements;\nvar summary=ReactDefaultPerfAnalysis.getInclusiveSummary(measurements);\nconsole.table(summary.map(function(item){\nreturn {\n'Owner > component':item.componentName,\n'Inclusive time (ms)':roundFloat(item.time),\n'Instances':item.count};}));\n\n\nconsole.log(\n'Total time:',\nReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');},\n\n\n\ngetMeasurementsSummaryMap:function(measurements){\nvar summary=ReactDefaultPerfAnalysis.getInclusiveSummary(\nmeasurements,\ntrue);\n\nreturn summary.map(function(item){\nreturn {\n'Owner > component':item.componentName,\n'Wasted time (ms)':item.time,\n'Instances':item.count};});},\n\n\n\n\nprintWasted:function(measurements){\nmeasurements = measurements || ReactDefaultPerf._allMeasurements;\nconsole.table(ReactDefaultPerf.getMeasurementsSummaryMap(measurements));\nconsole.log(\n'Total time:',\nReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');},\n\n\n\nprintDOM:function(measurements){\nmeasurements = measurements || ReactDefaultPerf._allMeasurements;\nvar summary=ReactDefaultPerfAnalysis.getDOMSummary(measurements);\nconsole.table(summary.map(function(item){\nvar result={};\nresult[DOMProperty.ID_ATTRIBUTE_NAME] = item.id;\nresult['type'] = item.type;\nresult['args'] = JSON.stringify(item.args);\nreturn result;}));\n\nconsole.log(\n'Total time:',\nReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');},\n\n\n\n_recordWrite:function(id,fnName,totalTime,args){\n\nvar writes=\nReactDefaultPerf.\n_allMeasurements[ReactDefaultPerf._allMeasurements.length - 1].\nwrites;\nwrites[id] = writes[id] || [];\nwrites[id].push({\ntype:fnName,\ntime:totalTime,\nargs:args});},\n\n\n\nmeasure:function(moduleName,fnName,func){\nreturn function(){for(var _len=arguments.length,args=Array(_len),_key=0;_key < _len;_key++) {args[_key] = arguments[_key];}\nvar totalTime;\nvar rv;\nvar start;\n\nif(fnName === '_renderNewRootComponent' || \nfnName === 'flushBatchedUpdates'){\n\n\n\n\nReactDefaultPerf._allMeasurements.push({\nexclusive:{},\ninclusive:{},\nrender:{},\ncounts:{},\nwrites:{},\ndisplayNames:{},\ntotalTime:0});\n\nstart = performanceNow();\nrv = func.apply(this,args);\nReactDefaultPerf._allMeasurements[\nReactDefaultPerf._allMeasurements.length - 1].\ntotalTime = performanceNow() - start;\nreturn rv;}else \nif(fnName === '_mountImageIntoNode' || \nmoduleName === 'ReactDOMIDOperations'){\nstart = performanceNow();\nrv = func.apply(this,args);\ntotalTime = performanceNow() - start;\n\nif(fnName === '_mountImageIntoNode'){\nvar mountID=ReactMount.getID(args[1]);\nReactDefaultPerf._recordWrite(mountID,fnName,totalTime,args[0]);}else \nif(fnName === 'dangerouslyProcessChildrenUpdates'){\n\nargs[0].forEach(function(update){\nvar writeArgs={};\nif(update.fromIndex !== null){\nwriteArgs.fromIndex = update.fromIndex;}\n\nif(update.toIndex !== null){\nwriteArgs.toIndex = update.toIndex;}\n\nif(update.textContent !== null){\nwriteArgs.textContent = update.textContent;}\n\nif(update.markupIndex !== null){\nwriteArgs.markup = args[1][update.markupIndex];}\n\nReactDefaultPerf._recordWrite(\nupdate.parentID,\nupdate.type,\ntotalTime,\nwriteArgs);});}else \n\n\n{\n\nReactDefaultPerf._recordWrite(\nargs[0],\nfnName,\ntotalTime,\nArray.prototype.slice.call(args,1));}\n\n\nreturn rv;}else \nif(moduleName === 'ReactCompositeComponent' && (\nfnName === 'mountComponent' || \nfnName === 'updateComponent' || \nfnName === '_renderValidatedComponent')){\n\nif(typeof this._currentElement.type === 'string'){\nreturn func.apply(this,args);}\n\n\nvar rootNodeID=fnName === 'mountComponent'?\nargs[0]:\nthis._rootNodeID;\nvar isRender=fnName === '_renderValidatedComponent';\nvar isMount=fnName === 'mountComponent';\n\nvar mountStack=ReactDefaultPerf._mountStack;\nvar entry=ReactDefaultPerf._allMeasurements[\nReactDefaultPerf._allMeasurements.length - 1];\n\n\nif(isRender){\naddValue(entry.counts,rootNodeID,1);}else \nif(isMount){\nmountStack.push(0);}\n\n\nstart = performanceNow();\nrv = func.apply(this,args);\ntotalTime = performanceNow() - start;\n\nif(isRender){\naddValue(entry.render,rootNodeID,totalTime);}else \nif(isMount){\nvar subMountTime=mountStack.pop();\nmountStack[mountStack.length - 1] += totalTime;\naddValue(entry.exclusive,rootNodeID,totalTime - subMountTime);\naddValue(entry.inclusive,rootNodeID,totalTime);}else \n{\naddValue(entry.inclusive,rootNodeID,totalTime);}\n\n\nentry.displayNames[rootNodeID] = {\ncurrent:this.getName(),\nowner:this._currentElement._owner?\nthis._currentElement._owner.getName():\n'<root>'};\n\n\nreturn rv;}else \n{\nreturn func.apply(this,args);}};}};\n\n\n\n\n\nmodule.exports = ReactDefaultPerf;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDefaultPerf\n * @typechecks static-only\n */\n\n'use strict';\n\nvar DOMProperty = require('DOMProperty');\nvar ReactDefaultPerfAnalysis = require('ReactDefaultPerfAnalysis');\nvar ReactMount = require('ReactMount');\nvar ReactPerf = require('ReactPerf');\n\nvar performanceNow = require('performanceNow');\n\nfunction roundFloat(val) {\n return Math.floor(val * 100) / 100;\n}\n\nfunction addValue(obj, key, val) {\n obj[key] = (obj[key] || 0) + val;\n}\n\nvar ReactDefaultPerf = {\n _allMeasurements: [], // last item in the list is the current one\n _mountStack: [0],\n _injected: false,\n\n start: function() {\n if (!ReactDefaultPerf._injected) {\n ReactPerf.injection.injectMeasure(ReactDefaultPerf.measure);\n }\n\n ReactDefaultPerf._allMeasurements.length = 0;\n ReactPerf.enableMeasure = true;\n },\n\n stop: function() {\n ReactPerf.enableMeasure = false;\n },\n\n getLastMeasurements: function() {\n return ReactDefaultPerf._allMeasurements;\n },\n\n printExclusive: function(measurements) {\n measurements = measurements || ReactDefaultPerf._allMeasurements;\n var summary = ReactDefaultPerfAnalysis.getExclusiveSummary(measurements);\n console.table(summary.map(function(item) {\n return {\n 'Component class name': item.componentName,\n 'Total inclusive time (ms)': roundFloat(item.inclusive),\n 'Exclusive mount time (ms)': roundFloat(item.exclusive),\n 'Exclusive render time (ms)': roundFloat(item.render),\n 'Mount time per instance (ms)': roundFloat(item.exclusive / item.count),\n 'Render time per instance (ms)': roundFloat(item.render / item.count),\n 'Instances': item.count\n };\n }));\n // TODO: ReactDefaultPerfAnalysis.getTotalTime() does not return the correct\n // number.\n },\n\n printInclusive: function(measurements) {\n measurements = measurements || ReactDefaultPerf._allMeasurements;\n var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(measurements);\n console.table(summary.map(function(item) {\n return {\n 'Owner > component': item.componentName,\n 'Inclusive time (ms)': roundFloat(item.time),\n 'Instances': item.count\n };\n }));\n console.log(\n 'Total time:',\n ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'\n );\n },\n\n getMeasurementsSummaryMap: function(measurements) {\n var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(\n measurements,\n true\n );\n return summary.map(function(item) {\n return {\n 'Owner > component': item.componentName,\n 'Wasted time (ms)': item.time,\n 'Instances': item.count\n };\n });\n },\n\n printWasted: function(measurements) {\n measurements = measurements || ReactDefaultPerf._allMeasurements;\n console.table(ReactDefaultPerf.getMeasurementsSummaryMap(measurements));\n console.log(\n 'Total time:',\n ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'\n );\n },\n\n printDOM: function(measurements) {\n measurements = measurements || ReactDefaultPerf._allMeasurements;\n var summary = ReactDefaultPerfAnalysis.getDOMSummary(measurements);\n console.table(summary.map(function(item) {\n var result = {};\n result[DOMProperty.ID_ATTRIBUTE_NAME] = item.id;\n result['type'] = item.type;\n result['args'] = JSON.stringify(item.args);\n return result;\n }));\n console.log(\n 'Total time:',\n ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'\n );\n },\n\n _recordWrite: function(id, fnName, totalTime, args) {\n // TODO: totalTime isn't that useful since it doesn't count paints/reflows\n var writes =\n ReactDefaultPerf\n ._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1]\n .writes;\n writes[id] = writes[id] || [];\n writes[id].push({\n type: fnName,\n time: totalTime,\n args: args\n });\n },\n\n measure: function(moduleName, fnName, func) {\n return function(...args) {\n var totalTime;\n var rv;\n var start;\n\n if (fnName === '_renderNewRootComponent' ||\n fnName === 'flushBatchedUpdates') {\n // A \"measurement\" is a set of metrics recorded for each flush. We want\n // to group the metrics for a given flush together so we can look at the\n // components that rendered and the DOM operations that actually\n // happened to determine the amount of \"wasted work\" performed.\n ReactDefaultPerf._allMeasurements.push({\n exclusive: {},\n inclusive: {},\n render: {},\n counts: {},\n writes: {},\n displayNames: {},\n totalTime: 0\n });\n start = performanceNow();\n rv = func.apply(this, args);\n ReactDefaultPerf._allMeasurements[\n ReactDefaultPerf._allMeasurements.length - 1\n ].totalTime = performanceNow() - start;\n return rv;\n } else if (fnName === '_mountImageIntoNode' ||\n moduleName === 'ReactDOMIDOperations') {\n start = performanceNow();\n rv = func.apply(this, args);\n totalTime = performanceNow() - start;\n\n if (fnName === '_mountImageIntoNode') {\n var mountID = ReactMount.getID(args[1]);\n ReactDefaultPerf._recordWrite(mountID, fnName, totalTime, args[0]);\n } else if (fnName === 'dangerouslyProcessChildrenUpdates') {\n // special format\n args[0].forEach(function(update) {\n var writeArgs = {};\n if (update.fromIndex !== null) {\n writeArgs.fromIndex = update.fromIndex;\n }\n if (update.toIndex !== null) {\n writeArgs.toIndex = update.toIndex;\n }\n if (update.textContent !== null) {\n writeArgs.textContent = update.textContent;\n }\n if (update.markupIndex !== null) {\n writeArgs.markup = args[1][update.markupIndex];\n }\n ReactDefaultPerf._recordWrite(\n update.parentID,\n update.type,\n totalTime,\n writeArgs\n );\n });\n } else {\n // basic format\n ReactDefaultPerf._recordWrite(\n args[0],\n fnName,\n totalTime,\n Array.prototype.slice.call(args, 1)\n );\n }\n return rv;\n } else if (moduleName === 'ReactCompositeComponent' && (\n fnName === 'mountComponent' ||\n fnName === 'updateComponent' || // TODO: receiveComponent()?\n fnName === '_renderValidatedComponent')) {\n\n if (typeof this._currentElement.type === 'string') {\n return func.apply(this, args);\n }\n\n var rootNodeID = fnName === 'mountComponent' ?\n args[0] :\n this._rootNodeID;\n var isRender = fnName === '_renderValidatedComponent';\n var isMount = fnName === 'mountComponent';\n\n var mountStack = ReactDefaultPerf._mountStack;\n var entry = ReactDefaultPerf._allMeasurements[\n ReactDefaultPerf._allMeasurements.length - 1\n ];\n\n if (isRender) {\n addValue(entry.counts, rootNodeID, 1);\n } else if (isMount) {\n mountStack.push(0);\n }\n\n start = performanceNow();\n rv = func.apply(this, args);\n totalTime = performanceNow() - start;\n\n if (isRender) {\n addValue(entry.render, rootNodeID, totalTime);\n } else if (isMount) {\n var subMountTime = mountStack.pop();\n mountStack[mountStack.length - 1] += totalTime;\n addValue(entry.exclusive, rootNodeID, totalTime - subMountTime);\n addValue(entry.inclusive, rootNodeID, totalTime);\n } else {\n addValue(entry.inclusive, rootNodeID, totalTime);\n }\n\n entry.displayNames[rootNodeID] = {\n current: this.getName(),\n owner: this._currentElement._owner ?\n this._currentElement._owner.getName() :\n '<root>'\n };\n\n return rv;\n } else {\n return func.apply(this, args);\n }\n };\n }\n};\n\nmodule.exports = ReactDefaultPerf;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactDefaultPerf.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/DOMProperty.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nfunction checkMask(value,bitmask){\nreturn (value & bitmask) === bitmask;}\n\n\nvar DOMPropertyInjection={\n\n\n\n\nMUST_USE_ATTRIBUTE:0x1,\nMUST_USE_PROPERTY:0x2,\nHAS_SIDE_EFFECTS:0x4,\nHAS_BOOLEAN_VALUE:0x8,\nHAS_NUMERIC_VALUE:0x10,\nHAS_POSITIVE_NUMERIC_VALUE:0x20 | 0x10,\nHAS_OVERLOADED_BOOLEAN_VALUE:0x40,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ninjectDOMPropertyConfig:function(domPropertyConfig){\nvar Properties=domPropertyConfig.Properties || {};\nvar DOMAttributeNames=domPropertyConfig.DOMAttributeNames || {};\nvar DOMPropertyNames=domPropertyConfig.DOMPropertyNames || {};\nvar DOMMutationMethods=domPropertyConfig.DOMMutationMethods || {};\n\nif(domPropertyConfig.isCustomAttribute){\nDOMProperty._isCustomAttributeFunctions.push(\ndomPropertyConfig.isCustomAttribute);}\n\n\n\nfor(var propName in Properties) {\ninvariant(\n!DOMProperty.isStandardName.hasOwnProperty(propName),\n'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property ' + \n'\\'%s\\' which has already been injected. You may be accidentally ' + \n'injecting the same DOM property config twice, or you may be ' + \n'injecting two configs that have conflicting property names.',\npropName);\n\n\nDOMProperty.isStandardName[propName] = true;\n\nvar lowerCased=propName.toLowerCase();\nDOMProperty.getPossibleStandardName[lowerCased] = propName;\n\nif(DOMAttributeNames.hasOwnProperty(propName)){\nvar attributeName=DOMAttributeNames[propName];\nDOMProperty.getPossibleStandardName[attributeName] = propName;\nDOMProperty.getAttributeName[propName] = attributeName;}else \n{\nDOMProperty.getAttributeName[propName] = lowerCased;}\n\n\nDOMProperty.getPropertyName[propName] = \nDOMPropertyNames.hasOwnProperty(propName)?\nDOMPropertyNames[propName]:\npropName;\n\nif(DOMMutationMethods.hasOwnProperty(propName)){\nDOMProperty.getMutationMethod[propName] = DOMMutationMethods[propName];}else \n{\nDOMProperty.getMutationMethod[propName] = null;}\n\n\nvar propConfig=Properties[propName];\nDOMProperty.mustUseAttribute[propName] = \ncheckMask(propConfig,DOMPropertyInjection.MUST_USE_ATTRIBUTE);\nDOMProperty.mustUseProperty[propName] = \ncheckMask(propConfig,DOMPropertyInjection.MUST_USE_PROPERTY);\nDOMProperty.hasSideEffects[propName] = \ncheckMask(propConfig,DOMPropertyInjection.HAS_SIDE_EFFECTS);\nDOMProperty.hasBooleanValue[propName] = \ncheckMask(propConfig,DOMPropertyInjection.HAS_BOOLEAN_VALUE);\nDOMProperty.hasNumericValue[propName] = \ncheckMask(propConfig,DOMPropertyInjection.HAS_NUMERIC_VALUE);\nDOMProperty.hasPositiveNumericValue[propName] = \ncheckMask(propConfig,DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE);\nDOMProperty.hasOverloadedBooleanValue[propName] = \ncheckMask(propConfig,DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE);\n\ninvariant(\n!DOMProperty.mustUseAttribute[propName] || \n!DOMProperty.mustUseProperty[propName],\n'DOMProperty: Cannot require using both attribute and property: %s',\npropName);\n\ninvariant(\nDOMProperty.mustUseProperty[propName] || \n!DOMProperty.hasSideEffects[propName],\n'DOMProperty: Properties that have side effects must use property: %s',\npropName);\n\ninvariant(\n!!DOMProperty.hasBooleanValue[propName] + \n!!DOMProperty.hasNumericValue[propName] + \n!!DOMProperty.hasOverloadedBooleanValue[propName] <= 1,\n'DOMProperty: Value can be one of boolean, overloaded boolean, or ' + \n'numeric value, but not a combination: %s',\npropName);}}};\n\n\n\n\nvar defaultValueCache={};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DOMProperty={\n\nID_ATTRIBUTE_NAME:'data-reactid',\n\n\n\n\n\nisStandardName:{},\n\n\n\n\n\n\ngetPossibleStandardName:{},\n\n\n\n\n\n\ngetAttributeName:{},\n\n\n\n\n\n\ngetPropertyName:{},\n\n\n\n\n\n\ngetMutationMethod:{},\n\n\n\n\n\nmustUseAttribute:{},\n\n\n\n\n\n\nmustUseProperty:{},\n\n\n\n\n\n\n\nhasSideEffects:{},\n\n\n\n\n\nhasBooleanValue:{},\n\n\n\n\n\n\nhasNumericValue:{},\n\n\n\n\n\n\nhasPositiveNumericValue:{},\n\n\n\n\n\n\n\nhasOverloadedBooleanValue:{},\n\n\n\n\n_isCustomAttributeFunctions:[],\n\n\n\n\n\nisCustomAttribute:function(attributeName){\nfor(var i=0;i < DOMProperty._isCustomAttributeFunctions.length;i++) {\nvar isCustomAttributeFn=DOMProperty._isCustomAttributeFunctions[i];\nif(isCustomAttributeFn(attributeName)){\nreturn true;}}\n\n\nreturn false;},\n\n\n\n\n\n\n\n\n\n\ngetDefaultValueForProperty:function(nodeName,prop){\nvar nodeDefaults=defaultValueCache[nodeName];\nvar testElement;\nif(!nodeDefaults){\ndefaultValueCache[nodeName] = nodeDefaults = {};}\n\nif(!(prop in nodeDefaults)){\ntestElement = document.createElement(nodeName);\nnodeDefaults[prop] = testElement[prop];}\n\nreturn nodeDefaults[prop];},\n\n\ninjection:DOMPropertyInjection};\n\n\nmodule.exports = DOMProperty;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMProperty\n * @typechecks static-only\n */\n\n/*jslint bitwise: true */\n\n'use strict';\n\nvar invariant = require('invariant');\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_ATTRIBUTE: 0x1,\n MUST_USE_PROPERTY: 0x2,\n HAS_SIDE_EFFECTS: 0x4,\n HAS_BOOLEAN_VALUE: 0x8,\n HAS_NUMERIC_VALUE: 0x10,\n HAS_POSITIVE_NUMERIC_VALUE: 0x20 | 0x10,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x40,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function(domPropertyConfig) {\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(\n domPropertyConfig.isCustomAttribute\n );\n }\n\n for (var propName in Properties) {\n invariant(\n !DOMProperty.isStandardName.hasOwnProperty(propName),\n 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property ' +\n '\\'%s\\' which has already been injected. You may be accidentally ' +\n 'injecting the same DOM property config twice, or you may be ' +\n 'injecting two configs that have conflicting property names.',\n propName\n );\n\n DOMProperty.isStandardName[propName] = true;\n\n var lowerCased = propName.toLowerCase();\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n DOMProperty.getAttributeName[propName] = attributeName;\n } else {\n DOMProperty.getAttributeName[propName] = lowerCased;\n }\n\n DOMProperty.getPropertyName[propName] =\n DOMPropertyNames.hasOwnProperty(propName) ?\n DOMPropertyNames[propName] :\n propName;\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n DOMProperty.getMutationMethod[propName] = DOMMutationMethods[propName];\n } else {\n DOMProperty.getMutationMethod[propName] = null;\n }\n\n var propConfig = Properties[propName];\n DOMProperty.mustUseAttribute[propName] =\n checkMask(propConfig, DOMPropertyInjection.MUST_USE_ATTRIBUTE);\n DOMProperty.mustUseProperty[propName] =\n checkMask(propConfig, DOMPropertyInjection.MUST_USE_PROPERTY);\n DOMProperty.hasSideEffects[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_SIDE_EFFECTS);\n DOMProperty.hasBooleanValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_BOOLEAN_VALUE);\n DOMProperty.hasNumericValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_NUMERIC_VALUE);\n DOMProperty.hasPositiveNumericValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE);\n DOMProperty.hasOverloadedBooleanValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE);\n\n invariant(\n !DOMProperty.mustUseAttribute[propName] ||\n !DOMProperty.mustUseProperty[propName],\n 'DOMProperty: Cannot require using both attribute and property: %s',\n propName\n );\n invariant(\n DOMProperty.mustUseProperty[propName] ||\n !DOMProperty.hasSideEffects[propName],\n 'DOMProperty: Properties that have side effects must use property: %s',\n propName\n );\n invariant(\n !!DOMProperty.hasBooleanValue[propName] +\n !!DOMProperty.hasNumericValue[propName] +\n !!DOMProperty.hasOverloadedBooleanValue[propName] <= 1,\n 'DOMProperty: Value can be one of boolean, overloaded boolean, or ' +\n 'numeric value, but not a combination: %s',\n propName\n );\n }\n }\n};\nvar defaultValueCache = {};\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n\n /**\n * Checks whether a property name is a standard property.\n * @type {Object}\n */\n isStandardName: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties.\n * @type {Object}\n */\n getPossibleStandardName: {},\n\n /**\n * Mapping from normalized names to attribute names that differ. Attribute\n * names are used when rendering markup or with `*Attribute()`.\n * @type {Object}\n */\n getAttributeName: {},\n\n /**\n * Mapping from normalized names to properties on DOM node instances.\n * (This includes properties that mutate due to external factors.)\n * @type {Object}\n */\n getPropertyName: {},\n\n /**\n * Mapping from normalized names to mutation methods. This will only exist if\n * mutation cannot be set simply by the property or `setAttribute()`.\n * @type {Object}\n */\n getMutationMethod: {},\n\n /**\n * Whether the property must be accessed and mutated as an object property.\n * @type {Object}\n */\n mustUseAttribute: {},\n\n /**\n * Whether the property must be accessed and mutated using `*Attribute()`.\n * (This includes anything that fails `<propName> in <element>`.)\n * @type {Object}\n */\n mustUseProperty: {},\n\n /**\n * Whether or not setting a value causes side effects such as triggering\n * resources to be loaded or text selection changes. We must ensure that\n * the value is only set if it has changed.\n * @type {Object}\n */\n hasSideEffects: {},\n\n /**\n * Whether the property should be removed when set to a falsey value.\n * @type {Object}\n */\n hasBooleanValue: {},\n\n /**\n * Whether the property must be numeric or parse as a\n * numeric and should be removed when set to a falsey value.\n * @type {Object}\n */\n hasNumericValue: {},\n\n /**\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * @type {Object}\n */\n hasPositiveNumericValue: {},\n\n /**\n * Whether the property can be used as a flag as well as with a value. Removed\n * when strictly equal to false; present without a value when strictly equal\n * to true; present with a value otherwise.\n * @type {Object}\n */\n hasOverloadedBooleanValue: {},\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function(attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Returns the default property value for a DOM property (i.e., not an\n * attribute). Most default values are '' or false, but not all. Worse yet,\n * some (in particular, `type`) vary depending on the type of element.\n *\n * TODO: Is it better to grab all the possible properties when creating an\n * element to avoid having to create the same element twice?\n */\n getDefaultValueForProperty: function(nodeName, prop) {\n var nodeDefaults = defaultValueCache[nodeName];\n var testElement;\n if (!nodeDefaults) {\n defaultValueCache[nodeName] = nodeDefaults = {};\n }\n if (!(prop in nodeDefaults)) {\n testElement = document.createElement(nodeName);\n nodeDefaults[prop] = testElement[prop];\n }\n return nodeDefaults[prop];\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/DOMProperty.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactDefaultPerfAnalysis.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nassign=require('Object.assign');\n\n\nvar DONT_CARE_THRESHOLD=1.2;\nvar DOM_OPERATION_TYPES={\n'_mountImageIntoNode':'set innerHTML',\nINSERT_MARKUP:'set innerHTML',\nMOVE_EXISTING:'move',\nREMOVE_NODE:'remove',\nTEXT_CONTENT:'set textContent',\n'updatePropertyByID':'update attribute',\n'deletePropertyByID':'delete attribute',\n'updateStylesByID':'update styles',\n'updateInnerHTMLByID':'set innerHTML',\n'dangerouslyReplaceNodeWithMarkupByID':'replace'};\n\n\nfunction getTotalTime(measurements){\n\n\n\n\nvar totalTime=0;\nfor(var i=0;i < measurements.length;i++) {\nvar measurement=measurements[i];\ntotalTime += measurement.totalTime;}\n\nreturn totalTime;}\n\n\nfunction getDOMSummary(measurements){\nvar items=[];\nfor(var i=0;i < measurements.length;i++) {\nvar measurement=measurements[i];\nvar id;\n\nfor(id in measurement.writes) {\nmeasurement.writes[id].forEach(function(write){\nitems.push({\nid:id,\ntype:DOM_OPERATION_TYPES[write.type] || write.type,\nargs:write.args});});}}\n\n\n\n\nreturn items;}\n\n\nfunction getExclusiveSummary(measurements){\nvar candidates={};\nvar displayName;\n\nfor(var i=0;i < measurements.length;i++) {\nvar measurement=measurements[i];\nvar allIDs=assign(\n{},\nmeasurement.exclusive,\nmeasurement.inclusive);\n\n\nfor(var id in allIDs) {\ndisplayName = measurement.displayNames[id].current;\n\ncandidates[displayName] = candidates[displayName] || {\ncomponentName:displayName,\ninclusive:0,\nexclusive:0,\nrender:0,\ncount:0};\n\nif(measurement.render[id]){\ncandidates[displayName].render += measurement.render[id];}\n\nif(measurement.exclusive[id]){\ncandidates[displayName].exclusive += measurement.exclusive[id];}\n\nif(measurement.inclusive[id]){\ncandidates[displayName].inclusive += measurement.inclusive[id];}\n\nif(measurement.counts[id]){\ncandidates[displayName].count += measurement.counts[id];}}}\n\n\n\n\n\nvar arr=[];\nfor(displayName in candidates) {\nif(candidates[displayName].exclusive >= DONT_CARE_THRESHOLD){\narr.push(candidates[displayName]);}}\n\n\n\narr.sort(function(a,b){\nreturn b.exclusive - a.exclusive;});\n\n\nreturn arr;}\n\n\nfunction getInclusiveSummary(measurements,onlyClean){\nvar candidates={};\nvar inclusiveKey;\n\nfor(var i=0;i < measurements.length;i++) {\nvar measurement=measurements[i];\nvar allIDs=assign(\n{},\nmeasurement.exclusive,\nmeasurement.inclusive);\n\nvar cleanComponents;\n\nif(onlyClean){\ncleanComponents = getUnchangedComponents(measurement);}\n\n\nfor(var id in allIDs) {\nif(onlyClean && !cleanComponents[id]){\ncontinue;}\n\n\nvar displayName=measurement.displayNames[id];\n\n\n\n\ninclusiveKey = displayName.owner + ' > ' + displayName.current;\n\ncandidates[inclusiveKey] = candidates[inclusiveKey] || {\ncomponentName:inclusiveKey,\ntime:0,\ncount:0};\n\n\nif(measurement.inclusive[id]){\ncandidates[inclusiveKey].time += measurement.inclusive[id];}\n\nif(measurement.counts[id]){\ncandidates[inclusiveKey].count += measurement.counts[id];}}}\n\n\n\n\n\nvar arr=[];\nfor(inclusiveKey in candidates) {\nif(candidates[inclusiveKey].time >= DONT_CARE_THRESHOLD){\narr.push(candidates[inclusiveKey]);}}\n\n\n\narr.sort(function(a,b){\nreturn b.time - a.time;});\n\n\nreturn arr;}\n\n\nfunction getUnchangedComponents(measurement){\n\n\n\nvar cleanComponents={};\nvar dirtyLeafIDs=Object.keys(measurement.writes);\nvar allIDs=assign({},measurement.exclusive,measurement.inclusive);\n\nfor(var id in allIDs) {\nvar isDirty=false;\n\n\nfor(var i=0;i < dirtyLeafIDs.length;i++) {\nif(dirtyLeafIDs[i].indexOf(id) === 0){\nisDirty = true;\nbreak;}}\n\n\nif(!isDirty && measurement.counts[id] > 0){\ncleanComponents[id] = true;}}\n\n\nreturn cleanComponents;}\n\n\nvar ReactDefaultPerfAnalysis={\ngetExclusiveSummary:getExclusiveSummary,\ngetInclusiveSummary:getInclusiveSummary,\ngetDOMSummary:getDOMSummary,\ngetTotalTime:getTotalTime};\n\n\nmodule.exports = ReactDefaultPerfAnalysis;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDefaultPerfAnalysis\n */\n\nvar assign = require('Object.assign');\n\n// Don't try to save users less than 1.2ms (a number I made up)\nvar DONT_CARE_THRESHOLD = 1.2;\nvar DOM_OPERATION_TYPES = {\n '_mountImageIntoNode': 'set innerHTML',\n INSERT_MARKUP: 'set innerHTML',\n MOVE_EXISTING: 'move',\n REMOVE_NODE: 'remove',\n TEXT_CONTENT: 'set textContent',\n 'updatePropertyByID': 'update attribute',\n 'deletePropertyByID': 'delete attribute',\n 'updateStylesByID': 'update styles',\n 'updateInnerHTMLByID': 'set innerHTML',\n 'dangerouslyReplaceNodeWithMarkupByID': 'replace'\n};\n\nfunction getTotalTime(measurements) {\n // TODO: return number of DOM ops? could be misleading.\n // TODO: measure dropped frames after reconcile?\n // TODO: log total time of each reconcile and the top-level component\n // class that triggered it.\n var totalTime = 0;\n for (var i = 0; i < measurements.length; i++) {\n var measurement = measurements[i];\n totalTime += measurement.totalTime;\n }\n return totalTime;\n}\n\nfunction getDOMSummary(measurements) {\n var items = [];\n for (var i = 0; i < measurements.length; i++) {\n var measurement = measurements[i];\n var id;\n\n for (id in measurement.writes) {\n measurement.writes[id].forEach(function(write) {\n items.push({\n id: id,\n type: DOM_OPERATION_TYPES[write.type] || write.type,\n args: write.args\n });\n });\n }\n }\n return items;\n}\n\nfunction getExclusiveSummary(measurements) {\n var candidates = {};\n var displayName;\n\n for (var i = 0; i < measurements.length; i++) {\n var measurement = measurements[i];\n var allIDs = assign(\n {},\n measurement.exclusive,\n measurement.inclusive\n );\n\n for (var id in allIDs) {\n displayName = measurement.displayNames[id].current;\n\n candidates[displayName] = candidates[displayName] || {\n componentName: displayName,\n inclusive: 0,\n exclusive: 0,\n render: 0,\n count: 0\n };\n if (measurement.render[id]) {\n candidates[displayName].render += measurement.render[id];\n }\n if (measurement.exclusive[id]) {\n candidates[displayName].exclusive += measurement.exclusive[id];\n }\n if (measurement.inclusive[id]) {\n candidates[displayName].inclusive += measurement.inclusive[id];\n }\n if (measurement.counts[id]) {\n candidates[displayName].count += measurement.counts[id];\n }\n }\n }\n\n // Now make a sorted array with the results.\n var arr = [];\n for (displayName in candidates) {\n if (candidates[displayName].exclusive >= DONT_CARE_THRESHOLD) {\n arr.push(candidates[displayName]);\n }\n }\n\n arr.sort(function(a, b) {\n return b.exclusive - a.exclusive;\n });\n\n return arr;\n}\n\nfunction getInclusiveSummary(measurements, onlyClean) {\n var candidates = {};\n var inclusiveKey;\n\n for (var i = 0; i < measurements.length; i++) {\n var measurement = measurements[i];\n var allIDs = assign(\n {},\n measurement.exclusive,\n measurement.inclusive\n );\n var cleanComponents;\n\n if (onlyClean) {\n cleanComponents = getUnchangedComponents(measurement);\n }\n\n for (var id in allIDs) {\n if (onlyClean && !cleanComponents[id]) {\n continue;\n }\n\n var displayName = measurement.displayNames[id];\n\n // Inclusive time is not useful for many components without knowing where\n // they are instantiated. So we aggregate inclusive time with both the\n // owner and current displayName as the key.\n inclusiveKey = displayName.owner + ' > ' + displayName.current;\n\n candidates[inclusiveKey] = candidates[inclusiveKey] || {\n componentName: inclusiveKey,\n time: 0,\n count: 0\n };\n\n if (measurement.inclusive[id]) {\n candidates[inclusiveKey].time += measurement.inclusive[id];\n }\n if (measurement.counts[id]) {\n candidates[inclusiveKey].count += measurement.counts[id];\n }\n }\n }\n\n // Now make a sorted array with the results.\n var arr = [];\n for (inclusiveKey in candidates) {\n if (candidates[inclusiveKey].time >= DONT_CARE_THRESHOLD) {\n arr.push(candidates[inclusiveKey]);\n }\n }\n\n arr.sort(function(a, b) {\n return b.time - a.time;\n });\n\n return arr;\n}\n\nfunction getUnchangedComponents(measurement) {\n // For a given reconcile, look at which components did not actually\n // render anything to the DOM and return a mapping of their ID to\n // the amount of time it took to render the entire subtree.\n var cleanComponents = {};\n var dirtyLeafIDs = Object.keys(measurement.writes);\n var allIDs = assign({}, measurement.exclusive, measurement.inclusive);\n\n for (var id in allIDs) {\n var isDirty = false;\n // For each component that rendered, see if a component that triggered\n // a DOM op is in its subtree.\n for (var i = 0; i < dirtyLeafIDs.length; i++) {\n if (dirtyLeafIDs[i].indexOf(id) === 0) {\n isDirty = true;\n break;\n }\n }\n if (!isDirty && measurement.counts[id] > 0) {\n cleanComponents[id] = true;\n }\n }\n return cleanComponents;\n}\n\nvar ReactDefaultPerfAnalysis = {\n getExclusiveSummary: getExclusiveSummary,\n getInclusiveSummary: getInclusiveSummary,\n getDOMSummary: getDOMSummary,\n getTotalTime: getTotalTime\n};\n\nmodule.exports = ReactDefaultPerfAnalysis;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactDefaultPerfAnalysis.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/ReactMount.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar DOMProperty=require('DOMProperty');\nvar ReactBrowserEventEmitter=require('ReactBrowserEventEmitter');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactElementValidator=require('ReactElementValidator');\nvar ReactEmptyComponent=require('ReactEmptyComponent');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactMarkupChecksum=require('ReactMarkupChecksum');\nvar ReactPerf=require('ReactPerf');\nvar ReactReconciler=require('ReactReconciler');\nvar ReactUpdateQueue=require('ReactUpdateQueue');\nvar ReactUpdates=require('ReactUpdates');\n\nvar emptyObject=require('emptyObject');\nvar containsNode=require('containsNode');\nvar getReactRootElementInContainer=require('getReactRootElementInContainer');\nvar instantiateReactComponent=require('instantiateReactComponent');\nvar invariant=require('invariant');\nvar setInnerHTML=require('setInnerHTML');\nvar shouldUpdateReactComponent=require('shouldUpdateReactComponent');\nvar warning=require('warning');\n\nvar SEPARATOR=ReactInstanceHandles.SEPARATOR;\n\nvar ATTR_NAME=DOMProperty.ID_ATTRIBUTE_NAME;\nvar nodeCache={};\n\nvar ELEMENT_NODE_TYPE=1;\nvar DOC_NODE_TYPE=9;\n\n\nvar instancesByReactRootID={};\n\n\nvar containersByReactRootID={};\n\nif(__DEV__){\n\nvar rootElementsByReactRootID={};}\n\n\n\nvar findComponentRootReusableArray=[];\n\n\n\n\n\n\n\nfunction firstDifferenceIndex(string1,string2){\nvar minLen=Math.min(string1.length,string2.length);\nfor(var i=0;i < minLen;i++) {\nif(string1.charAt(i) !== string2.charAt(i)){\nreturn i;}}\n\n\nreturn string1.length === string2.length?-1:minLen;}\n\n\n\n\n\n\nfunction getReactRootID(container){\nvar rootElement=getReactRootElementInContainer(container);\nreturn rootElement && ReactMount.getID(rootElement);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getID(node){\nvar id=internalGetID(node);\nif(id){\nif(nodeCache.hasOwnProperty(id)){\nvar cached=nodeCache[id];\nif(cached !== node){\ninvariant(\n!isValid(cached,id),\n'ReactMount: Two valid but unequal nodes with the same `%s`: %s',\nATTR_NAME,id);\n\n\nnodeCache[id] = node;}}else \n\n{\nnodeCache[id] = node;}}\n\n\n\nreturn id;}\n\n\nfunction internalGetID(node){\n\n\n\nreturn node && node.getAttribute && node.getAttribute(ATTR_NAME) || '';}\n\n\n\n\n\n\n\n\nfunction setID(node,id){\nvar oldID=internalGetID(node);\nif(oldID !== id){\ndelete nodeCache[oldID];}\n\nnode.setAttribute(ATTR_NAME,id);\nnodeCache[id] = node;}\n\n\n\n\n\n\n\n\n\nfunction getNode(id){\nif(!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id],id)){\nnodeCache[id] = ReactMount.findReactNodeByID(id);}\n\nreturn nodeCache[id];}\n\n\n\n\n\n\n\n\n\nfunction getNodeFromInstance(instance){\nvar id=ReactInstanceMap.get(instance)._rootNodeID;\nif(ReactEmptyComponent.isNullComponentID(id)){\nreturn null;}\n\nif(!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id],id)){\nnodeCache[id] = ReactMount.findReactNodeByID(id);}\n\nreturn nodeCache[id];}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction isValid(node,id){\nif(node){\ninvariant(\ninternalGetID(node) === id,\n'ReactMount: Unexpected modification of `%s`',\nATTR_NAME);\n\n\nvar container=ReactMount.findReactContainerForID(id);\nif(container && containsNode(container,node)){\nreturn true;}}\n\n\n\nreturn false;}\n\n\n\n\n\n\n\nfunction purgeID(id){\ndelete nodeCache[id];}\n\n\nvar deepestNodeSoFar=null;\nfunction findDeepestCachedAncestorImpl(ancestorID){\nvar ancestor=nodeCache[ancestorID];\nif(ancestor && isValid(ancestor,ancestorID)){\ndeepestNodeSoFar = ancestor;}else \n{\n\n\nreturn false;}}\n\n\n\n\n\n\nfunction findDeepestCachedAncestor(targetID){\ndeepestNodeSoFar = null;\nReactInstanceHandles.traverseAncestors(\ntargetID,\nfindDeepestCachedAncestorImpl);\n\n\nvar foundNode=deepestNodeSoFar;\ndeepestNodeSoFar = null;\nreturn foundNode;}\n\n\n\n\n\n\n\n\n\n\n\nfunction mountComponentIntoNode(\ncomponentInstance,\nrootID,\ncontainer,\ntransaction,\nshouldReuseMarkup){\nvar markup=ReactReconciler.mountComponent(\ncomponentInstance,rootID,transaction,emptyObject);\n\ncomponentInstance._isTopLevel = true;\nReactMount._mountImageIntoNode(markup,container,shouldReuseMarkup);}\n\n\n\n\n\n\n\n\n\n\nfunction batchedMountComponentIntoNode(\ncomponentInstance,\nrootID,\ncontainer,\nshouldReuseMarkup){\nvar transaction=ReactUpdates.ReactReconcileTransaction.getPooled();\ntransaction.perform(\nmountComponentIntoNode,\nnull,\ncomponentInstance,\nrootID,\ncontainer,\ntransaction,\nshouldReuseMarkup);\n\nReactUpdates.ReactReconcileTransaction.release(transaction);}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactMount={\n\n_instancesByReactRootID:instancesByReactRootID,\n\n\n\n\n\n\n\n\n\nscrollMonitor:function(container,renderCallback){\nrenderCallback();},\n\n\n\n\n\n\n\n\n\n_updateRootComponent:function(\nprevComponent,\nnextElement,\ncontainer,\ncallback){\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(nextElement);}\n\n\nReactMount.scrollMonitor(container,function(){\nReactUpdateQueue.enqueueElementInternal(prevComponent,nextElement);\nif(callback){\nReactUpdateQueue.enqueueCallbackInternal(prevComponent,callback);}});\n\n\n\nif(__DEV__){\n\nrootElementsByReactRootID[getReactRootID(container)] = \ngetReactRootElementInContainer(container);}\n\n\nreturn prevComponent;},\n\n\n\n\n\n\n\n\n\n_registerComponent:function(nextComponent,container){\ninvariant(\ncontainer && (\ncontainer.nodeType === ELEMENT_NODE_TYPE || \ncontainer.nodeType === DOC_NODE_TYPE),\n\n'_registerComponent(...): Target container is not a DOM element.');\n\n\nReactBrowserEventEmitter.ensureScrollValueMonitoring();\n\nvar reactRootID=ReactMount.registerContainer(container);\ninstancesByReactRootID[reactRootID] = nextComponent;\nreturn reactRootID;},\n\n\n\n\n\n\n\n\n\n_renderNewRootComponent:function(\nnextElement,\ncontainer,\nshouldReuseMarkup)\n{\n\n\n\nwarning(\nReactCurrentOwner.current == null,\n'_renderNewRootComponent(): Render methods should be a pure function ' + \n'of props and state; triggering nested component updates from ' + \n'render is not allowed. If necessary, trigger nested updates in ' + \n'componentDidUpdate.');\n\n\nvar componentInstance=instantiateReactComponent(nextElement,null);\nvar reactRootID=ReactMount._registerComponent(\ncomponentInstance,\ncontainer);\n\n\n\n\n\n\nReactUpdates.batchedUpdates(\nbatchedMountComponentIntoNode,\ncomponentInstance,\nreactRootID,\ncontainer,\nshouldReuseMarkup);\n\n\nif(__DEV__){\n\nrootElementsByReactRootID[reactRootID] = \ngetReactRootElementInContainer(container);}\n\n\nreturn componentInstance;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrender:function(nextElement,container,callback){\ninvariant(\nReactElement.isValidElement(nextElement),\n'React.render(): Invalid component element.%s',\n\ntypeof nextElement === 'string'?\n' Instead of passing an element string, make sure to instantiate ' + \n'it by passing it to React.createElement.':\ntypeof nextElement === 'function'?\n' Instead of passing a component class, make sure to instantiate ' + \n'it by passing it to React.createElement.':\n\nnextElement != null && nextElement.props !== undefined?\n' This may be caused by unintentionally loading two independent ' + \n'copies of React.':\n'');\n\n\n\nvar prevComponent=instancesByReactRootID[getReactRootID(container)];\n\nif(prevComponent){\nvar prevElement=prevComponent._currentElement;\nif(shouldUpdateReactComponent(prevElement,nextElement)){\nreturn ReactMount._updateRootComponent(\nprevComponent,\nnextElement,\ncontainer,\ncallback).\ngetPublicInstance();}else \n{\nReactMount.unmountComponentAtNode(container);}}\n\n\n\nvar reactRootElement=getReactRootElementInContainer(container);\nvar containerHasReactMarkup=\nreactRootElement && ReactMount.isRenderedByReact(reactRootElement);\n\nif(__DEV__){\nif(!containerHasReactMarkup || reactRootElement.nextSibling){\nvar rootElementSibling=reactRootElement;\nwhile(rootElementSibling) {\nif(ReactMount.isRenderedByReact(rootElementSibling)){\nwarning(\nfalse,\n'render(): Target node has markup rendered by React, but there ' + \n'are unrelated nodes as well. This is most commonly caused by ' + \n'white-space inserted around server-rendered markup.');\n\nbreak;}\n\n\nrootElementSibling = rootElementSibling.nextSibling;}}}\n\n\n\n\nvar shouldReuseMarkup=containerHasReactMarkup && !prevComponent;\n\nvar component=ReactMount._renderNewRootComponent(\nnextElement,\ncontainer,\nshouldReuseMarkup).\ngetPublicInstance();\nif(callback){\ncallback.call(component);}\n\nreturn component;},\n\n\n\n\n\n\n\n\n\n\n\nconstructAndRenderComponent:function(constructor,props,container){\nvar element=ReactElement.createElement(constructor,props);\nreturn ReactMount.render(element,container);},\n\n\n\n\n\n\n\n\n\n\n\nconstructAndRenderComponentByID:function(constructor,props,id){\nvar domNode=document.getElementById(id);\ninvariant(\ndomNode,\n'Tried to get element with id of \"%s\" but it is not present on the page.',\nid);\n\nreturn ReactMount.constructAndRenderComponent(constructor,props,domNode);},\n\n\n\n\n\n\n\n\n\n\nregisterContainer:function(container){\nvar reactRootID=getReactRootID(container);\nif(reactRootID){\n\nreactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(reactRootID);}\n\nif(!reactRootID){\n\nreactRootID = ReactInstanceHandles.createReactRootID();}\n\ncontainersByReactRootID[reactRootID] = container;\nreturn reactRootID;},\n\n\n\n\n\n\n\n\n\nunmountComponentAtNode:function(container){\n\n\n\n\nwarning(\nReactCurrentOwner.current == null,\n'unmountComponentAtNode(): Render methods should be a pure function of ' + \n'props and state; triggering nested component updates from render is ' + \n'not allowed. If necessary, trigger nested updates in ' + \n'componentDidUpdate.');\n\n\ninvariant(\ncontainer && (\ncontainer.nodeType === ELEMENT_NODE_TYPE || \ncontainer.nodeType === DOC_NODE_TYPE),\n\n'unmountComponentAtNode(...): Target container is not a DOM element.');\n\n\nvar reactRootID=getReactRootID(container);\nvar component=instancesByReactRootID[reactRootID];\nif(!component){\nreturn false;}\n\nReactMount.unmountComponentFromNode(component,container);\ndelete instancesByReactRootID[reactRootID];\ndelete containersByReactRootID[reactRootID];\nif(__DEV__){\ndelete rootElementsByReactRootID[reactRootID];}\n\nreturn true;},\n\n\n\n\n\n\n\n\n\n\n\nunmountComponentFromNode:function(instance,container){\nReactReconciler.unmountComponent(instance);\n\nif(container.nodeType === DOC_NODE_TYPE){\ncontainer = container.documentElement;}\n\n\n\nwhile(container.lastChild) {\ncontainer.removeChild(container.lastChild);}},\n\n\n\n\n\n\n\n\n\n\nfindReactContainerForID:function(id){\nvar reactRootID=ReactInstanceHandles.getReactRootIDFromNodeID(id);\nvar container=containersByReactRootID[reactRootID];\n\nif(__DEV__){\nvar rootElement=rootElementsByReactRootID[reactRootID];\nif(rootElement && rootElement.parentNode !== container){\ninvariant(\n\n\ninternalGetID(rootElement) === reactRootID,\n'ReactMount: Root element ID differed from reactRootID.');\n\n\nvar containerChild=container.firstChild;\nif(containerChild && \nreactRootID === internalGetID(containerChild)){\n\n\n\n\nrootElementsByReactRootID[reactRootID] = containerChild;}else \n{\nwarning(\nfalse,\n'ReactMount: Root element has been removed from its original ' + \n'container. New container:',rootElement.parentNode);}}}\n\n\n\n\n\nreturn container;},\n\n\n\n\n\n\n\n\nfindReactNodeByID:function(id){\nvar reactRoot=ReactMount.findReactContainerForID(id);\nreturn ReactMount.findComponentRoot(reactRoot,id);},\n\n\n\n\n\n\n\n\n\nisRenderedByReact:function(node){\nif(node.nodeType !== 1){\n\nreturn false;}\n\nvar id=ReactMount.getID(node);\nreturn id?id.charAt(0) === SEPARATOR:false;},\n\n\n\n\n\n\n\n\n\n\ngetFirstReactDOM:function(node){\nvar current=node;\nwhile(current && current.parentNode !== current) {\nif(ReactMount.isRenderedByReact(current)){\nreturn current;}\n\ncurrent = current.parentNode;}\n\nreturn null;},\n\n\n\n\n\n\n\n\n\n\n\n\nfindComponentRoot:function(ancestorNode,targetID){\nvar firstChildren=findComponentRootReusableArray;\nvar childIndex=0;\n\nvar deepestAncestor=findDeepestCachedAncestor(targetID) || ancestorNode;\n\nfirstChildren[0] = deepestAncestor.firstChild;\nfirstChildren.length = 1;\n\nwhile(childIndex < firstChildren.length) {\nvar child=firstChildren[childIndex++];\nvar targetChild;\n\nwhile(child) {\nvar childID=ReactMount.getID(child);\nif(childID){\n\n\n\n\n\nif(targetID === childID){\ntargetChild = child;}else \nif(ReactInstanceHandles.isAncestorIDOf(childID,targetID)){\n\n\n\n\nfirstChildren.length = childIndex = 0;\nfirstChildren.push(child.firstChild);}}else \n\n\n{\n\n\n\n\n\nfirstChildren.push(child.firstChild);}\n\n\nchild = child.nextSibling;}\n\n\nif(targetChild){\n\n\n\nfirstChildren.length = 0;\n\nreturn targetChild;}}\n\n\n\nfirstChildren.length = 0;\n\ninvariant(\nfalse,\n'findComponentRoot(..., %s): Unable to find element. This probably ' + \n'means the DOM was unexpectedly mutated (e.g., by the browser), ' + \n'usually due to forgetting a <tbody> when using tables, nesting tags ' + \n'like <form>, <p>, or <a>, or using non-SVG elements in an <svg> ' + \n'parent. ' + \n'Try inspecting the child nodes of the element with React ID `%s`.',\ntargetID,\nReactMount.getID(ancestorNode));},\n\n\n\n_mountImageIntoNode:function(markup,container,shouldReuseMarkup){\ninvariant(\ncontainer && (\ncontainer.nodeType === ELEMENT_NODE_TYPE || \ncontainer.nodeType === DOC_NODE_TYPE),\n\n'mountComponentIntoNode(...): Target container is not valid.');\n\n\nif(shouldReuseMarkup){\nvar rootElement=getReactRootElementInContainer(container);\nif(ReactMarkupChecksum.canReuseMarkup(markup,rootElement)){\nreturn;}else \n{\nvar checksum=rootElement.getAttribute(\nReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\nrootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\nvar rootMarkup=rootElement.outerHTML;\nrootElement.setAttribute(\nReactMarkupChecksum.CHECKSUM_ATTR_NAME,\nchecksum);\n\n\nvar diffIndex=firstDifferenceIndex(markup,rootMarkup);\nvar difference=' (client) ' + \nmarkup.substring(diffIndex - 20,diffIndex + 20) + \n'\\n (server) ' + rootMarkup.substring(diffIndex - 20,diffIndex + 20);\n\ninvariant(\ncontainer.nodeType !== DOC_NODE_TYPE,\n'You\\'re trying to render a component to the document using ' + \n'server rendering but the checksum was invalid. This usually ' + \n'means you rendered a different component type or props on ' + \n'the client from the one on the server, or your render() ' + \n'methods are impure. React cannot handle this case due to ' + \n'cross-browser quirks by rendering at the document root. You ' + \n'should look for environment dependent code in your components ' + \n'and ensure the props are the same client and server side:\\n%s',\ndifference);\n\n\nif(__DEV__){\nwarning(\nfalse,\n'React attempted to reuse markup in a container but the ' + \n'checksum was invalid. This generally means that you are ' + \n'using server rendering and the markup generated on the ' + \n'server was not what the client was expecting. React injected ' + \n'new markup to compensate which works but you have lost many ' + \n'of the benefits of server rendering. Instead, figure out ' + \n'why the markup being generated is different on the client ' + \n'or server:\\n%s',\ndifference);}}}\n\n\n\n\n\ninvariant(\ncontainer.nodeType !== DOC_NODE_TYPE,\n'You\\'re trying to render a component to the document but ' + \n'you didn\\'t use server rendering. We can\\'t do this ' + \n'without using server rendering due to cross-browser quirks. ' + \n'See React.renderToString() for server rendering.');\n\n\nsetInnerHTML(container,markup);},\n\n\n\n\n\n\ngetReactRootID:getReactRootID,\n\ngetID:getID,\n\nsetID:setID,\n\ngetNode:getNode,\n\ngetNodeFromInstance:getNodeFromInstance,\n\npurgeID:purgeID};\n\n\nReactPerf.measureMethods(ReactMount,'ReactMount',{\n_renderNewRootComponent:'_renderNewRootComponent',\n_mountImageIntoNode:'_mountImageIntoNode'});\n\n\nmodule.exports = ReactMount;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMount\n */\n\n'use strict';\n\nvar DOMProperty = require('DOMProperty');\nvar ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactElementValidator = require('ReactElementValidator');\nvar ReactEmptyComponent = require('ReactEmptyComponent');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactMarkupChecksum = require('ReactMarkupChecksum');\nvar ReactPerf = require('ReactPerf');\nvar ReactReconciler = require('ReactReconciler');\nvar ReactUpdateQueue = require('ReactUpdateQueue');\nvar ReactUpdates = require('ReactUpdates');\n\nvar emptyObject = require('emptyObject');\nvar containsNode = require('containsNode');\nvar getReactRootElementInContainer = require('getReactRootElementInContainer');\nvar instantiateReactComponent = require('instantiateReactComponent');\nvar invariant = require('invariant');\nvar setInnerHTML = require('setInnerHTML');\nvar shouldUpdateReactComponent = require('shouldUpdateReactComponent');\nvar warning = require('warning');\n\nvar SEPARATOR = ReactInstanceHandles.SEPARATOR;\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar nodeCache = {};\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\n\n/** Mapping from reactRootID to React component instance. */\nvar instancesByReactRootID = {};\n\n/** Mapping from reactRootID to `container` nodes. */\nvar containersByReactRootID = {};\n\nif (__DEV__) {\n /** __DEV__-only mapping from reactRootID to root elements. */\n var rootElementsByReactRootID = {};\n}\n\n// Used to store breadth-first search state in findComponentRoot.\nvar findComponentRootReusableArray = [];\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement} container DOM element that may contain a React component.\n * @return {?string} A \"reactRoot\" ID, if a React component is rendered.\n */\nfunction getReactRootID(container) {\n var rootElement = getReactRootElementInContainer(container);\n return rootElement && ReactMount.getID(rootElement);\n}\n\n/**\n * Accessing node[ATTR_NAME] or calling getAttribute(ATTR_NAME) on a form\n * element can return its control whose name or ID equals ATTR_NAME. All\n * DOM nodes support `getAttributeNode` but this can also get called on\n * other objects so just return '' if we're given something other than a\n * DOM node (such as window).\n *\n * @param {?DOMElement|DOMWindow|DOMDocument|DOMTextNode} node DOM node.\n * @return {string} ID of the supplied `domNode`.\n */\nfunction getID(node) {\n var id = internalGetID(node);\n if (id) {\n if (nodeCache.hasOwnProperty(id)) {\n var cached = nodeCache[id];\n if (cached !== node) {\n invariant(\n !isValid(cached, id),\n 'ReactMount: Two valid but unequal nodes with the same `%s`: %s',\n ATTR_NAME, id\n );\n\n nodeCache[id] = node;\n }\n } else {\n nodeCache[id] = node;\n }\n }\n\n return id;\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node && node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Sets the React-specific ID of the given node.\n *\n * @param {DOMElement} node The DOM node whose ID will be set.\n * @param {string} id The value of the ID attribute.\n */\nfunction setID(node, id) {\n var oldID = internalGetID(node);\n if (oldID !== id) {\n delete nodeCache[oldID];\n }\n node.setAttribute(ATTR_NAME, id);\n nodeCache[id] = node;\n}\n\n/**\n * Finds the node with the supplied React-generated DOM ID.\n *\n * @param {string} id A React-generated DOM ID.\n * @return {DOMElement} DOM node with the suppled `id`.\n * @internal\n */\nfunction getNode(id) {\n if (!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id], id)) {\n nodeCache[id] = ReactMount.findReactNodeByID(id);\n }\n return nodeCache[id];\n}\n\n/**\n * Finds the node with the supplied public React instance.\n *\n * @param {*} instance A public React instance.\n * @return {?DOMElement} DOM node with the suppled `id`.\n * @internal\n */\nfunction getNodeFromInstance(instance) {\n var id = ReactInstanceMap.get(instance)._rootNodeID;\n if (ReactEmptyComponent.isNullComponentID(id)) {\n return null;\n }\n if (!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id], id)) {\n nodeCache[id] = ReactMount.findReactNodeByID(id);\n }\n return nodeCache[id];\n}\n\n/**\n * A node is \"valid\" if it is contained by a currently mounted container.\n *\n * This means that the node does not have to be contained by a document in\n * order to be considered valid.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @param {string} id The expected ID of the node.\n * @return {boolean} Whether the node is contained by a mounted container.\n */\nfunction isValid(node, id) {\n if (node) {\n invariant(\n internalGetID(node) === id,\n 'ReactMount: Unexpected modification of `%s`',\n ATTR_NAME\n );\n\n var container = ReactMount.findReactContainerForID(id);\n if (container && containsNode(container, node)) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Causes the cache to forget about one React-specific ID.\n *\n * @param {string} id The ID to forget.\n */\nfunction purgeID(id) {\n delete nodeCache[id];\n}\n\nvar deepestNodeSoFar = null;\nfunction findDeepestCachedAncestorImpl(ancestorID) {\n var ancestor = nodeCache[ancestorID];\n if (ancestor && isValid(ancestor, ancestorID)) {\n deepestNodeSoFar = ancestor;\n } else {\n // This node isn't populated in the cache, so presumably none of its\n // descendants are. Break out of the loop.\n return false;\n }\n}\n\n/**\n * Return the deepest cached node whose ID is a prefix of `targetID`.\n */\nfunction findDeepestCachedAncestor(targetID) {\n deepestNodeSoFar = null;\n ReactInstanceHandles.traverseAncestors(\n targetID,\n findDeepestCachedAncestorImpl\n );\n\n var foundNode = deepestNodeSoFar;\n deepestNodeSoFar = null;\n return foundNode;\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {string} rootID DOM ID of the root node.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(\n componentInstance,\n rootID,\n container,\n transaction,\n shouldReuseMarkup) {\n var markup = ReactReconciler.mountComponent(\n componentInstance, rootID, transaction, emptyObject\n );\n componentInstance._isTopLevel = true;\n ReactMount._mountImageIntoNode(markup, container, shouldReuseMarkup);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {string} rootID DOM ID of the root node.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(\n componentInstance,\n rootID,\n container,\n shouldReuseMarkup) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();\n transaction.perform(\n mountComponentIntoNode,\n null,\n componentInstance,\n rootID,\n container,\n transaction,\n shouldReuseMarkup\n );\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n /** Exposed for debugging purposes **/\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function(container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function(\n prevComponent,\n nextElement,\n container,\n callback) {\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(nextElement);\n }\n\n ReactMount.scrollMonitor(container, function() {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n if (__DEV__) {\n // Record the root element in case it later gets transplanted.\n rootElementsByReactRootID[getReactRootID(container)] =\n getReactRootElementInContainer(container);\n }\n\n return prevComponent;\n },\n\n /**\n * Register a component into the instance map and starts scroll value\n * monitoring\n * @param {ReactComponent} nextComponent component instance to render\n * @param {DOMElement} container container to render into\n * @return {string} reactRoot ID prefix\n */\n _registerComponent: function(nextComponent, container) {\n invariant(\n container && (\n container.nodeType === ELEMENT_NODE_TYPE ||\n container.nodeType === DOC_NODE_TYPE\n ),\n '_registerComponent(...): Target container is not a DOM element.'\n );\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n\n var reactRootID = ReactMount.registerContainer(container);\n instancesByReactRootID[reactRootID] = nextComponent;\n return reactRootID;\n },\n\n /**\n * Render a new component into the DOM.\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function(\n nextElement,\n container,\n shouldReuseMarkup\n ) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n warning(\n ReactCurrentOwner.current == null,\n '_renderNewRootComponent(): Render methods should be a pure function ' +\n 'of props and state; triggering nested component updates from ' +\n 'render is not allowed. If necessary, trigger nested updates in ' +\n 'componentDidUpdate.'\n );\n\n var componentInstance = instantiateReactComponent(nextElement, null);\n var reactRootID = ReactMount._registerComponent(\n componentInstance,\n container\n );\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(\n batchedMountComponentIntoNode,\n componentInstance,\n reactRootID,\n container,\n shouldReuseMarkup\n );\n\n if (__DEV__) {\n // Record the root element in case it later gets transplanted.\n rootElementsByReactRootID[reactRootID] =\n getReactRootElementInContainer(container);\n }\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function(nextElement, container, callback) {\n invariant(\n ReactElement.isValidElement(nextElement),\n 'React.render(): Invalid component element.%s',\n (\n typeof nextElement === 'string' ?\n ' Instead of passing an element string, make sure to instantiate ' +\n 'it by passing it to React.createElement.' :\n typeof nextElement === 'function' ?\n ' Instead of passing a component class, make sure to instantiate ' +\n 'it by passing it to React.createElement.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ?\n ' This may be caused by unintentionally loading two independent ' +\n 'copies of React.' :\n ''\n )\n );\n\n var prevComponent = instancesByReactRootID[getReactRootID(container)];\n\n if (prevComponent) {\n var prevElement = prevComponent._currentElement;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n return ReactMount._updateRootComponent(\n prevComponent,\n nextElement,\n container,\n callback\n ).getPublicInstance();\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup =\n reactRootElement && ReactMount.isRenderedByReact(reactRootElement);\n\n if (__DEV__) {\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (ReactMount.isRenderedByReact(rootElementSibling)) {\n warning(\n false,\n 'render(): Target node has markup rendered by React, but there ' +\n 'are unrelated nodes as well. This is most commonly caused by ' +\n 'white-space inserted around server-rendered markup.'\n );\n break;\n }\n\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent;\n\n var component = ReactMount._renderNewRootComponent(\n nextElement,\n container,\n shouldReuseMarkup\n ).getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Constructs a component instance of `constructor` with `initialProps` and\n * renders it into the supplied `container`.\n *\n * @param {function} constructor React component constructor.\n * @param {?object} props Initial props of the component instance.\n * @param {DOMElement} container DOM element to render into.\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n constructAndRenderComponent: function(constructor, props, container) {\n var element = ReactElement.createElement(constructor, props);\n return ReactMount.render(element, container);\n },\n\n /**\n * Constructs a component instance of `constructor` with `initialProps` and\n * renders it into a container node identified by supplied `id`.\n *\n * @param {function} componentConstructor React component constructor\n * @param {?object} props Initial props of the component instance.\n * @param {string} id ID of the DOM element to render into.\n * @return {ReactComponent} Component instance rendered in the container node.\n */\n constructAndRenderComponentByID: function(constructor, props, id) {\n var domNode = document.getElementById(id);\n invariant(\n domNode,\n 'Tried to get element with id of \"%s\" but it is not present on the page.',\n id\n );\n return ReactMount.constructAndRenderComponent(constructor, props, domNode);\n },\n\n /**\n * Registers a container node into which React components will be rendered.\n * This also creates the \"reactRoot\" ID that will be assigned to the element\n * rendered within.\n *\n * @param {DOMElement} container DOM element to register as a container.\n * @return {string} The \"reactRoot\" ID of elements rendered within.\n */\n registerContainer: function(container) {\n var reactRootID = getReactRootID(container);\n if (reactRootID) {\n // If one exists, make sure it is a valid \"reactRoot\" ID.\n reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(reactRootID);\n }\n if (!reactRootID) {\n // No valid \"reactRoot\" ID found, create one.\n reactRootID = ReactInstanceHandles.createReactRootID();\n }\n containersByReactRootID[reactRootID] = container;\n return reactRootID;\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function(container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n warning(\n ReactCurrentOwner.current == null,\n 'unmountComponentAtNode(): Render methods should be a pure function of ' +\n 'props and state; triggering nested component updates from render is ' +\n 'not allowed. If necessary, trigger nested updates in ' +\n 'componentDidUpdate.'\n );\n\n invariant(\n container && (\n container.nodeType === ELEMENT_NODE_TYPE ||\n container.nodeType === DOC_NODE_TYPE\n ),\n 'unmountComponentAtNode(...): Target container is not a DOM element.'\n );\n\n var reactRootID = getReactRootID(container);\n var component = instancesByReactRootID[reactRootID];\n if (!component) {\n return false;\n }\n ReactMount.unmountComponentFromNode(component, container);\n delete instancesByReactRootID[reactRootID];\n delete containersByReactRootID[reactRootID];\n if (__DEV__) {\n delete rootElementsByReactRootID[reactRootID];\n }\n return true;\n },\n\n /**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\n unmountComponentFromNode: function(instance, container) {\n ReactReconciler.unmountComponent(instance);\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n },\n\n /**\n * Finds the container DOM element that contains React component to which the\n * supplied DOM `id` belongs.\n *\n * @param {string} id The ID of an element rendered by a React component.\n * @return {?DOMElement} DOM element that contains the `id`.\n */\n findReactContainerForID: function(id) {\n var reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(id);\n var container = containersByReactRootID[reactRootID];\n\n if (__DEV__) {\n var rootElement = rootElementsByReactRootID[reactRootID];\n if (rootElement && rootElement.parentNode !== container) {\n invariant(\n // Call internalGetID here because getID calls isValid which calls\n // findReactContainerForID (this function).\n internalGetID(rootElement) === reactRootID,\n 'ReactMount: Root element ID differed from reactRootID.'\n );\n\n var containerChild = container.firstChild;\n if (containerChild &&\n reactRootID === internalGetID(containerChild)) {\n // If the container has a new child with the same ID as the old\n // root element, then rootElementsByReactRootID[reactRootID] is\n // just stale and needs to be updated. The case that deserves a\n // warning is when the container is empty.\n rootElementsByReactRootID[reactRootID] = containerChild;\n } else {\n warning(\n false,\n 'ReactMount: Root element has been removed from its original ' +\n 'container. New container:', rootElement.parentNode\n );\n }\n }\n }\n\n return container;\n },\n\n /**\n * Finds an element rendered by React with the supplied ID.\n *\n * @param {string} id ID of a DOM node in the React component.\n * @return {DOMElement} Root DOM node of the React component.\n */\n findReactNodeByID: function(id) {\n var reactRoot = ReactMount.findReactContainerForID(id);\n return ReactMount.findComponentRoot(reactRoot, id);\n },\n\n /**\n * True if the supplied `node` is rendered by React.\n *\n * @param {*} node DOM Element to check.\n * @return {boolean} True if the DOM Element appears to be rendered by React.\n * @internal\n */\n isRenderedByReact: function(node) {\n if (node.nodeType !== 1) {\n // Not a DOMElement, therefore not a React component\n return false;\n }\n var id = ReactMount.getID(node);\n return id ? id.charAt(0) === SEPARATOR : false;\n },\n\n /**\n * Traverses up the ancestors of the supplied node to find a node that is a\n * DOM representation of a React component.\n *\n * @param {*} node\n * @return {?DOMEventTarget}\n * @internal\n */\n getFirstReactDOM: function(node) {\n var current = node;\n while (current && current.parentNode !== current) {\n if (ReactMount.isRenderedByReact(current)) {\n return current;\n }\n current = current.parentNode;\n }\n return null;\n },\n\n /**\n * Finds a node with the supplied `targetID` inside of the supplied\n * `ancestorNode`. Exploits the ID naming scheme to perform the search\n * quickly.\n *\n * @param {DOMEventTarget} ancestorNode Search from this root.\n * @pararm {string} targetID ID of the DOM representation of the component.\n * @return {DOMEventTarget} DOM node with the supplied `targetID`.\n * @internal\n */\n findComponentRoot: function(ancestorNode, targetID) {\n var firstChildren = findComponentRootReusableArray;\n var childIndex = 0;\n\n var deepestAncestor = findDeepestCachedAncestor(targetID) || ancestorNode;\n\n firstChildren[0] = deepestAncestor.firstChild;\n firstChildren.length = 1;\n\n while (childIndex < firstChildren.length) {\n var child = firstChildren[childIndex++];\n var targetChild;\n\n while (child) {\n var childID = ReactMount.getID(child);\n if (childID) {\n // Even if we find the node we're looking for, we finish looping\n // through its siblings to ensure they're cached so that we don't have\n // to revisit this node again. Otherwise, we make n^2 calls to getID\n // when visiting the many children of a single node in order.\n\n if (targetID === childID) {\n targetChild = child;\n } else if (ReactInstanceHandles.isAncestorIDOf(childID, targetID)) {\n // If we find a child whose ID is an ancestor of the given ID,\n // then we can be sure that we only want to search the subtree\n // rooted at this child, so we can throw out the rest of the\n // search state.\n firstChildren.length = childIndex = 0;\n firstChildren.push(child.firstChild);\n }\n\n } else {\n // If this child had no ID, then there's a chance that it was\n // injected automatically by the browser, as when a `<table>`\n // element sprouts an extra `<tbody>` child as a side effect of\n // `.innerHTML` parsing. Optimistically continue down this\n // branch, but not before examining the other siblings.\n firstChildren.push(child.firstChild);\n }\n\n child = child.nextSibling;\n }\n\n if (targetChild) {\n // Emptying firstChildren/findComponentRootReusableArray is\n // not necessary for correctness, but it helps the GC reclaim\n // any nodes that were left at the end of the search.\n firstChildren.length = 0;\n\n return targetChild;\n }\n }\n\n firstChildren.length = 0;\n\n invariant(\n false,\n 'findComponentRoot(..., %s): Unable to find element. This probably ' +\n 'means the DOM was unexpectedly mutated (e.g., by the browser), ' +\n 'usually due to forgetting a <tbody> when using tables, nesting tags ' +\n 'like <form>, <p>, or <a>, or using non-SVG elements in an <svg> ' +\n 'parent. ' +\n 'Try inspecting the child nodes of the element with React ID `%s`.',\n targetID,\n ReactMount.getID(ancestorNode)\n );\n },\n\n _mountImageIntoNode: function(markup, container, shouldReuseMarkup) {\n invariant(\n container && (\n container.nodeType === ELEMENT_NODE_TYPE ||\n container.nodeType === DOC_NODE_TYPE\n ),\n 'mountComponentIntoNode(...): Target container is not valid.'\n );\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n return;\n } else {\n var checksum = rootElement.getAttribute(\n ReactMarkupChecksum.CHECKSUM_ATTR_NAME\n );\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(\n ReactMarkupChecksum.CHECKSUM_ATTR_NAME,\n checksum\n );\n\n var diffIndex = firstDifferenceIndex(markup, rootMarkup);\n var difference = ' (client) ' +\n markup.substring(diffIndex - 20, diffIndex + 20) +\n '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n invariant(\n container.nodeType !== DOC_NODE_TYPE,\n 'You\\'re trying to render a component to the document using ' +\n 'server rendering but the checksum was invalid. This usually ' +\n 'means you rendered a different component type or props on ' +\n 'the client from the one on the server, or your render() ' +\n 'methods are impure. React cannot handle this case due to ' +\n 'cross-browser quirks by rendering at the document root. You ' +\n 'should look for environment dependent code in your components ' +\n 'and ensure the props are the same client and server side:\\n%s',\n difference\n );\n\n if (__DEV__) {\n warning(\n false,\n 'React attempted to reuse markup in a container but the ' +\n 'checksum was invalid. This generally means that you are ' +\n 'using server rendering and the markup generated on the ' +\n 'server was not what the client was expecting. React injected ' +\n 'new markup to compensate which works but you have lost many ' +\n 'of the benefits of server rendering. Instead, figure out ' +\n 'why the markup being generated is different on the client ' +\n 'or server:\\n%s',\n difference\n );\n }\n }\n }\n\n invariant(\n container.nodeType !== DOC_NODE_TYPE,\n 'You\\'re trying to render a component to the document but ' +\n 'you didn\\'t use server rendering. We can\\'t do this ' +\n 'without using server rendering due to cross-browser quirks. ' +\n 'See React.renderToString() for server rendering.'\n );\n\n setInnerHTML(container, markup);\n },\n\n /**\n * React ID utilities.\n */\n\n getReactRootID: getReactRootID,\n\n getID: getID,\n\n setID: setID,\n\n getNode: getNode,\n\n getNodeFromInstance: getNodeFromInstance,\n\n purgeID: purgeID\n};\n\nReactPerf.measureMethods(ReactMount, 'ReactMount', {\n _renderNewRootComponent: '_renderNewRootComponent',\n _mountImageIntoNode: '_mountImageIntoNode'\n});\n\nmodule.exports = ReactMount;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/ReactMount.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ReactBrowserEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventConstants=require('EventConstants');\nvar EventPluginHub=require('EventPluginHub');\nvar EventPluginRegistry=require('EventPluginRegistry');\nvar ReactEventEmitterMixin=require('ReactEventEmitterMixin');\nvar ViewportMetrics=require('ViewportMetrics');\n\nvar assign=require('Object.assign');\nvar isEventSupported=require('isEventSupported');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar alreadyListeningTo={};\nvar isMonitoringScrollValue=false;\nvar reactTopListenersCounter=0;\n\n\n\n\nvar topEventMapping={\ntopBlur:'blur',\ntopChange:'change',\ntopClick:'click',\ntopCompositionEnd:'compositionend',\ntopCompositionStart:'compositionstart',\ntopCompositionUpdate:'compositionupdate',\ntopContextMenu:'contextmenu',\ntopCopy:'copy',\ntopCut:'cut',\ntopDoubleClick:'dblclick',\ntopDrag:'drag',\ntopDragEnd:'dragend',\ntopDragEnter:'dragenter',\ntopDragExit:'dragexit',\ntopDragLeave:'dragleave',\ntopDragOver:'dragover',\ntopDragStart:'dragstart',\ntopDrop:'drop',\ntopFocus:'focus',\ntopInput:'input',\ntopKeyDown:'keydown',\ntopKeyPress:'keypress',\ntopKeyUp:'keyup',\ntopMouseDown:'mousedown',\ntopMouseMove:'mousemove',\ntopMouseOut:'mouseout',\ntopMouseOver:'mouseover',\ntopMouseUp:'mouseup',\ntopPaste:'paste',\ntopScroll:'scroll',\ntopSelectionChange:'selectionchange',\ntopTextInput:'textInput',\ntopTouchCancel:'touchcancel',\ntopTouchEnd:'touchend',\ntopTouchMove:'touchmove',\ntopTouchStart:'touchstart',\ntopWheel:'wheel'};\n\n\n\n\n\nvar topListenersIDKey='_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt){\n\n\nif(!Object.prototype.hasOwnProperty.call(mountAt,topListenersIDKey)){\nmountAt[topListenersIDKey] = reactTopListenersCounter++;\nalreadyListeningTo[mountAt[topListenersIDKey]] = {};}\n\nreturn alreadyListeningTo[mountAt[topListenersIDKey]];}\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactBrowserEventEmitter=assign({},ReactEventEmitterMixin,{\n\n\n\n\nReactEventListener:null,\n\ninjection:{\n\n\n\ninjectReactEventListener:function(ReactEventListener){\nReactEventListener.setHandleTopLevel(\nReactBrowserEventEmitter.handleTopLevel);\n\nReactBrowserEventEmitter.ReactEventListener = ReactEventListener;}},\n\n\n\n\n\n\n\n\nsetEnabled:function(enabled){\nif(ReactBrowserEventEmitter.ReactEventListener){\nReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);}},\n\n\n\n\n\n\nisEnabled:function(){\nreturn !!(\nReactBrowserEventEmitter.ReactEventListener && \nReactBrowserEventEmitter.ReactEventListener.isEnabled());},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlistenTo:function(registrationName,contentDocumentHandle){\nvar mountAt=contentDocumentHandle;\nvar isListening=getListeningForDocument(mountAt);\nvar dependencies=EventPluginRegistry.\nregistrationNameDependencies[registrationName];\n\nvar topLevelTypes=EventConstants.topLevelTypes;\nfor(var i=0,l=dependencies.length;i < l;i++) {\nvar dependency=dependencies[i];\nif(!(\nisListening.hasOwnProperty(dependency) && \nisListening[dependency]))\n{\nif(dependency === topLevelTypes.topWheel){\nif(isEventSupported('wheel')){\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topWheel,\n'wheel',\nmountAt);}else \n\nif(isEventSupported('mousewheel')){\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topWheel,\n'mousewheel',\nmountAt);}else \n\n{\n\n\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topWheel,\n'DOMMouseScroll',\nmountAt);}}else \n\n\nif(dependency === topLevelTypes.topScroll){\n\nif(isEventSupported('scroll',true)){\nReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\ntopLevelTypes.topScroll,\n'scroll',\nmountAt);}else \n\n{\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topScroll,\n'scroll',\nReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);}}else \n\n\nif(dependency === topLevelTypes.topFocus || \ndependency === topLevelTypes.topBlur){\n\nif(isEventSupported('focus',true)){\nReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\ntopLevelTypes.topFocus,\n'focus',\nmountAt);\n\nReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\ntopLevelTypes.topBlur,\n'blur',\nmountAt);}else \n\nif(isEventSupported('focusin')){\n\n\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topFocus,\n'focusin',\nmountAt);\n\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topBlur,\n'focusout',\nmountAt);}\n\n\n\n\nisListening[topLevelTypes.topBlur] = true;\nisListening[topLevelTypes.topFocus] = true;}else \nif(topEventMapping.hasOwnProperty(dependency)){\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ndependency,\ntopEventMapping[dependency],\nmountAt);}\n\n\n\nisListening[dependency] = true;}}},\n\n\n\n\ntrapBubbledEvent:function(topLevelType,handlerBaseName,handle){\nreturn ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelType,\nhandlerBaseName,\nhandle);},\n\n\n\ntrapCapturedEvent:function(topLevelType,handlerBaseName,handle){\nreturn ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\ntopLevelType,\nhandlerBaseName,\nhandle);},\n\n\n\n\n\n\n\n\n\n\n\nensureScrollValueMonitoring:function(){\nif(!isMonitoringScrollValue){\nvar refresh=ViewportMetrics.refreshScrollValues;\nReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\nisMonitoringScrollValue = true;}},\n\n\n\neventNameDispatchConfigs:EventPluginHub.eventNameDispatchConfigs,\n\nregistrationNameModules:EventPluginHub.registrationNameModules,\n\nputListener:EventPluginHub.putListener,\n\ngetListener:EventPluginHub.getListener,\n\ndeleteListener:EventPluginHub.deleteListener,\n\ndeleteAllListeners:EventPluginHub.deleteAllListeners});\n\n\n\nmodule.exports = ReactBrowserEventEmitter;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactBrowserEventEmitter\n * @typechecks static-only\n */\n\n'use strict';\n\nvar EventConstants = require('EventConstants');\nvar EventPluginHub = require('EventPluginHub');\nvar EventPluginRegistry = require('EventPluginRegistry');\nvar ReactEventEmitterMixin = require('ReactEventEmitterMixin');\nvar ViewportMetrics = require('ViewportMetrics');\n\nvar assign = require('Object.assign');\nvar isEventSupported = require('isEventSupported');\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topBlur: 'blur',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topScroll: 'scroll',\n topSelectionChange: 'selectionchange',\n topTextInput: 'textInput',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * ReactBrowserEventEmitter.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function(ReactEventListener) {\n ReactEventListener.setHandleTopLevel(\n ReactBrowserEventEmitter.handleTopLevel\n );\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function(enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function() {\n return !!(\n ReactBrowserEventEmitter.ReactEventListener &&\n ReactBrowserEventEmitter.ReactEventListener.isEnabled()\n );\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function(registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.\n registrationNameDependencies[registrationName];\n\n var topLevelTypes = EventConstants.topLevelTypes;\n for (var i = 0, l = dependencies.length; i < l; i++) {\n var dependency = dependencies[i];\n if (!(\n isListening.hasOwnProperty(dependency) &&\n isListening[dependency]\n )) {\n if (dependency === topLevelTypes.topWheel) {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'wheel',\n mountAt\n );\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'mousewheel',\n mountAt\n );\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'DOMMouseScroll',\n mountAt\n );\n }\n } else if (dependency === topLevelTypes.topScroll) {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topScroll,\n 'scroll',\n mountAt\n );\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topScroll,\n 'scroll',\n ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE\n );\n }\n } else if (dependency === topLevelTypes.topFocus ||\n dependency === topLevelTypes.topBlur) {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topFocus,\n 'focus',\n mountAt\n );\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topBlur,\n 'blur',\n mountAt\n );\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topFocus,\n 'focusin',\n mountAt\n );\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topBlur,\n 'focusout',\n mountAt\n );\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening[topLevelTypes.topBlur] = true;\n isListening[topLevelTypes.topFocus] = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n dependency,\n topEventMapping[dependency],\n mountAt\n );\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelType,\n handlerBaseName,\n handle\n );\n },\n\n trapCapturedEvent: function(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelType,\n handlerBaseName,\n handle\n );\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function() {\n if (!isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n },\n\n eventNameDispatchConfigs: EventPluginHub.eventNameDispatchConfigs,\n\n registrationNameModules: EventPluginHub.registrationNameModules,\n\n putListener: EventPluginHub.putListener,\n\n getListener: EventPluginHub.getListener,\n\n deleteListener: EventPluginHub.deleteListener,\n\n deleteAllListeners: EventPluginHub.deleteAllListeners\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ReactBrowserEventEmitter.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/ViewportMetrics.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ViewportMetrics={\n\ncurrentScrollLeft:0,\n\ncurrentScrollTop:0,\n\nrefreshScrollValues:function(scrollPosition){\nViewportMetrics.currentScrollLeft = scrollPosition.x;\nViewportMetrics.currentScrollTop = scrollPosition.y;}};\n\n\n\n\nmodule.exports = ViewportMetrics;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ViewportMetrics\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function(scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/ViewportMetrics.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/isEventSupported.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ExecutionEnvironment=require('ExecutionEnvironment');\n\nvar useHasFeature;\nif(ExecutionEnvironment.canUseDOM){\nuseHasFeature = \ndocument.implementation && \ndocument.implementation.hasFeature && \n\n\ndocument.implementation.hasFeature('','') !== true;}\n\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix,capture){\nif(!ExecutionEnvironment.canUseDOM || \ncapture && !('addEventListener' in document)){\nreturn false;}\n\n\nvar eventName='on' + eventNameSuffix;\nvar isSupported=(eventName in document);\n\nif(!isSupported){\nvar element=document.createElement('div');\nelement.setAttribute(eventName,'return;');\nisSupported = typeof element[eventName] === 'function';}\n\n\nif(!isSupported && useHasFeature && eventNameSuffix === 'wheel'){\n\nisSupported = document.implementation.hasFeature('Events.wheel','3.0');}\n\n\nreturn isSupported;}\n\n\nmodule.exports = isEventSupported;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature =\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM ||\n capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/isEventSupported.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/server/ReactMarkupChecksum.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar adler32=require('adler32');\n\nvar ReactMarkupChecksum={\nCHECKSUM_ATTR_NAME:'data-react-checksum',\n\n\n\n\n\naddChecksumToMarkup:function(markup){\nvar checksum=adler32(markup);\nreturn markup.replace(\n'>',\n' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\">');},\n\n\n\n\n\n\n\n\ncanReuseMarkup:function(markup,element){\nvar existingChecksum=element.getAttribute(\nReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\nexistingChecksum = existingChecksum && parseInt(existingChecksum,10);\nvar markupChecksum=adler32(markup);\nreturn markupChecksum === existingChecksum;}};\n\n\n\nmodule.exports = ReactMarkupChecksum;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMarkupChecksum\n */\n\n'use strict';\n\nvar adler32 = require('adler32');\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function(markup) {\n var checksum = adler32(markup);\n return markup.replace(\n '>',\n ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\">'\n );\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function(markup, element) {\n var existingChecksum = element.getAttribute(\n ReactMarkupChecksum.CHECKSUM_ATTR_NAME\n );\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/server/ReactMarkupChecksum.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/adler32.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar MOD=65521;\n\n\n\n\n\nfunction adler32(data){\nvar a=1;\nvar b=0;\nfor(var i=0;i < data.length;i++) {\na = (a + data.charCodeAt(i)) % MOD;\nb = (b + a) % MOD;}\n\nreturn a | b << 16;}\n\n\nmodule.exports = adler32;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule adler32\n */\n\n/* jslint bitwise:true */\n\n'use strict';\n\nvar MOD = 65521;\n\n// This is a clean-room implementation of adler32 designed for detecting\n// if markup is not what we expect it to be. It does not need to be\n// cryptographically strong, only reasonably good at detecting if markup\n// generated on the server is different than that on the client.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n for (var i = 0; i < data.length; i++) {\n a = (a + data.charCodeAt(i)) % MOD;\n b = (b + a) % MOD;\n }\n return a | (b << 16);\n}\n\nmodule.exports = adler32;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/adler32.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/containsNode.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\nisTextNode=require('isTextNode');\n\n\n\n\n\n\n\n\n\n\nfunction containsNode(outerNode,innerNode){\nif(!outerNode || !innerNode){\nreturn false;}else \nif(outerNode === innerNode){\nreturn true;}else \nif(isTextNode(outerNode)){\nreturn false;}else \nif(isTextNode(innerNode)){\nreturn containsNode(outerNode,innerNode.parentNode);}else \nif(outerNode.contains){\nreturn outerNode.contains(innerNode);}else \nif(outerNode.compareDocumentPosition){\nreturn !!(outerNode.compareDocumentPosition(innerNode) & 16);}else \n{\nreturn false;}}\n\n\n\nmodule.exports = containsNode;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule containsNode\n * @typechecks\n */\n\nvar isTextNode = require('isTextNode');\n\n/*jslint bitwise:true */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n *\n * @param {?DOMNode} outerNode Outer DOM node.\n * @param {?DOMNode} innerNode Inner DOM node.\n * @return {boolean} True if `outerNode` contains or is `innerNode`.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if (outerNode.contains) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/containsNode.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/isTextNode.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\nisNode=require('isNode');\n\n\n\n\n\nfunction isTextNode(object){\nreturn isNode(object) && object.nodeType == 3;}\n\n\nmodule.exports = isTextNode;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isTextNode\n * @typechecks\n */\n\nvar isNode = require('isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/isTextNode.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/getReactRootElementInContainer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar DOC_NODE_TYPE=9;\n\n\n\n\n\n\nfunction getReactRootElementInContainer(container){\nif(!container){\nreturn null;}\n\n\nif(container.nodeType === DOC_NODE_TYPE){\nreturn container.documentElement;}else \n{\nreturn container.firstChild;}}\n\n\n\nmodule.exports = getReactRootElementInContainer;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getReactRootElementInContainer\n */\n\n'use strict';\n\nvar DOC_NODE_TYPE = 9;\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nmodule.exports = getReactRootElementInContainer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/getReactRootElementInContainer.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/setInnerHTML.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ExecutionEnvironment=require('ExecutionEnvironment');\n\nvar WHITESPACE_TEST=/^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST=/<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\n\n\n\n\n\n\n\n\nvar setInnerHTML=function(node,html){\nnode.innerHTML = html;};\n\n\n\nif(typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction){\nsetInnerHTML = function(node,html){\nMSApp.execUnsafeLocalFunction(function(){\nnode.innerHTML = html;});};}\n\n\n\n\nif(ExecutionEnvironment.canUseDOM){\n\n\n\n\n\n\nvar testElement=document.createElement('div');\ntestElement.innerHTML = ' ';\nif(testElement.innerHTML === ''){\nsetInnerHTML = function(node,html){\n\n\n\n\n\nif(node.parentNode){\nnode.parentNode.replaceChild(node,node);}\n\n\n\n\n\n\nif(WHITESPACE_TEST.test(html) || \nhtml[0] === '<' && NONVISIBLE_TEST.test(html)){\n\n\nnode.innerHTML = '\\uFEFF' + html;\n\n\n\nvar textNode=node.firstChild;\nif(textNode.data.length === 1){\nnode.removeChild(textNode);}else \n{\ntextNode.deleteData(0,1);}}else \n\n{\nnode.innerHTML = html;}};}}\n\n\n\n\n\nmodule.exports = setInnerHTML;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule setInnerHTML\n */\n\n/* globals MSApp */\n\n'use strict';\n\nvar ExecutionEnvironment = require('ExecutionEnvironment');\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = function(node, html) {\n node.innerHTML = html;\n};\n\n// Win8 apps: Allow all html to be inserted\nif (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n setInnerHTML = function(node, html) {\n MSApp.execUnsafeLocalFunction(function() {\n node.innerHTML = html;\n });\n };\n}\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function(node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) ||\n html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n node.innerHTML = '\\uFEFF' + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n}\n\nmodule.exports = setInnerHTML;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/setInnerHTML.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AppStateIOS/AppStateIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Map=require('Map');\nvar NativeModules=require('NativeModules');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTAppState=NativeModules.AppState;\n\nvar logError=require('logError');\nvar invariant=require('invariant');\n\nvar _eventHandlers={\nchange:new Map(),\nmemoryWarning:new Map()};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AppStateIOS={\n\n\n\n\n\naddEventListener:function(\ntype,\nhandler)\n{\ninvariant(\n['change','memoryWarning'].indexOf(type) !== -1,\n'Trying to subscribe to unknown event: \"%s\"',type);\n\nif(type === 'change'){\n_eventHandlers[type].set(handler,RCTDeviceEventEmitter.addListener(\n'appStateDidChange',\nfunction(appStateData){\nhandler(appStateData.app_state);}));}else \n\n\nif(type === 'memoryWarning'){\n_eventHandlers[type].set(handler,RCTDeviceEventEmitter.addListener(\n'memoryWarning',\nhandler));}},\n\n\n\n\n\n\n\nremoveEventListener:function(\ntype,\nhandler)\n{\ninvariant(\n['change','memoryWarning'].indexOf(type) !== -1,\n'Trying to remove listener for unknown event: \"%s\"',type);\n\nif(!_eventHandlers[type].has(handler)){\nreturn;}\n\n_eventHandlers[type].get(handler).remove();\n_eventHandlers[type].delete(handler);},\n\n\n\n\n\n\ncurrentState:'active'};\n\n\n\nRCTDeviceEventEmitter.addListener(\n'appStateDidChange',\nfunction(appStateData){\nAppStateIOS.currentState = appStateData.app_state;});\n\n\n\nRCTAppState.getCurrentAppState(\nfunction(appStateData){\nAppStateIOS.currentState = appStateData.app_state;},\n\nlogError);\n\n\nmodule.exports = AppStateIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AppStateIOS\n * @flow\n */\n'use strict';\n\nvar Map = require('Map');\nvar NativeModules = require('NativeModules');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTAppState = NativeModules.AppState;\n\nvar logError = require('logError');\nvar invariant = require('invariant');\n\nvar _eventHandlers = {\n change: new Map(),\n memoryWarning: new Map(),\n};\n\n/**\n * `AppStateIOS` can tell you if the app is in the foreground or background,\n * and notify you when the state changes.\n *\n * AppStateIOS is frequently used to determine the intent and proper behavior when\n * handling push notifications.\n *\n * ### iOS App States\n *\n * - `active` - The app is running in the foreground\n * - `background` - The app is running in the background. The user is either\n * in another app or on the home screen\n * - `inactive` - This is a transition state that currently never happens for\n * typical React Native apps.\n *\n * For more information, see\n * [Apple's documentation](https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html)\n *\n * ### Basic Usage\n *\n * To see the current state, you can check `AppStateIOS.currentState`, which\n * will be kept up-to-date. However, `currentState` will be null at launch\n * while `AppStateIOS` retrieves it over the bridge.\n *\n * ```\n * getInitialState: function() {\n * return {\n * currentAppState: AppStateIOS.currentState,\n * };\n * },\n * componentDidMount: function() {\n * AppStateIOS.addEventListener('change', this._handleAppStateChange);\n * },\n * componentWillUnmount: function() {\n * AppStateIOS.removeEventListener('change', this._handleAppStateChange);\n * },\n * _handleAppStateChange: function(currentAppState) {\n * this.setState({ currentAppState, });\n * },\n * render: function() {\n * return (\n * <Text>Current state is: {this.state.currentAppState}</Text>\n * );\n * },\n * ```\n *\n * This example will only ever appear to say \"Current state is: active\" because\n * the app is only visible to the user when in the `active` state, and the null\n * state will happen only momentarily.\n */\n\nvar AppStateIOS = {\n\n /**\n * Add a handler to AppState changes by listening to the `change` event type\n * and providing the handler\n */\n addEventListener: function(\n type: string,\n handler: Function\n ) {\n invariant(\n ['change', 'memoryWarning'].indexOf(type) !== -1,\n 'Trying to subscribe to unknown event: \"%s\"', type\n );\n if (type === 'change') {\n _eventHandlers[type].set(handler, RCTDeviceEventEmitter.addListener(\n 'appStateDidChange',\n (appStateData) => {\n handler(appStateData.app_state);\n }\n ));\n } else if (type === 'memoryWarning') {\n _eventHandlers[type].set(handler, RCTDeviceEventEmitter.addListener(\n 'memoryWarning',\n handler\n ));\n }\n },\n\n /**\n * Remove a handler by passing the `change` event type and the handler\n */\n removeEventListener: function(\n type: string,\n handler: Function\n ) {\n invariant(\n ['change', 'memoryWarning'].indexOf(type) !== -1,\n 'Trying to remove listener for unknown event: \"%s\"', type\n );\n if (!_eventHandlers[type].has(handler)) {\n return;\n }\n _eventHandlers[type].get(handler).remove();\n _eventHandlers[type].delete(handler);\n },\n\n // TODO: getCurrentAppState callback seems to be called at a really late stage\n // after app launch. Trying to get currentState when mounting App component\n // will likely to have the initial value here.\n // Initialize to 'active' instead of null.\n currentState: ('active' : ?string),\n\n};\n\nRCTDeviceEventEmitter.addListener(\n 'appStateDidChange',\n (appStateData) => {\n AppStateIOS.currentState = appStateData.app_state;\n }\n);\n\nRCTAppState.getCurrentAppState(\n (appStateData) => {\n AppStateIOS.currentState = appStateData.app_state;\n },\n logError\n);\n\nmodule.exports = AppStateIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AppStateIOS/AppStateIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CameraRoll/CameraRoll.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\nvar RCTCameraRollManager=require('NativeModules').CameraRollManager;\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar deepFreezeAndThrowOnMutationInDev=\nrequire('deepFreezeAndThrowOnMutationInDev');\nvar invariant=require('invariant');\n\nvar GROUP_TYPES_OPTIONS=[\n'Album',\n'All',\n'Event',\n'Faces',\n'Library',\n'PhotoStream',\n'SavedPhotos'];\n\n\nvar ASSET_TYPE_OPTIONS=[\n'All',\n'Videos',\n'Photos'];\n\n\n\n\ndeepFreezeAndThrowOnMutationInDev(GROUP_TYPES_OPTIONS);\ndeepFreezeAndThrowOnMutationInDev(ASSET_TYPE_OPTIONS);\n\n\n\n\nvar getPhotosParamChecker=createStrictShapeTypeChecker({\n\n\n\n\nfirst:ReactPropTypes.number.isRequired,\n\n\n\n\n\nafter:ReactPropTypes.string,\n\n\n\n\ngroupTypes:ReactPropTypes.oneOf(GROUP_TYPES_OPTIONS),\n\n\n\n\n\ngroupName:ReactPropTypes.string,\n\n\n\n\nassetType:ReactPropTypes.oneOf(ASSET_TYPE_OPTIONS),\n\n\n\n\nmimeTypes:ReactPropTypes.arrayOf(ReactPropTypes.string)});\n\n\n\n\n\nvar getPhotosReturnChecker=createStrictShapeTypeChecker({\nedges:ReactPropTypes.arrayOf(createStrictShapeTypeChecker({\nnode:createStrictShapeTypeChecker({\ntype:ReactPropTypes.string.isRequired,\ngroup_name:ReactPropTypes.string.isRequired,\nimage:createStrictShapeTypeChecker({\nuri:ReactPropTypes.string.isRequired,\nheight:ReactPropTypes.number.isRequired,\nwidth:ReactPropTypes.number.isRequired,\nisStored:ReactPropTypes.bool}).\nisRequired,\ntimestamp:ReactPropTypes.number.isRequired,\nlocation:createStrictShapeTypeChecker({\nlatitude:ReactPropTypes.number,\nlongitude:ReactPropTypes.number,\naltitude:ReactPropTypes.number,\nheading:ReactPropTypes.number,\nspeed:ReactPropTypes.number})}).\n\nisRequired})).\nisRequired,\npage_info:createStrictShapeTypeChecker({\nhas_next_page:ReactPropTypes.bool.isRequired,\nstart_cursor:ReactPropTypes.string,\nend_cursor:ReactPropTypes.string}).\nisRequired});var \n\n\nCameraRoll=(function(){function CameraRoll(){_classCallCheck(this,CameraRoll);}_createClass(CameraRoll,null,[{key:'saveImageWithTag',value:\n\n\n\n\n\n\n\n\n\n\n\nfunction saveImageWithTag(tag,successCallback,errorCallback){\ninvariant(\ntypeof tag === 'string',\n'CameraRoll.saveImageWithTag tag must be a valid string.');\n\nRCTCameraRollManager.saveImageWithTag(\ntag,\nfunction(imageTag){\nsuccessCallback && successCallback(imageTag);},\n\nfunction(errorMessage){\nerrorCallback && errorCallback(errorMessage);});}},{key:'getPhotos',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getPhotos(params,callback,errorCallback){\nvar metaCallback=callback;\nif(__DEV__){\ngetPhotosParamChecker({params:params},'params','CameraRoll.getPhotos');\ninvariant(\ntypeof callback === 'function',\n'CameraRoll.getPhotos callback must be a valid function.');\n\ninvariant(\ntypeof errorCallback === 'function',\n'CameraRoll.getPhotos errorCallback must be a valid function.');}\n\n\nif(__DEV__){\nmetaCallback = function(response){\ngetPhotosReturnChecker(\n{response:response},\n'response',\n'CameraRoll.getPhotos callback');\n\ncallback(response);};}\n\n\nRCTCameraRollManager.getPhotos(params,metaCallback,errorCallback);}}]);return CameraRoll;})();\n\n\n\nCameraRoll.GroupTypesOptions = GROUP_TYPES_OPTIONS;\nCameraRoll.AssetTypeOptions = ASSET_TYPE_OPTIONS;\n\nmodule.exports = CameraRoll;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CameraRoll\n * @flow\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\nvar RCTCameraRollManager = require('NativeModules').CameraRollManager;\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar deepFreezeAndThrowOnMutationInDev =\n require('deepFreezeAndThrowOnMutationInDev');\nvar invariant = require('invariant');\n\nvar GROUP_TYPES_OPTIONS = [\n 'Album',\n 'All',\n 'Event',\n 'Faces',\n 'Library',\n 'PhotoStream',\n 'SavedPhotos', // default\n];\n\nvar ASSET_TYPE_OPTIONS = [\n 'All',\n 'Videos',\n 'Photos', // default\n];\n\n\n// Flow treats Object and Array as disjoint types, currently.\ndeepFreezeAndThrowOnMutationInDev((GROUP_TYPES_OPTIONS: any));\ndeepFreezeAndThrowOnMutationInDev((ASSET_TYPE_OPTIONS: any));\n\n/**\n * Shape of the param arg for the `getPhotos` function.\n */\nvar getPhotosParamChecker = createStrictShapeTypeChecker({\n /**\n * The number of photos wanted in reverse order of the photo application\n * (i.e. most recent first for SavedPhotos).\n */\n first: ReactPropTypes.number.isRequired,\n\n /**\n * A cursor that matches `page_info { end_cursor }` returned from a previous\n * call to `getPhotos`\n */\n after: ReactPropTypes.string,\n\n /**\n * Specifies which group types to filter the results to.\n */\n groupTypes: ReactPropTypes.oneOf(GROUP_TYPES_OPTIONS),\n\n /**\n * Specifies filter on group names, like 'Recent Photos' or custom album\n * titles.\n */\n groupName: ReactPropTypes.string,\n\n /**\n * Specifies filter on asset type\n */\n assetType: ReactPropTypes.oneOf(ASSET_TYPE_OPTIONS),\n\n /**\n * Filter by mimetype (e.g. image/jpeg).\n */\n mimeTypes: ReactPropTypes.arrayOf(ReactPropTypes.string),\n});\n\n/**\n * Shape of the return value of the `getPhotos` function.\n */\nvar getPhotosReturnChecker = createStrictShapeTypeChecker({\n edges: ReactPropTypes.arrayOf(createStrictShapeTypeChecker({\n node: createStrictShapeTypeChecker({\n type: ReactPropTypes.string.isRequired,\n group_name: ReactPropTypes.string.isRequired,\n image: createStrictShapeTypeChecker({\n uri: ReactPropTypes.string.isRequired,\n height: ReactPropTypes.number.isRequired,\n width: ReactPropTypes.number.isRequired,\n isStored: ReactPropTypes.bool,\n }).isRequired,\n timestamp: ReactPropTypes.number.isRequired,\n location: createStrictShapeTypeChecker({\n latitude: ReactPropTypes.number,\n longitude: ReactPropTypes.number,\n altitude: ReactPropTypes.number,\n heading: ReactPropTypes.number,\n speed: ReactPropTypes.number,\n }),\n }).isRequired,\n })).isRequired,\n page_info: createStrictShapeTypeChecker({\n has_next_page: ReactPropTypes.bool.isRequired,\n start_cursor: ReactPropTypes.string,\n end_cursor: ReactPropTypes.string,\n }).isRequired,\n});\n\nclass CameraRoll {\n\n static GroupTypesOptions: Array<string>;\n static AssetTypeOptions: Array<string>;\n /**\n * Saves the image with tag `tag` to the camera roll.\n *\n * @param {string} tag - Can be any of the three kinds of tags we accept:\n * 1. URL\n * 2. assets-library tag\n * 3. tag returned from storing an image in memory\n */\n static saveImageWithTag(tag, successCallback, errorCallback) {\n invariant(\n typeof tag === 'string',\n 'CameraRoll.saveImageWithTag tag must be a valid string.'\n );\n RCTCameraRollManager.saveImageWithTag(\n tag,\n (imageTag) => {\n successCallback && successCallback(imageTag);\n },\n (errorMessage) => {\n errorCallback && errorCallback(errorMessage);\n });\n }\n\n /**\n * Invokes `callback` with photo identifier objects from the local camera\n * roll of the device matching shape defined by `getPhotosReturnChecker`.\n *\n * @param {object} params - See `getPhotosParamChecker`.\n * @param {function} callback - Invoked with arg of shape defined by\n * `getPhotosReturnChecker` on success.\n * @param {function} errorCallback - Invoked with error message on error.\n */\n static getPhotos(params, callback, errorCallback) {\n var metaCallback = callback;\n if (__DEV__) {\n getPhotosParamChecker({params}, 'params', 'CameraRoll.getPhotos');\n invariant(\n typeof callback === 'function',\n 'CameraRoll.getPhotos callback must be a valid function.'\n );\n invariant(\n typeof errorCallback === 'function',\n 'CameraRoll.getPhotos errorCallback must be a valid function.'\n );\n }\n if (__DEV__) {\n metaCallback = (response) => {\n getPhotosReturnChecker(\n {response},\n 'response',\n 'CameraRoll.getPhotos callback'\n );\n callback(response);\n };\n }\n RCTCameraRollManager.getPhotos(params, metaCallback, errorCallback);\n }\n}\n\nCameraRoll.GroupTypesOptions = GROUP_TYPES_OPTIONS;\nCameraRoll.AssetTypeOptions = ASSET_TYPE_OPTIONS;\n\nmodule.exports = CameraRoll;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CameraRoll/CameraRoll.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImagePickerIOS.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTImagePicker=require('NativeModules').ImagePickerIOS;\n\nvar ImagePickerIOS={\ncanRecordVideos:function(callback){\nreturn RCTImagePicker.canRecordVideos(callback);},\n\ncanUseCamera:function(callback){\nreturn RCTImagePicker.canUseCamera(callback);},\n\nopenCameraDialog:function(config,successCallback,cancelCallback){\nconfig = _extends({\nvideoMode:false},\nconfig);\n\nreturn RCTImagePicker.openCameraDialog(config,successCallback,cancelCallback);},\n\nopenSelectDialog:function(config,successCallback,cancelCallback){\nconfig = _extends({\nshowImages:true,\nshowVideos:false},\nconfig);\n\nreturn RCTImagePicker.openSelectDialog(config,successCallback,cancelCallback);}};\n\n\n\nmodule.exports = ImagePickerIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ImagePickerIOS\n * @flow\n */\n'use strict';\n\nvar RCTImagePicker = require('NativeModules').ImagePickerIOS;\n\nvar ImagePickerIOS = {\n canRecordVideos: function(callback: Function) {\n return RCTImagePicker.canRecordVideos(callback);\n },\n canUseCamera: function(callback: Function) {\n return RCTImagePicker.canUseCamera(callback);\n },\n openCameraDialog: function(config: Object, successCallback: Function, cancelCallback: Function) {\n config = {\n videoMode: false,\n ...config,\n }\n return RCTImagePicker.openCameraDialog(config, successCallback, cancelCallback);\n },\n openSelectDialog: function(config: Object, successCallback: Function, cancelCallback: Function) {\n config = {\n showImages: true,\n showVideos: false,\n ...config,\n }\n return RCTImagePicker.openSelectDialog(config, successCallback, cancelCallback);\n },\n};\n\nmodule.exports = ImagePickerIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImagePickerIOS.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/LayoutAnimation.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PropTypes=require('ReactPropTypes');\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar keyMirror=require('keyMirror');\n\nvar TypesEnum={\nspring:true,\nlinear:true,\neaseInEaseOut:true,\neaseIn:true,\neaseOut:true,\nkeyboard:true};\n\nvar Types=keyMirror(TypesEnum);\n\nvar PropertiesEnum={\nopacity:true,\nscaleXY:true};\n\nvar Properties=keyMirror(PropertiesEnum);\n\nvar animChecker=createStrictShapeTypeChecker({\nduration:PropTypes.number,\ndelay:PropTypes.number,\nspringDamping:PropTypes.number,\ninitialVelocity:PropTypes.number,\ntype:PropTypes.oneOf(\nObject.keys(Types)),\n\nproperty:PropTypes.oneOf(\nObject.keys(Properties))});\n\n\n\n\n\n\n\n\n\n\n\n\nvar configChecker=createStrictShapeTypeChecker({\nduration:PropTypes.number.isRequired,\ncreate:animChecker,\nupdate:animChecker,\ndelete:animChecker});\n\n\n\n\n\n\n\n\n\nfunction configureNext(config,onAnimationDidEnd,onError){\nconfigChecker({config:config},'config','LayoutAnimation.configureNext');\nRCTUIManager.configureNextLayoutAnimation(config,onAnimationDidEnd,onError);}\n\n\nfunction create(duration,type,creationProp){\nreturn {\nduration:duration,\ncreate:{\ntype:type,\nproperty:creationProp},\n\nupdate:{\ntype:type}};}\n\n\n\n\nvar Presets={\neaseInEaseOut:create(\n300,Types.easeInEaseOut,Properties.opacity),\n\nlinear:create(\n500,Types.linear,Properties.opacity),\n\nspring:{\nduration:700,\ncreate:{\ntype:Types.linear,\nproperty:Properties.opacity},\n\nupdate:{\ntype:Types.spring,\nspringDamping:0.4}}};\n\n\n\n\nvar LayoutAnimation={\nconfigureNext:configureNext,\ncreate:create,\nTypes:Types,\nProperties:Properties,\nconfigChecker:configChecker,\nPresets:Presets,\neaseInEaseOut:configureNext.bind(\nnull,Presets.easeInEaseOut),\n\nlinear:configureNext.bind(\nnull,Presets.linear),\n\nspring:configureNext.bind(\nnull,Presets.spring)};\n\n\n\nmodule.exports = LayoutAnimation;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LayoutAnimation\n * @flow\n */\n'use strict';\n\nvar PropTypes = require('ReactPropTypes');\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar keyMirror = require('keyMirror');\n\nvar TypesEnum = {\n spring: true,\n linear: true,\n easeInEaseOut: true,\n easeIn: true,\n easeOut: true,\n keyboard: true,\n};\nvar Types = keyMirror(TypesEnum);\n\nvar PropertiesEnum = {\n opacity: true,\n scaleXY: true,\n};\nvar Properties = keyMirror(PropertiesEnum);\n\nvar animChecker = createStrictShapeTypeChecker({\n duration: PropTypes.number,\n delay: PropTypes.number,\n springDamping: PropTypes.number,\n initialVelocity: PropTypes.number,\n type: PropTypes.oneOf(\n Object.keys(Types)\n ),\n property: PropTypes.oneOf( // Only applies to create/delete\n Object.keys(Properties)\n ),\n});\n\ntype Anim = {\n duration?: number;\n delay?: number;\n springDamping?: number;\n initialVelocity?: number;\n type?: $Enum<typeof TypesEnum>;\n property?: $Enum<typeof PropertiesEnum>;\n}\n\nvar configChecker = createStrictShapeTypeChecker({\n duration: PropTypes.number.isRequired,\n create: animChecker,\n update: animChecker,\n delete: animChecker,\n});\n\ntype Config = {\n duration: number;\n create?: Anim;\n update?: Anim;\n delete?: Anim;\n}\n\nfunction configureNext(config: Config, onAnimationDidEnd?: Function, onError?: Function) {\n configChecker({config}, 'config', 'LayoutAnimation.configureNext');\n RCTUIManager.configureNextLayoutAnimation(config, onAnimationDidEnd, onError);\n}\n\nfunction create(duration: number, type, creationProp): Config {\n return {\n duration,\n create: {\n type,\n property: creationProp,\n },\n update: {\n type,\n },\n };\n}\n\nvar Presets = {\n easeInEaseOut: create(\n 300, Types.easeInEaseOut, Properties.opacity\n ),\n linear: create(\n 500, Types.linear, Properties.opacity\n ),\n spring: {\n duration: 700,\n create: {\n type: Types.linear,\n property: Properties.opacity,\n },\n update: {\n type: Types.spring,\n springDamping: 0.4,\n },\n },\n};\n\nvar LayoutAnimation = {\n configureNext,\n create,\n Types,\n Properties,\n configChecker: configChecker,\n Presets,\n easeInEaseOut: configureNext.bind(\n null, Presets.easeInEaseOut\n ),\n linear: configureNext.bind(\n null, Presets.linear\n ),\n spring: configureNext.bind(\n null, Presets.spring\n ),\n};\n\nmodule.exports = LayoutAnimation;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/LayoutAnimation.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/LinkingIOS/LinkingIOS.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTLinkingManager=require('NativeModules').LinkingManager;\nvar Map=require('Map');\nvar invariant=require('invariant');\n\nvar _notifHandlers=new Map();\nvar _initialURL=RCTLinkingManager && \nRCTLinkingManager.initialURL;\n\nvar DEVICE_NOTIF_EVENT='openURL';var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nLinkingIOS=(function(){function LinkingIOS(){_classCallCheck(this,LinkingIOS);}_createClass(LinkingIOS,null,[{key:'addEventListener',value:\n\n\n\n\nfunction addEventListener(type,handler){\ninvariant(\ntype === 'url',\n'LinkingIOS only supports `url` events');\n\nvar listener=RCTDeviceEventEmitter.addListener(\nDEVICE_NOTIF_EVENT,\nhandler);\n\n_notifHandlers.set(handler,listener);}},{key:'removeEventListener',value:\n\n\n\n\n\nfunction removeEventListener(type,handler){\ninvariant(\ntype === 'url',\n'LinkingIOS only supports `url` events');\n\nvar listener=_notifHandlers.get(handler);\nif(!listener){\nreturn;}\n\nlistener.remove();\n_notifHandlers.delete(handler);}},{key:'openURL',value:\n\n\n\n\n\nfunction openURL(url){\ninvariant(\ntypeof url === 'string',\n'Invalid url: should be a string');\n\nRCTLinkingManager.openURL(url);}},{key:'canOpenURL',value:\n\n\n\n\n\n\nfunction canOpenURL(url,callback){\ninvariant(\ntypeof url === 'string',\n'Invalid url: should be a string');\n\ninvariant(\ntypeof callback === 'function',\n'A valid callback function is required');\n\nRCTLinkingManager.canOpenURL(url,callback);}},{key:'popInitialURL',value:\n\n\n\n\n\n\nfunction popInitialURL(){\nvar initialURL=_initialURL;\n_initialURL = null;\nreturn initialURL;}}]);return LinkingIOS;})();\n\n\n\nmodule.exports = LinkingIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LinkingIOS\n * @flow\n */\n'use strict';\n\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTLinkingManager = require('NativeModules').LinkingManager;\nvar Map = require('Map');\nvar invariant = require('invariant');\n\nvar _notifHandlers = new Map();\nvar _initialURL = RCTLinkingManager &&\n RCTLinkingManager.initialURL;\n\nvar DEVICE_NOTIF_EVENT = 'openURL';\n\n/**\n * `LinkingIOS` gives you a general interface to interact with both, incoming\n * and outgoing app links.\n *\n * ### Basic Usage\n *\n * #### Handling deep links\n *\n * If your app was launched from a external url registered to your app you can\n * access and handle it from any component you want with\n *\n * ```\n * componentDidMount() {\n * var url = LinkingIOS.popInitialURL();\n * }\n * ```\n *\n * In case you also want to listen to incoming app links during your app's\n * execution you'll need to add the following lines to you `*AppDelegate.m`:\n *\n * ```\n * - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {\n * return [RCTLinkingManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation];\n * }\n * ```\n *\n * And then on your React component you'll be able to listen to the events on\n * `LinkingIOS` as follows\n *\n * ```\n * componentDidMount() {\n * LinkingIOS.addEventListener('url', this._handleOpenURL);\n * },\n * componentWillUnmount() {\n * LinkingIOS.removeEventListener('url', this._handleOpenURL);\n * },\n * _handleOpenURL(event) {\n * console.log(event.url);\n * }\n * ```\n *\n * #### Triggering App links\n *\n * To trigger an app link (browser, email or custom schemas) you call\n *\n * ```\n * LinkingIOS.openURL(url)\n * ```\n *\n * If you want to check if any installed app can handle a given url beforehand you can call\n * ```\n * LinkingIOS.canOpenURL(url, (supported) => {\n * if (!supported) {\n * AlertIOS.alert('Can\\'t handle url: ' + url);\n * } else {\n * LinkingIOS.openURL(url);\n * }\n * });\n * ```\n */\nclass LinkingIOS {\n /**\n * Add a handler to LinkingIOS changes by listening to the `url` event type\n * and providing the handler\n */\n static addEventListener(type: string, handler: Function) {\n invariant(\n type === 'url',\n 'LinkingIOS only supports `url` events'\n );\n var listener = RCTDeviceEventEmitter.addListener(\n DEVICE_NOTIF_EVENT,\n handler\n );\n _notifHandlers.set(handler, listener);\n }\n\n /**\n * Remove a handler by passing the `url` event type and the handler\n */\n static removeEventListener(type: string, handler: Function ) {\n invariant(\n type === 'url',\n 'LinkingIOS only supports `url` events'\n );\n var listener = _notifHandlers.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _notifHandlers.delete(handler);\n }\n\n /**\n * Try to open the given `url` with any of the installed apps.\n */\n static openURL(url: string) {\n invariant(\n typeof url === 'string',\n 'Invalid url: should be a string'\n );\n RCTLinkingManager.openURL(url);\n }\n\n /**\n * Determine wether or not the an installed app can handle a given `url`\n * The callback function will be called with `bool supported` as the only argument\n */\n static canOpenURL(url: string, callback: Function) {\n invariant(\n typeof url === 'string',\n 'Invalid url: should be a string'\n );\n invariant(\n typeof callback === 'function',\n 'A valid callback function is required'\n );\n RCTLinkingManager.canOpenURL(url, callback);\n }\n\n /**\n * If the app launch was triggered by an app link, it will pop the link url,\n * otherwise it will return `null`\n */\n static popInitialURL(): ?string {\n var initialURL = _initialURL;\n _initialURL = null;\n return initialURL;\n }\n}\n\nmodule.exports = LinkingIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/LinkingIOS/LinkingIOS.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/NetInfo.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Map=require('Map');\nvar NativeModules=require('NativeModules');\nvar Platform=require('Platform');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\n\nif(Platform.OS === 'ios'){\nvar RCTNetInfo=NativeModules.Reachability;}else \nif(Platform.OS === 'android'){\nvar RCTNetInfo=NativeModules.NetInfo;}\n\n\nvar DEVICE_REACHABILITY_EVENT='reachabilityDidChange';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _subscriptions=new Map();\n\nvar NetInfo={\naddEventListener:function(\neventName,\nhandler)\n{\nvar listener=RCTDeviceEventEmitter.addListener(\nDEVICE_REACHABILITY_EVENT,\nfunction(appStateData){\nhandler(appStateData.network_reachability);});\n\n\n_subscriptions.set(handler,listener);},\n\n\nremoveEventListener:function(\neventName,\nhandler)\n{\nvar listener=_subscriptions.get(handler);\nif(!listener){\nreturn;}\n\nlistener.remove();\n_subscriptions.delete(handler);},\n\n\nfetch:function(){\nreturn new Promise(function(resolve,reject){\nRCTNetInfo.getCurrentReachability(\nfunction(resp){\nresolve(resp.network_reachability);},\n\nreject);});},\n\n\n\n\nisConnected:{},\n\nisConnectionMetered:{}};\n\n\nif(Platform.OS === 'ios'){\nvar _isConnected=function(\nreachability)\n{\nreturn reachability !== 'none' && \nreachability !== 'unknown';};}else \n\nif(Platform.OS === 'android'){\nvar _isConnected=function(\nconnectionType)\n{\nreturn connectionType !== 'NONE' && connectionType !== 'UNKNOWN';};}\n\n\n\nvar _isConnectedSubscriptions=new Map();\n\nNetInfo.isConnected = {\naddEventListener:function(\neventName,\nhandler)\n{\nvar listener=function(connection){\nhandler(_isConnected(connection));};\n\n_isConnectedSubscriptions.set(handler,listener);\nNetInfo.addEventListener(\neventName,\nlistener);},\n\n\n\nremoveEventListener:function(\neventName,\nhandler)\n{\nvar listener=_isConnectedSubscriptions.get(handler);\nNetInfo.removeEventListener(\neventName,\nlistener);\n\n_isConnectedSubscriptions.delete(handler);},\n\n\nfetch:function(){\nreturn NetInfo.fetch().then(\nfunction(connection){return _isConnected(connection);});}};\n\n\n\n\nif(Platform.OS === 'android'){\nNetInfo.isConnectionMetered = function(callback){\nRCTNetInfo.isConnectionMetered(function(_isMetered){\ncallback(_isMetered);});};}\n\n\n\n\nmodule.exports = NetInfo;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule NetInfo\n * @flow\n */\n'use strict';\n\nvar Map = require('Map');\nvar NativeModules = require('NativeModules');\nvar Platform = require('Platform');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\n\nif (Platform.OS === 'ios') {\n var RCTNetInfo = NativeModules.Reachability;\n} else if (Platform.OS === 'android') {\n var RCTNetInfo = NativeModules.NetInfo;\n}\n\nvar DEVICE_REACHABILITY_EVENT = 'reachabilityDidChange';\n\ntype ChangeEventName = $Enum<{\n change: string;\n}>;\n\ntype ReachabilityStateIOS = $Enum<{\n cell: string;\n none: string;\n unknown: string;\n wifi: string;\n}>;\n\ntype ConnectivityStateAndroid = $Enum<{\n NONE: string;\n MOBILE: string;\n WIFI: string;\n MOBILE_MMS: string;\n MOBILE_SUPL: string;\n MOBILE_DUN: string;\n MOBILE_HIPRI: string;\n WIMAX: string;\n BLUETOOTH: string;\n DUMMY: string;\n ETHERNET: string;\n MOBILE_FOTA: string;\n MOBILE_IMS: string;\n MOBILE_CBS: string;\n WIFI_P2P: string;\n MOBILE_IA: string;\n MOBILE_EMERGENCY: string;\n PROXY: string;\n VPN: string;\n UNKNOWN: string;\n}>;\n\n/**\n * NetInfo exposes info about online/offline status\n *\n * ```\n * NetInfo.fetch().done((reach) => {\n * console.log('Initial: ' + reach);\n * });\n * function handleFirstConnectivityChange(reach) {\n * console.log('First change: ' + reach);\n * NetInfo.removeEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * }\n * NetInfo.addEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * ```\n *\n * ### IOS\n *\n * Asynchronously determine if the device is online and on a cellular network.\n *\n * - `none` - device is offline\n * - `wifi` - device is online and connected via wifi, or is the iOS simulator\n * - `cell` - device is connected via Edge, 3G, WiMax, or LTE\n * - `unknown` - error case and the network status is unknown\n *\n * ### Android\n *\n * Asynchronously determine if the device is connected and details about that connection.\n *\n * Android Connectivity Types\n * - `NONE` - device is offline\n * - `BLUETOOTH` - The Bluetooth data connection.\n * - `DUMMY` - Dummy data connection.\n * - `ETHERNET` - The Ethernet data connection.\n * - `MOBILE` - The Mobile data connection.\n * - `MOBILE_DUN` - A DUN-specific Mobile data connection.\n * - `MOBILE_HIPRI` - A High Priority Mobile data connection.\n * - `MOBILE_MMS` - An MMS-specific Mobile data connection.\n * - `MOBILE_SUPL` - A SUPL-specific Mobile data connection.\n * - `VPN` - A virtual network using one or more native bearers. Requires API Level 21\n * - `WIFI` - The WIFI data connection.\n * - `WIMAX` - The WiMAX data connection.\n * - `UNKNOWN` - Unknown data connection.\n * The rest ConnectivityStates are hidden by the Android API, but can be used if necessary.\n *\n * ### isConnectionMetered\n *\n * Available on Android. Detect if the current active connection is metered or not. A network is\n * classified as metered when the user is sensitive to heavy data usage on that connection due to\n * monetary costs, data limitations or battery/performance issues.\n *\n * NetInfo.isConnectionMetered((isConnectionMetered) => {\n * console.log('Connection is ' + (isConnectionMetered ? 'Metered' : 'Not Metered'));\n * });\n * ```\n *\n * ### isConnected\n *\n * Available on all platforms. Asynchronously fetch a boolean to determine\n * internet connectivity.\n *\n * ```\n * NetInfo.isConnected.fetch().done((isConnected) => {\n * console.log('First, is ' + (isConnected ? 'online' : 'offline'));\n * });\n * function handleFirstConnectivityChange(isConnected) {\n * console.log('Then, is ' + (isConnected ? 'online' : 'offline'));\n * NetInfo.isConnected.removeEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * }\n * NetInfo.isConnected.addEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * ```\n */\n\nvar _subscriptions = new Map();\n\nvar NetInfo = {\n addEventListener: function (\n eventName: ChangeEventName,\n handler: Function\n ): void {\n var listener = RCTDeviceEventEmitter.addListener(\n DEVICE_REACHABILITY_EVENT,\n (appStateData) => {\n handler(appStateData.network_reachability);\n }\n );\n _subscriptions.set(handler, listener);\n },\n\n removeEventListener: function(\n eventName: ChangeEventName,\n handler: Function\n ): void {\n var listener = _subscriptions.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _subscriptions.delete(handler);\n },\n\n fetch: function(): Promise {\n return new Promise((resolve, reject) => {\n RCTNetInfo.getCurrentReachability(\n function(resp) {\n resolve(resp.network_reachability);\n },\n reject\n );\n });\n },\n\n isConnected: {},\n\n isConnectionMetered: {},\n};\n\nif (Platform.OS === 'ios') {\n var _isConnected = function(\n reachability: ReachabilityStateIOS\n ): bool {\n return reachability !== 'none' &&\n reachability !== 'unknown';\n };\n} else if (Platform.OS === 'android') {\n var _isConnected = function(\n connectionType: ConnectivityStateAndroid\n ): bool {\n return connectionType !== 'NONE' && connectionType !== 'UNKNOWN';\n };\n}\n\nvar _isConnectedSubscriptions = new Map();\n\nNetInfo.isConnected = {\n addEventListener: function (\n eventName: ChangeEventName,\n handler: Function\n ): void {\n var listener = (connection) => {\n handler(_isConnected(connection));\n };\n _isConnectedSubscriptions.set(handler, listener);\n NetInfo.addEventListener(\n eventName,\n listener\n );\n },\n\n removeEventListener: function(\n eventName: ChangeEventName,\n handler: Function\n ): void {\n var listener = _isConnectedSubscriptions.get(handler);\n NetInfo.removeEventListener(\n eventName,\n listener\n );\n _isConnectedSubscriptions.delete(handler);\n },\n\n fetch: function(): Promise {\n return NetInfo.fetch().then(\n (connection) => _isConnected(connection)\n );\n },\n};\n\nif (Platform.OS === 'android') {\n NetInfo.isConnectionMetered = function(callback): void {\n RCTNetInfo.isConnectionMetered((_isMetered) => {\n callback(_isMetered);\n });\n };\n}\n\nmodule.exports = NetInfo;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/NetInfo.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar Map=require('Map');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTPushNotificationManager=require('NativeModules').PushNotificationManager;\nvar invariant=require('invariant');\n\nvar _notifHandlers=new Map();\nvar _initialNotification=RCTPushNotificationManager && \nRCTPushNotificationManager.initialNotification;\n\nvar DEVICE_NOTIF_EVENT='remoteNotificationReceived';\nvar NOTIF_REGISTER_EVENT='remoteNotificationsRegistered';var \n\n\n\n\n\n\n\n\nPushNotificationIOS=(function(){_createClass(PushNotificationIOS,null,[{key:'setApplicationIconBadgeNumber',value:\n\n\n\n\n\n\n\n\nfunction setApplicationIconBadgeNumber(number){\nRCTPushNotificationManager.setApplicationIconBadgeNumber(number);}},{key:'getApplicationIconBadgeNumber',value:\n\n\n\n\n\nfunction getApplicationIconBadgeNumber(callback){\nRCTPushNotificationManager.getApplicationIconBadgeNumber(callback);}},{key:'addEventListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction addEventListener(type,handler){\ninvariant(\ntype === 'notification' || type === 'register',\n'PushNotificationIOS only supports `notification` and `register` events');\n\nvar listener;\nif(type === 'notification'){\nlistener = RCTDeviceEventEmitter.addListener(\nDEVICE_NOTIF_EVENT,\nfunction(notifData){\nhandler(new PushNotificationIOS(notifData));});}else \n\n\nif(type === 'register'){\nlistener = RCTDeviceEventEmitter.addListener(\nNOTIF_REGISTER_EVENT,\nfunction(registrationInfo){\nhandler(registrationInfo.deviceToken);});}\n\n\n\n_notifHandlers.set(handler,listener);}},{key:'requestPermissions',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction requestPermissions(permissions)\n\n\n\n{\nvar requestedPermissions={};\nif(permissions){\nrequestedPermissions = {\nalert:!!permissions.alert,\nbadge:!!permissions.badge,\nsound:!!permissions.sound};}else \n\n{\nrequestedPermissions = {\nalert:true,\nbadge:true,\nsound:true};}\n\n\nRCTPushNotificationManager.requestPermissions(requestedPermissions);}},{key:'abandonPermissions',value:\n\n\n\n\n\n\n\n\n\n\nfunction abandonPermissions(){\nRCTPushNotificationManager.abandonPermissions();}},{key:'checkPermissions',value:\n\n\n\n\n\n\n\n\n\n\nfunction checkPermissions(callback){\ninvariant(\ntypeof callback === 'function',\n'Must provide a valid callback');\n\nRCTPushNotificationManager.checkPermissions(callback);}},{key:'removeEventListener',value:\n\n\n\n\n\n\nfunction removeEventListener(type,handler){\ninvariant(\ntype === 'notification' || type === 'register',\n'PushNotificationIOS only supports `notification` and `register` events');\n\nvar listener=_notifHandlers.get(handler);\nif(!listener){\nreturn;}\n\nlistener.remove();\n_notifHandlers.delete(handler);}},{key:'popInitialNotification',value:\n\n\n\n\n\n\n\n\n\n\nfunction popInitialNotification(){\nvar initialNotification=_initialNotification && \nnew PushNotificationIOS(_initialNotification);\n_initialNotification = null;\nreturn initialNotification;}}]);\n\n\n\n\n\n\n\nfunction PushNotificationIOS(nativeNotif){var _this=this;_classCallCheck(this,PushNotificationIOS);\nthis._data = {};\n\n\n\n\n\nObject.keys(nativeNotif).forEach(function(notifKey){\nvar notifVal=nativeNotif[notifKey];\nif(notifKey === 'aps'){\n_this._alert = notifVal.alert;\n_this._sound = notifVal.sound;\n_this._badgeCount = notifVal.badge;}else \n{\n_this._data[notifKey] = notifVal;}});}_createClass(PushNotificationIOS,[{key:'getMessage',value:\n\n\n\n\n\n\n\nfunction getMessage(){\n\nreturn this._alert;}},{key:'getSound',value:\n\n\n\n\n\nfunction getSound(){\nreturn this._sound;}},{key:'getAlert',value:\n\n\n\n\n\nfunction getAlert(){\nreturn this._alert;}},{key:'getBadgeCount',value:\n\n\n\n\n\nfunction getBadgeCount(){\nreturn this._badgeCount;}},{key:'getData',value:\n\n\n\n\n\nfunction getData(){\nreturn this._data;}}]);return PushNotificationIOS;})();\n\n\n\nmodule.exports = PushNotificationIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PushNotificationIOS\n * @flow\n */\n'use strict';\n\nvar Map = require('Map');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTPushNotificationManager = require('NativeModules').PushNotificationManager;\nvar invariant = require('invariant');\n\nvar _notifHandlers = new Map();\nvar _initialNotification = RCTPushNotificationManager &&\n RCTPushNotificationManager.initialNotification;\n\nvar DEVICE_NOTIF_EVENT = 'remoteNotificationReceived';\nvar NOTIF_REGISTER_EVENT = 'remoteNotificationsRegistered';\n\n/**\n * Handle push notifications for your app, including permission handling and\n * icon badge number.\n *\n * To get up and running, [configure your notifications with Apple](https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ConfiguringPushNotifications/ConfiguringPushNotifications.html)\n * and your server-side system. To get an idea, [this is the Parse guide](https://parse.com/tutorials/ios-push-notifications).\n */\nclass PushNotificationIOS {\n _data: Object;\n _alert: string | Object;\n _sound: string;\n _badgeCount: number;\n\n /**\n * Sets the badge number for the app icon on the home screen\n */\n static setApplicationIconBadgeNumber(number: number) {\n RCTPushNotificationManager.setApplicationIconBadgeNumber(number);\n }\n\n /**\n * Gets the current badge number for the app icon on the home screen\n */\n static getApplicationIconBadgeNumber(callback: Function) {\n RCTPushNotificationManager.getApplicationIconBadgeNumber(callback);\n }\n\n /**\n * Attaches a listener to remote notification events while the app is running\n * in the foreground or the background.\n *\n * Valid events are:\n *\n * - `notification` : Fired when a remote notification is received. The\n * handler will be invoked with an instance of `PushNotificationIOS`.\n * - `register`: Fired when the user registers for remote notifications. The\n * handler will be invoked with a hex string representing the deviceToken.\n */\n static addEventListener(type: string, handler: Function) {\n invariant(\n type === 'notification' || type === 'register',\n 'PushNotificationIOS only supports `notification` and `register` events'\n );\n var listener;\n if (type === 'notification') {\n listener = RCTDeviceEventEmitter.addListener(\n DEVICE_NOTIF_EVENT,\n (notifData) => {\n handler(new PushNotificationIOS(notifData));\n }\n );\n } else if (type === 'register') {\n listener = RCTDeviceEventEmitter.addListener(\n NOTIF_REGISTER_EVENT,\n (registrationInfo) => {\n handler(registrationInfo.deviceToken);\n }\n );\n }\n _notifHandlers.set(handler, listener);\n }\n\n /**\n * Requests notification permissions from iOS, prompting the user's\n * dialog box. By default, it will request all notification permissions, but\n * a subset of these can be requested by passing a map of requested\n * permissions.\n * The following permissions are supported:\n *\n * - `alert`\n * - `badge`\n * - `sound`\n *\n * If a map is provided to the method, only the permissions with truthy values\n * will be requested.\n */\n static requestPermissions(permissions?: {\n alert?: boolean,\n badge?: boolean,\n sound?: boolean\n }) {\n var requestedPermissions = {};\n if (permissions) {\n requestedPermissions = {\n alert: !!permissions.alert,\n badge: !!permissions.badge,\n sound: !!permissions.sound\n };\n } else {\n requestedPermissions = {\n alert: true,\n badge: true,\n sound: true\n };\n }\n RCTPushNotificationManager.requestPermissions(requestedPermissions);\n }\n\n /**\n * Unregister for all remote notifications received via Apple Push Notification service.\n *\n * You should call this method in rare circumstances only, such as when a new version of\n * the app removes support for all types of remote notifications. Users can temporarily\n * prevent apps from receiving remote notifications through the Notifications section of\n * the Settings app. Apps unregistered through this method can always re-register.\n */\n static abandonPermissions() {\n RCTPushNotificationManager.abandonPermissions();\n }\n\n /**\n * See what push permissions are currently enabled. `callback` will be\n * invoked with a `permissions` object:\n *\n * - `alert` :boolean\n * - `badge` :boolean\n * - `sound` :boolean\n */\n static checkPermissions(callback: Function) {\n invariant(\n typeof callback === 'function',\n 'Must provide a valid callback'\n );\n RCTPushNotificationManager.checkPermissions(callback);\n }\n\n /**\n * Removes the event listener. Do this in `componentWillUnmount` to prevent\n * memory leaks\n */\n static removeEventListener(type: string, handler: Function) {\n invariant(\n type === 'notification' || type === 'register',\n 'PushNotificationIOS only supports `notification` and `register` events'\n );\n var listener = _notifHandlers.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _notifHandlers.delete(handler);\n }\n\n\n /**\n * An initial notification will be available if the app was cold-launched\n * from a notification.\n *\n * The first caller of `popInitialNotification` will get the initial\n * notification object, or `null`. Subsequent invocations will return null.\n */\n static popInitialNotification() {\n var initialNotification = _initialNotification &&\n new PushNotificationIOS(_initialNotification);\n _initialNotification = null;\n return initialNotification;\n }\n\n /**\n * You will never need to instansiate `PushNotificationIOS` yourself.\n * Listening to the `notification` event and invoking\n * `popInitialNotification` is sufficient\n */\n constructor(nativeNotif) {\n this._data = {};\n\n // Extract data from Apple's `aps` dict as defined:\n\n // https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html\n\n Object.keys(nativeNotif).forEach((notifKey) => {\n var notifVal = nativeNotif[notifKey];\n if (notifKey === 'aps') {\n this._alert = notifVal.alert;\n this._sound = notifVal.sound;\n this._badgeCount = notifVal.badge;\n } else {\n this._data[notifKey] = notifVal;\n }\n });\n }\n\n /**\n * An alias for `getAlert` to get the notification's main message string\n */\n getMessage(): ?string | ?Object {\n // alias because \"alert\" is an ambiguous name\n return this._alert;\n }\n\n /**\n * Gets the sound string from the `aps` object\n */\n getSound(): ?string {\n return this._sound;\n }\n\n /**\n * Gets the notification's main message from the `aps` object\n */\n getAlert(): ?string | ?Object {\n return this._alert;\n }\n\n /**\n * Gets the badge count number from the `aps` object\n */\n getBadgeCount(): ?number {\n return this._badgeCount;\n }\n\n /**\n * Gets the data object on the notif\n */\n getData(): ?Object {\n return this._data;\n }\n}\n\nmodule.exports = PushNotificationIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Settings/Settings.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTSettingsManager=require('NativeModules').SettingsManager;\n\nvar invariant=require('invariant');\n\nvar subscriptions=[];\n\nvar Settings={\n_settings:RCTSettingsManager && RCTSettingsManager.settings,\n\nget:function(key){\nreturn this._settings[key];},\n\n\nset:function(settings){\nthis._settings = Object.assign(this._settings,settings);\nRCTSettingsManager.setValues(settings);},\n\n\nwatchKeys:function(keys,callback){\nif(typeof keys === 'string'){\nkeys = [keys];}\n\n\ninvariant(\nArray.isArray(keys),\n'keys should be a string or array of strings');\n\n\nvar sid=subscriptions.length;\nsubscriptions.push({keys:keys,callback:callback});\nreturn sid;},\n\n\nclearWatch:function(watchId){\nif(watchId < subscriptions.length){\nsubscriptions[watchId] = {keys:[],callback:null};}},\n\n\n\n_sendObservations:function(body){var _this=this;\nObject.keys(body).forEach(function(key){\nvar newValue=body[key];\nvar didChange=_this._settings[key] !== newValue;\n_this._settings[key] = newValue;\n\nif(didChange){\nsubscriptions.forEach(function(sub){\nif(sub.keys.indexOf(key) !== -1 && sub.callback){\nsub.callback();}});}});}};\n\n\n\n\n\n\n\nRCTDeviceEventEmitter.addListener(\n'settingsUpdated',\nSettings._sendObservations.bind(Settings));\n\n\nmodule.exports = Settings;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Settings\n * @flow\n */\n'use strict';\n\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTSettingsManager = require('NativeModules').SettingsManager;\n\nvar invariant = require('invariant');\n\nvar subscriptions: Array<{keys: Array<string>; callback: ?Function}> = [];\n\nvar Settings = {\n _settings: RCTSettingsManager && RCTSettingsManager.settings,\n\n get(key: string): mixed {\n return this._settings[key];\n },\n\n set(settings: Object) {\n this._settings = Object.assign(this._settings, settings);\n RCTSettingsManager.setValues(settings);\n },\n\n watchKeys(keys: string | Array<string>, callback: Function): number {\n if (typeof keys === 'string') {\n keys = [keys];\n }\n\n invariant(\n Array.isArray(keys),\n 'keys should be a string or array of strings'\n );\n\n var sid = subscriptions.length;\n subscriptions.push({keys: keys, callback: callback});\n return sid;\n },\n\n clearWatch(watchId: number) {\n if (watchId < subscriptions.length) {\n subscriptions[watchId] = {keys: [], callback: null};\n }\n },\n\n _sendObservations(body: Object) {\n Object.keys(body).forEach((key) => {\n var newValue = body[key];\n var didChange = this._settings[key] !== newValue;\n this._settings[key] = newValue;\n\n if (didChange) {\n subscriptions.forEach((sub) => {\n if (sub.keys.indexOf(key) !== -1 && sub.callback) {\n sub.callback();\n }\n });\n }\n });\n },\n};\n\nRCTDeviceEventEmitter.addListener(\n 'settingsUpdated',\n Settings._sendObservations.bind(Settings)\n);\n\nmodule.exports = Settings;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Settings/Settings.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/StatusBar/StatusBarIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTStatusBarManager=require('NativeModules').StatusBarManager;\n\n\n\n\n\n\n\n\n\n\n\n\nvar StatusBarIOS={\n\nsetStyle:function(style,animated){\nanimated = animated || false;\nRCTStatusBarManager.setStyle(style,animated);},\n\n\nsetHidden:function(hidden,animation){\nanimation = animation || 'none';\nRCTStatusBarManager.setHidden(hidden,animation);}};\n\n\n\nmodule.exports = StatusBarIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StatusBarIOS\n * @flow\n */\n'use strict';\n\nvar RCTStatusBarManager = require('NativeModules').StatusBarManager;\n\ntype StatusBarStyle = $Enum<{\n 'default': string,\n 'light-content': string,\n}>;\n\ntype StatusBarAnimation = $Enum<{\n 'none': string,\n 'fade': string,\n 'slide': string,\n}>;\n\nvar StatusBarIOS = {\n\n setStyle(style: StatusBarStyle, animated?: boolean) {\n animated = animated || false;\n RCTStatusBarManager.setStyle(style, animated);\n },\n\n setHidden(hidden: boolean, animation?: StatusBarAnimation) {\n animation = animation || 'none';\n RCTStatusBarManager.setHidden(hidden, animation);\n },\n};\n\nmodule.exports = StatusBarIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/StatusBar/StatusBarIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Vibration/VibrationIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTVibration=require('NativeModules').Vibration;\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\nvar VibrationIOS={\nvibrate:function(){\ninvariant(\narguments[0] === undefined,\n'Vibration patterns not supported.');\n\nRCTVibration.vibrate();}};\n\n\n\nmodule.exports = VibrationIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule VibrationIOS\n * @flow\n */\n'use strict';\n\nvar RCTVibration = require('NativeModules').Vibration;\n\nvar invariant = require('invariant');\n\n/**\n * The Vibration API is exposed at `VibrationIOS.vibrate()`. On iOS, calling this\n * function will trigger a one second vibration. The vibration is asynchronous\n * so this method will return immediately.\n *\n * There will be no effect on devices that do not support Vibration, eg. the iOS\n * simulator.\n *\n * Vibration patterns are currently unsupported.\n */\n\nvar VibrationIOS = {\n vibrate: function() {\n invariant(\n arguments[0] === undefined,\n 'Vibration patterns not supported.'\n );\n RCTVibration.vibrate();\n }\n};\n\nmodule.exports = VibrationIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Vibration/VibrationIOS.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/NativeApp/RCTNativeAppEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\n\nvar RCTNativeAppEventEmitter=new EventEmitter();\n\nmodule.exports = RCTNativeAppEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTNativeAppEventEmitter\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\n\nvar RCTNativeAppEventEmitter = new EventEmitter();\n\nmodule.exports = RCTNativeAppEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/NativeApp/RCTNativeAppEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/link/LinkedStateMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactLink=require('ReactLink');\nvar ReactStateSetters=require('ReactStateSetters');\n\n\n\n\nvar LinkedStateMixin={\n\n\n\n\n\n\n\n\n\nlinkState:function(key){\nreturn new ReactLink(\nthis.state[key],\nReactStateSetters.createStateKeySetter(this,key));}};\n\n\n\n\nmodule.exports = LinkedStateMixin;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LinkedStateMixin\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactLink = require('ReactLink');\nvar ReactStateSetters = require('ReactStateSetters');\n\n/**\n * A simple mixin around ReactLink.forState().\n */\nvar LinkedStateMixin = {\n /**\n * Create a ReactLink that's linked to part of this component's state. The\n * ReactLink will have the current value of this.state[key] and will call\n * setState() when a change is requested.\n *\n * @param {string} key state key to update. Note: you may want to use keyOf()\n * if you're using Google Closure Compiler advanced mode.\n * @return {ReactLink} ReactLink instance linking to the state.\n */\n linkState: function(key) {\n return new ReactLink(\n this.state[key],\n ReactStateSetters.createStateKeySetter(this, key)\n );\n }\n};\n\nmodule.exports = LinkedStateMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/link/LinkedStateMixin.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/link/ReactLink.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\n\n\n\n\n\nfunction ReactLink(value,requestChange){\nthis.value = value;\nthis.requestChange = requestChange;}\n\n\n\n\n\n\n\n\n\n\nfunction createLinkTypeChecker(linkType){\nvar shapes={\nvalue:typeof linkType === 'undefined'?\nReact.PropTypes.any.isRequired:\nlinkType.isRequired,\nrequestChange:React.PropTypes.func.isRequired};\n\nreturn React.PropTypes.shape(shapes);}\n\n\nReactLink.PropTypes = {\nlink:createLinkTypeChecker};\n\n\nmodule.exports = ReactLink;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactLink\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * ReactLink encapsulates a common pattern in which a component wants to modify\n * a prop received from its parent. ReactLink allows the parent to pass down a\n * value coupled with a callback that, when invoked, expresses an intent to\n * modify that value. For example:\n *\n * React.createClass({\n * getInitialState: function() {\n * return {value: ''};\n * },\n * render: function() {\n * var valueLink = new ReactLink(this.state.value, this._handleValueChange);\n * return <input valueLink={valueLink} />;\n * },\n * this._handleValueChange: function(newValue) {\n * this.setState({value: newValue});\n * }\n * });\n *\n * We have provided some sugary mixins to make the creation and\n * consumption of ReactLink easier; see LinkedValueUtils and LinkedStateMixin.\n */\n\nvar React = require('React');\n\n/**\n * @param {*} value current value of the link\n * @param {function} requestChange callback to request a change\n */\nfunction ReactLink(value, requestChange) {\n this.value = value;\n this.requestChange = requestChange;\n}\n\n/**\n * Creates a PropType that enforces the ReactLink API and optionally checks the\n * type of the value being passed inside the link. Example:\n *\n * MyComponent.propTypes = {\n * tabIndexLink: ReactLink.PropTypes.link(React.PropTypes.number)\n * }\n */\nfunction createLinkTypeChecker(linkType) {\n var shapes = {\n value: typeof linkType === 'undefined' ?\n React.PropTypes.any.isRequired :\n linkType.isRequired,\n requestChange: React.PropTypes.func.isRequired\n };\n return React.PropTypes.shape(shapes);\n}\n\nReactLink.PropTypes = {\n link: createLinkTypeChecker\n};\n\nmodule.exports = ReactLink;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/link/ReactLink.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactStateSetters.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactStateSetters={\n\n\n\n\n\n\n\n\n\n\ncreateStateSetter:function(component,funcReturningState){\nreturn function(a,b,c,d,e,f){\nvar partialState=funcReturningState.call(component,a,b,c,d,e,f);\nif(partialState){\ncomponent.setState(partialState);}};},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncreateStateKeySetter:function(component,key){\n\nvar cache=component.__keySetters || (component.__keySetters = {});\nreturn cache[key] || (cache[key] = createStateKeySetter(component,key));}};\n\n\n\nfunction createStateKeySetter(component,key){\n\n\n\nvar partialState={};\nreturn function stateKeySetter(value){\npartialState[key] = value;\ncomponent.setState(partialState);};}\n\n\n\nReactStateSetters.Mixin = {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncreateStateSetter:function(funcReturningState){\nreturn ReactStateSetters.createStateSetter(this,funcReturningState);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncreateStateKeySetter:function(key){\nreturn ReactStateSetters.createStateKeySetter(this,key);}};\n\n\n\nmodule.exports = ReactStateSetters;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactStateSetters\n */\n\n'use strict';\n\nvar ReactStateSetters = {\n /**\n * Returns a function that calls the provided function, and uses the result\n * of that to set the component's state.\n *\n * @param {ReactCompositeComponent} component\n * @param {function} funcReturningState Returned callback uses this to\n * determine how to update state.\n * @return {function} callback that when invoked uses funcReturningState to\n * determined the object literal to setState.\n */\n createStateSetter: function(component, funcReturningState) {\n return function(a, b, c, d, e, f) {\n var partialState = funcReturningState.call(component, a, b, c, d, e, f);\n if (partialState) {\n component.setState(partialState);\n }\n };\n },\n\n /**\n * Returns a single-argument callback that can be used to update a single\n * key in the component's state.\n *\n * Note: this is memoized function, which makes it inexpensive to call.\n *\n * @param {ReactCompositeComponent} component\n * @param {string} key The key in the state that you should update.\n * @return {function} callback of 1 argument which calls setState() with\n * the provided keyName and callback argument.\n */\n createStateKeySetter: function(component, key) {\n // Memoize the setters.\n var cache = component.__keySetters || (component.__keySetters = {});\n return cache[key] || (cache[key] = createStateKeySetter(component, key));\n }\n};\n\nfunction createStateKeySetter(component, key) {\n // Partial state is allocated outside of the function closure so it can be\n // reused with every call, avoiding memory allocation when this function\n // is called.\n var partialState = {};\n return function stateKeySetter(value) {\n partialState[key] = value;\n component.setState(partialState);\n };\n}\n\nReactStateSetters.Mixin = {\n /**\n * Returns a function that calls the provided function, and uses the result\n * of that to set the component's state.\n *\n * For example, these statements are equivalent:\n *\n * this.setState({x: 1});\n * this.createStateSetter(function(xValue) {\n * return {x: xValue};\n * })(1);\n *\n * @param {function} funcReturningState Returned callback uses this to\n * determine how to update state.\n * @return {function} callback that when invoked uses funcReturningState to\n * determined the object literal to setState.\n */\n createStateSetter: function(funcReturningState) {\n return ReactStateSetters.createStateSetter(this, funcReturningState);\n },\n\n /**\n * Returns a single-argument callback that can be used to update a single\n * key in the component's state.\n *\n * For example, these statements are equivalent:\n *\n * this.setState({x: 1});\n * this.createStateKeySetter('x')(1);\n *\n * Note: this is memoized function, which makes it inexpensive to call.\n *\n * @param {string} key The key in the state that you should update.\n * @return {function} callback of 1 argument which calls setState() with\n * the provided keyName and callback argument.\n */\n createStateKeySetter: function(key) {\n return ReactStateSetters.createStateKeySetter(this, key);\n }\n};\n\nmodule.exports = ReactStateSetters;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactStateSetters.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/ReactComponentWithPureRenderMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar shallowEqual=require('shallowEqual');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactComponentWithPureRenderMixin={\nshouldComponentUpdate:function(nextProps,nextState){\nreturn !shallowEqual(this.props,nextProps) || \n!shallowEqual(this.state,nextState);}};\n\n\n\nmodule.exports = ReactComponentWithPureRenderMixin;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n* @providesModule ReactComponentWithPureRenderMixin\n*/\n\n'use strict';\n\nvar shallowEqual = require('shallowEqual');\n\n/**\n * If your React component's render function is \"pure\", e.g. it will render the\n * same result given the same props and state, provide this Mixin for a\n * considerable performance boost.\n *\n * Most React components have pure render functions.\n *\n * Example:\n *\n * var ReactComponentWithPureRenderMixin =\n * require('ReactComponentWithPureRenderMixin');\n * React.createClass({\n * mixins: [ReactComponentWithPureRenderMixin],\n *\n * render: function() {\n * return <div className={this.props.className}>foo</div>;\n * }\n * });\n *\n * Note: This only checks shallow equality for props and state. If these contain\n * complex data structures this mixin may have false-negatives for deeper\n * differences. Only mixin to components which have simple props and state, or\n * use `forceUpdate()` when you know deep data structures have changed.\n */\nvar ReactComponentWithPureRenderMixin = {\n shouldComponentUpdate: function(nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) ||\n !shallowEqual(this.state, nextState);\n }\n};\n\nmodule.exports = ReactComponentWithPureRenderMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/ReactComponentWithPureRenderMixin.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/shallowEqual.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction shallowEqual(objA,objB){\nif(objA === objB){\nreturn true;}\n\nvar key;\n\nfor(key in objA) {\nif(objA.hasOwnProperty(key) && (\n!objB.hasOwnProperty(key) || objA[key] !== objB[key])){\nreturn false;}}\n\n\n\nfor(key in objB) {\nif(objB.hasOwnProperty(key) && !objA.hasOwnProperty(key)){\nreturn false;}}\n\n\nreturn true;}\n\n\nmodule.exports = shallowEqual;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shallowEqual\n */\n\n'use strict';\n\n/**\n * Performs equality by iterating through keys on an object and returning\n * false when any key has values which are not strictly equal between\n * objA and objB. Returns true when the values of all keys are strictly equal.\n *\n * @return {boolean}\n */\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n var key;\n // Test for A's keys different from B.\n for (key in objA) {\n if (objA.hasOwnProperty(key) &&\n (!objB.hasOwnProperty(key) || objA[key] !== objB[key])) {\n return false;\n }\n }\n // Test for B's keys missing from A.\n for (key in objB) {\n if (objB.hasOwnProperty(key) && !objA.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = shallowEqual;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/shallowEqual.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/update.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar keyOf=require('keyOf');\nvar invariant=require('invariant');\nvar hasOwnProperty=({}).hasOwnProperty;\n\nfunction shallowCopy(x){\nif(Array.isArray(x)){\nreturn x.concat();}else \nif(x && typeof x === 'object'){\nreturn assign(new x.constructor(),x);}else \n{\nreturn x;}}\n\n\n\nvar COMMAND_PUSH=keyOf({$push:null});\nvar COMMAND_UNSHIFT=keyOf({$unshift:null});\nvar COMMAND_SPLICE=keyOf({$splice:null});\nvar COMMAND_SET=keyOf({$set:null});\nvar COMMAND_MERGE=keyOf({$merge:null});\nvar COMMAND_APPLY=keyOf({$apply:null});\n\nvar ALL_COMMANDS_LIST=[\nCOMMAND_PUSH,\nCOMMAND_UNSHIFT,\nCOMMAND_SPLICE,\nCOMMAND_SET,\nCOMMAND_MERGE,\nCOMMAND_APPLY];\n\n\nvar ALL_COMMANDS_SET={};\n\nALL_COMMANDS_LIST.forEach(function(command){\nALL_COMMANDS_SET[command] = true;});\n\n\nfunction invariantArrayCase(value,spec,command){\ninvariant(\nArray.isArray(value),\n'update(): expected target of %s to be an array; got %s.',\ncommand,\nvalue);\n\nvar specValue=spec[command];\ninvariant(\nArray.isArray(specValue),\n'update(): expected spec of %s to be an array; got %s. ' + \n'Did you forget to wrap your parameter in an array?',\ncommand,\nspecValue);}\n\n\n\nfunction update(value,spec){\ninvariant(\ntypeof spec === 'object',\n'update(): You provided a key path to update() that did not contain one ' + \n'of %s. Did you forget to include {%s: ...}?',\nALL_COMMANDS_LIST.join(', '),\nCOMMAND_SET);\n\n\nif(hasOwnProperty.call(spec,COMMAND_SET)){\ninvariant(\nObject.keys(spec).length === 1,\n'Cannot have more than one key in an object with %s',\nCOMMAND_SET);\n\n\nreturn spec[COMMAND_SET];}\n\n\nvar nextValue=shallowCopy(value);\n\nif(hasOwnProperty.call(spec,COMMAND_MERGE)){\nvar mergeObj=spec[COMMAND_MERGE];\ninvariant(\nmergeObj && typeof mergeObj === 'object',\n'update(): %s expects a spec of type \\'object\\'; got %s',\nCOMMAND_MERGE,\nmergeObj);\n\ninvariant(\nnextValue && typeof nextValue === 'object',\n'update(): %s expects a target of type \\'object\\'; got %s',\nCOMMAND_MERGE,\nnextValue);\n\nassign(nextValue,spec[COMMAND_MERGE]);}\n\n\nif(hasOwnProperty.call(spec,COMMAND_PUSH)){\ninvariantArrayCase(value,spec,COMMAND_PUSH);\nspec[COMMAND_PUSH].forEach(function(item){\nnextValue.push(item);});}\n\n\n\nif(hasOwnProperty.call(spec,COMMAND_UNSHIFT)){\ninvariantArrayCase(value,spec,COMMAND_UNSHIFT);\nspec[COMMAND_UNSHIFT].forEach(function(item){\nnextValue.unshift(item);});}\n\n\n\nif(hasOwnProperty.call(spec,COMMAND_SPLICE)){\ninvariant(\nArray.isArray(value),\n'Expected %s target to be an array; got %s',\nCOMMAND_SPLICE,\nvalue);\n\ninvariant(\nArray.isArray(spec[COMMAND_SPLICE]),\n'update(): expected spec of %s to be an array of arrays; got %s. ' + \n'Did you forget to wrap your parameters in an array?',\nCOMMAND_SPLICE,\nspec[COMMAND_SPLICE]);\n\nspec[COMMAND_SPLICE].forEach(function(args){\ninvariant(\nArray.isArray(args),\n'update(): expected spec of %s to be an array of arrays; got %s. ' + \n'Did you forget to wrap your parameters in an array?',\nCOMMAND_SPLICE,\nspec[COMMAND_SPLICE]);\n\nnextValue.splice.apply(nextValue,args);});}\n\n\n\nif(hasOwnProperty.call(spec,COMMAND_APPLY)){\ninvariant(\ntypeof spec[COMMAND_APPLY] === 'function',\n'update(): expected spec of %s to be a function; got %s.',\nCOMMAND_APPLY,\nspec[COMMAND_APPLY]);\n\nnextValue = spec[COMMAND_APPLY](nextValue);}\n\n\nfor(var k in spec) {\nif(!(ALL_COMMANDS_SET.hasOwnProperty(k) && ALL_COMMANDS_SET[k])){\nnextValue[k] = update(value[k],spec[k]);}}\n\n\n\nreturn nextValue;}\n\n\nmodule.exports = update;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule update\n */\n\n /* global hasOwnProperty:true */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar keyOf = require('keyOf');\nvar invariant = require('invariant');\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction shallowCopy(x) {\n if (Array.isArray(x)) {\n return x.concat();\n } else if (x && typeof x === 'object') {\n return assign(new x.constructor(), x);\n } else {\n return x;\n }\n}\n\nvar COMMAND_PUSH = keyOf({$push: null});\nvar COMMAND_UNSHIFT = keyOf({$unshift: null});\nvar COMMAND_SPLICE = keyOf({$splice: null});\nvar COMMAND_SET = keyOf({$set: null});\nvar COMMAND_MERGE = keyOf({$merge: null});\nvar COMMAND_APPLY = keyOf({$apply: null});\n\nvar ALL_COMMANDS_LIST = [\n COMMAND_PUSH,\n COMMAND_UNSHIFT,\n COMMAND_SPLICE,\n COMMAND_SET,\n COMMAND_MERGE,\n COMMAND_APPLY\n];\n\nvar ALL_COMMANDS_SET = {};\n\nALL_COMMANDS_LIST.forEach(function(command) {\n ALL_COMMANDS_SET[command] = true;\n});\n\nfunction invariantArrayCase(value, spec, command) {\n invariant(\n Array.isArray(value),\n 'update(): expected target of %s to be an array; got %s.',\n command,\n value\n );\n var specValue = spec[command];\n invariant(\n Array.isArray(specValue),\n 'update(): expected spec of %s to be an array; got %s. ' +\n 'Did you forget to wrap your parameter in an array?',\n command,\n specValue\n );\n}\n\nfunction update(value, spec) {\n invariant(\n typeof spec === 'object',\n 'update(): You provided a key path to update() that did not contain one ' +\n 'of %s. Did you forget to include {%s: ...}?',\n ALL_COMMANDS_LIST.join(', '),\n COMMAND_SET\n );\n\n if (hasOwnProperty.call(spec, COMMAND_SET)) {\n invariant(\n Object.keys(spec).length === 1,\n 'Cannot have more than one key in an object with %s',\n COMMAND_SET\n );\n\n return spec[COMMAND_SET];\n }\n\n var nextValue = shallowCopy(value);\n\n if (hasOwnProperty.call(spec, COMMAND_MERGE)) {\n var mergeObj = spec[COMMAND_MERGE];\n invariant(\n mergeObj && typeof mergeObj === 'object',\n 'update(): %s expects a spec of type \\'object\\'; got %s',\n COMMAND_MERGE,\n mergeObj\n );\n invariant(\n nextValue && typeof nextValue === 'object',\n 'update(): %s expects a target of type \\'object\\'; got %s',\n COMMAND_MERGE,\n nextValue\n );\n assign(nextValue, spec[COMMAND_MERGE]);\n }\n\n if (hasOwnProperty.call(spec, COMMAND_PUSH)) {\n invariantArrayCase(value, spec, COMMAND_PUSH);\n spec[COMMAND_PUSH].forEach(function(item) {\n nextValue.push(item);\n });\n }\n\n if (hasOwnProperty.call(spec, COMMAND_UNSHIFT)) {\n invariantArrayCase(value, spec, COMMAND_UNSHIFT);\n spec[COMMAND_UNSHIFT].forEach(function(item) {\n nextValue.unshift(item);\n });\n }\n\n if (hasOwnProperty.call(spec, COMMAND_SPLICE)) {\n invariant(\n Array.isArray(value),\n 'Expected %s target to be an array; got %s',\n COMMAND_SPLICE,\n value\n );\n invariant(\n Array.isArray(spec[COMMAND_SPLICE]),\n 'update(): expected spec of %s to be an array of arrays; got %s. ' +\n 'Did you forget to wrap your parameters in an array?',\n COMMAND_SPLICE,\n spec[COMMAND_SPLICE]\n );\n spec[COMMAND_SPLICE].forEach(function(args) {\n invariant(\n Array.isArray(args),\n 'update(): expected spec of %s to be an array of arrays; got %s. ' +\n 'Did you forget to wrap your parameters in an array?',\n COMMAND_SPLICE,\n spec[COMMAND_SPLICE]\n );\n nextValue.splice.apply(nextValue, args);\n });\n }\n\n if (hasOwnProperty.call(spec, COMMAND_APPLY)) {\n invariant(\n typeof spec[COMMAND_APPLY] === 'function',\n 'update(): expected spec of %s to be a function; got %s.',\n COMMAND_APPLY,\n spec[COMMAND_APPLY]\n );\n nextValue = spec[COMMAND_APPLY](nextValue);\n }\n\n for (var k in spec) {\n if (!(ALL_COMMANDS_SET.hasOwnProperty(k) && ALL_COMMANDS_SET[k])) {\n nextValue[k] = update(value[k], spec[k]);\n }\n }\n\n return nextValue;\n}\n\nmodule.exports = update;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/update.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactTestUtils.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventConstants=require('EventConstants');\nvar EventPluginHub=require('EventPluginHub');\nvar EventPropagators=require('EventPropagators');\nvar React=require('React');\nvar ReactElement=require('ReactElement');\nvar ReactEmptyComponent=require('ReactEmptyComponent');\nvar ReactBrowserEventEmitter=require('ReactBrowserEventEmitter');\nvar ReactCompositeComponent=require('ReactCompositeComponent');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactMount=require('ReactMount');\nvar ReactUpdates=require('ReactUpdates');\nvar SyntheticEvent=require('SyntheticEvent');\n\nvar assign=require('Object.assign');\n\nvar topLevelTypes=EventConstants.topLevelTypes;\n\nfunction Event(suffix){}\n\n\n\n\n\n\n\n\n\n\nvar ReactTestUtils={\nrenderIntoDocument:function(instance){\nvar div=document.createElement('div');\n\n\n\n\n\nreturn React.render(instance,div);},\n\n\nisElement:function(element){\nreturn ReactElement.isValidElement(element);},\n\n\nisElementOfType:function(inst,convenienceConstructor){\nreturn (\nReactElement.isValidElement(inst) && \ninst.type === convenienceConstructor);},\n\n\n\nisDOMComponent:function(inst){\n\n\nreturn !!(inst && inst.tagName && inst.getDOMNode);},\n\n\nisDOMComponentElement:function(inst){\nreturn !!(inst && \nReactElement.isValidElement(inst) && \n!!inst.tagName);},\n\n\nisCompositeComponent:function(inst){\nreturn typeof inst.render === 'function' && \ntypeof inst.setState === 'function';},\n\n\nisCompositeComponentWithType:function(inst,type){\nreturn !!(ReactTestUtils.isCompositeComponent(inst) && \ninst.constructor === type);},\n\n\nisCompositeComponentElement:function(inst){\nif(!ReactElement.isValidElement(inst)){\nreturn false;}\n\n\n\nvar prototype=inst.type.prototype;\nreturn (\ntypeof prototype.render === 'function' && \ntypeof prototype.setState === 'function');},\n\n\n\nisCompositeComponentElementWithType:function(inst,type){\nreturn !!(ReactTestUtils.isCompositeComponentElement(inst) && \ninst.constructor === type);},\n\n\ngetRenderedChildOfCompositeComponent:function(inst){\nif(!ReactTestUtils.isCompositeComponent(inst)){\nreturn null;}\n\nvar internalInstance=ReactInstanceMap.get(inst);\nreturn internalInstance._renderedComponent.getPublicInstance();},\n\n\nfindAllInRenderedTree:function(inst,test){\nif(!inst){\nreturn [];}\n\nvar ret=test(inst)?[inst]:[];\nif(ReactTestUtils.isDOMComponent(inst)){\nvar internalInstance=ReactInstanceMap.get(inst);\nvar renderedChildren=internalInstance.\n_renderedComponent.\n_renderedChildren;\nvar key;\nfor(key in renderedChildren) {\nif(!renderedChildren.hasOwnProperty(key)){\ncontinue;}\n\nif(!renderedChildren[key].getPublicInstance){\ncontinue;}\n\nret = ret.concat(\nReactTestUtils.findAllInRenderedTree(\nrenderedChildren[key].getPublicInstance(),\ntest));}}else \n\n\n\nif(ReactTestUtils.isCompositeComponent(inst)){\nret = ret.concat(\nReactTestUtils.findAllInRenderedTree(\nReactTestUtils.getRenderedChildOfCompositeComponent(inst),\ntest));}\n\n\n\nreturn ret;},\n\n\n\n\n\n\n\nscryRenderedDOMComponentsWithClass:function(root,className){\nreturn ReactTestUtils.findAllInRenderedTree(root,function(inst){\nvar instClassName=inst.props.className;\nreturn ReactTestUtils.isDOMComponent(inst) && (\ninstClassName && \n(' ' + instClassName + ' ').indexOf(' ' + className + ' ') !== -1);});},\n\n\n\n\n\n\n\n\n\n\nfindRenderedDOMComponentWithClass:function(root,className){\nvar all=\nReactTestUtils.scryRenderedDOMComponentsWithClass(root,className);\nif(all.length !== 1){\nthrow new Error('Did not find exactly one match ' + \n'(found: ' + all.length + ') for class:' + className);}\n\n\nreturn all[0];},\n\n\n\n\n\n\n\n\nscryRenderedDOMComponentsWithTag:function(root,tagName){\nreturn ReactTestUtils.findAllInRenderedTree(root,function(inst){\nreturn ReactTestUtils.isDOMComponent(inst) && \ninst.tagName === tagName.toUpperCase();});},\n\n\n\n\n\n\n\n\n\nfindRenderedDOMComponentWithTag:function(root,tagName){\nvar all=ReactTestUtils.scryRenderedDOMComponentsWithTag(root,tagName);\nif(all.length !== 1){\nthrow new Error('Did not find exactly one match for tag:' + tagName);}\n\nreturn all[0];},\n\n\n\n\n\n\n\nscryRenderedComponentsWithType:function(root,componentType){\nreturn ReactTestUtils.findAllInRenderedTree(root,function(inst){\nreturn ReactTestUtils.isCompositeComponentWithType(\ninst,\ncomponentType);});},\n\n\n\n\n\n\n\n\n\n\nfindRenderedComponentWithType:function(root,componentType){\nvar all=ReactTestUtils.scryRenderedComponentsWithType(\nroot,\ncomponentType);\n\nif(all.length !== 1){\nthrow new Error(\n'Did not find exactly one match for componentType:' + componentType);}\n\n\nreturn all[0];},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmockComponent:function(module,mockTagName){\nmockTagName = mockTagName || module.mockTagName || \"div\";\n\nmodule.prototype.render.mockImplementation(function(){\nreturn React.createElement(\nmockTagName,\nnull,\nthis.props.children);});\n\n\n\nreturn this;},\n\n\n\n\n\n\n\n\n\nsimulateNativeEventOnNode:function(topLevelType,node,fakeNativeEvent){\nfakeNativeEvent.target = node;\nReactBrowserEventEmitter.ReactEventListener.dispatchEvent(\ntopLevelType,\nfakeNativeEvent);},\n\n\n\n\n\n\n\n\n\n\nsimulateNativeEventOnDOMComponent:function(\ntopLevelType,\ncomp,\nfakeNativeEvent){\nReactTestUtils.simulateNativeEventOnNode(\ntopLevelType,\ncomp.getDOMNode(),\nfakeNativeEvent);},\n\n\n\nnativeTouchData:function(x,y){\nreturn {\ntouches:[\n{pageX:x,pageY:y}]};},\n\n\n\n\ncreateRenderer:function(){\nreturn new ReactShallowRenderer();},\n\n\nSimulate:null,\nSimulateNative:{}};\n\n\n\n\n\nvar ReactShallowRenderer=function(){\nthis._instance = null;};\n\n\nReactShallowRenderer.prototype.getRenderOutput = function(){\nreturn (\nthis._instance && this._instance._renderedComponent && \nthis._instance._renderedComponent._renderedOutput || \nnull);};\n\n\n\nvar NoopInternalComponent=function(element){\nthis._renderedOutput = element;\nthis._currentElement = element === null || element === false?\nReactEmptyComponent.emptyElement:\nelement;};\n\n\nNoopInternalComponent.prototype = {\n\nmountComponent:function(){},\n\n\nreceiveComponent:function(element){\nthis._renderedOutput = element;\nthis._currentElement = element === null || element === false?\nReactEmptyComponent.emptyElement:\nelement;},\n\n\nunmountComponent:function(){}};\n\n\n\n\nvar ShallowComponentWrapper=function(){};\nassign(\nShallowComponentWrapper.prototype,\nReactCompositeComponent.Mixin,{\n_instantiateReactComponent:function(element){\nreturn new NoopInternalComponent(element);},\n\n_replaceNodeWithMarkupByID:function(){},\n_renderValidatedComponent:\nReactCompositeComponent.Mixin.\n_renderValidatedComponentWithoutOwnerOrContext});\n\n\n\nReactShallowRenderer.prototype.render = function(element,context){\nvar transaction=ReactUpdates.ReactReconcileTransaction.getPooled();\nthis._render(element,transaction,context);\nReactUpdates.ReactReconcileTransaction.release(transaction);};\n\n\nReactShallowRenderer.prototype.unmount = function(){\nif(this._instance){\nthis._instance.unmountComponent();}};\n\n\n\nReactShallowRenderer.prototype._render = function(element,transaction,context){\nif(!this._instance){\nvar rootID=ReactInstanceHandles.createReactRootID();\nvar instance=new ShallowComponentWrapper(element.type);\ninstance.construct(element);\n\ninstance.mountComponent(rootID,transaction,context);\n\nthis._instance = instance;}else \n{\nthis._instance.receiveComponent(element,transaction,context);}};\n\n\n\n\n\n\n\n\n\n\n\nfunction makeSimulator(eventType){\nreturn function(domComponentOrNode,eventData){\nvar node;\nif(ReactTestUtils.isDOMComponent(domComponentOrNode)){\nnode = domComponentOrNode.getDOMNode();}else \nif(domComponentOrNode.tagName){\nnode = domComponentOrNode;}\n\n\nvar fakeNativeEvent=new Event();\nfakeNativeEvent.target = node;\n\n\nvar event=new SyntheticEvent(\nReactBrowserEventEmitter.eventNameDispatchConfigs[eventType],\nReactMount.getID(node),\nfakeNativeEvent);\n\nassign(event,eventData);\nEventPropagators.accumulateTwoPhaseDispatches(event);\n\nReactUpdates.batchedUpdates(function(){\nEventPluginHub.enqueueEvents(event);\nEventPluginHub.processEventQueue();});};}\n\n\n\n\nfunction buildSimulators(){\nReactTestUtils.Simulate = {};\n\nvar eventType;\nfor(eventType in ReactBrowserEventEmitter.eventNameDispatchConfigs) {\n\n\n\n\nReactTestUtils.Simulate[eventType] = makeSimulator(eventType);}}\n\n\n\n\nvar oldInjectEventPluginOrder=EventPluginHub.injection.injectEventPluginOrder;\nEventPluginHub.injection.injectEventPluginOrder = function(){\noldInjectEventPluginOrder.apply(this,arguments);\nbuildSimulators();};\n\nvar oldInjectEventPlugins=EventPluginHub.injection.injectEventPluginsByName;\nEventPluginHub.injection.injectEventPluginsByName = function(){\noldInjectEventPlugins.apply(this,arguments);\nbuildSimulators();};\n\n\nbuildSimulators();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction makeNativeSimulator(eventType){\nreturn function(domComponentOrNode,nativeEventData){\nvar fakeNativeEvent=new Event(eventType);\nassign(fakeNativeEvent,nativeEventData);\nif(ReactTestUtils.isDOMComponent(domComponentOrNode)){\nReactTestUtils.simulateNativeEventOnDOMComponent(\neventType,\ndomComponentOrNode,\nfakeNativeEvent);}else \n\nif(!!domComponentOrNode.tagName){\n\nReactTestUtils.simulateNativeEventOnNode(\neventType,\ndomComponentOrNode,\nfakeNativeEvent);}};}\n\n\n\n\n\nvar eventType;\nfor(eventType in topLevelTypes) {\n\nvar convenienceName=eventType.indexOf('top') === 0?\neventType.charAt(3).toLowerCase() + eventType.substr(4):eventType;\n\n\n\n\nReactTestUtils.SimulateNative[convenienceName] = \nmakeNativeSimulator(eventType);}\n\n\nmodule.exports = ReactTestUtils;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactTestUtils\n */\n\n'use strict';\n\nvar EventConstants = require('EventConstants');\nvar EventPluginHub = require('EventPluginHub');\nvar EventPropagators = require('EventPropagators');\nvar React = require('React');\nvar ReactElement = require('ReactElement');\nvar ReactEmptyComponent = require('ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');\nvar ReactCompositeComponent = require('ReactCompositeComponent');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactMount = require('ReactMount');\nvar ReactUpdates = require('ReactUpdates');\nvar SyntheticEvent = require('SyntheticEvent');\n\nvar assign = require('Object.assign');\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nfunction Event(suffix) {}\n\n/**\n * @class ReactTestUtils\n */\n\n/**\n * Todo: Support the entire DOM.scry query syntax. For now, these simple\n * utilities will suffice for testing purposes.\n * @lends ReactTestUtils\n */\nvar ReactTestUtils = {\n renderIntoDocument: function(instance) {\n var div = document.createElement('div');\n // None of our tests actually require attaching the container to the\n // DOM, and doing so creates a mess that we rely on test isolation to\n // clean up, so we're going to stop honoring the name of this method\n // (and probably rename it eventually) if no problems arise.\n // document.documentElement.appendChild(div);\n return React.render(instance, div);\n },\n\n isElement: function(element) {\n return ReactElement.isValidElement(element);\n },\n\n isElementOfType: function(inst, convenienceConstructor) {\n return (\n ReactElement.isValidElement(inst) &&\n inst.type === convenienceConstructor\n );\n },\n\n isDOMComponent: function(inst) {\n // TODO: Fix this heuristic. It's just here because composites can currently\n // pretend to be DOM components.\n return !!(inst && inst.tagName && inst.getDOMNode);\n },\n\n isDOMComponentElement: function(inst) {\n return !!(inst &&\n ReactElement.isValidElement(inst) &&\n !!inst.tagName);\n },\n\n isCompositeComponent: function(inst) {\n return typeof inst.render === 'function' &&\n typeof inst.setState === 'function';\n },\n\n isCompositeComponentWithType: function(inst, type) {\n return !!(ReactTestUtils.isCompositeComponent(inst) &&\n (inst.constructor === type));\n },\n\n isCompositeComponentElement: function(inst) {\n if (!ReactElement.isValidElement(inst)) {\n return false;\n }\n // We check the prototype of the type that will get mounted, not the\n // instance itself. This is a future proof way of duck typing.\n var prototype = inst.type.prototype;\n return (\n typeof prototype.render === 'function' &&\n typeof prototype.setState === 'function'\n );\n },\n\n isCompositeComponentElementWithType: function(inst, type) {\n return !!(ReactTestUtils.isCompositeComponentElement(inst) &&\n (inst.constructor === type));\n },\n\n getRenderedChildOfCompositeComponent: function(inst) {\n if (!ReactTestUtils.isCompositeComponent(inst)) {\n return null;\n }\n var internalInstance = ReactInstanceMap.get(inst);\n return internalInstance._renderedComponent.getPublicInstance();\n },\n\n findAllInRenderedTree: function(inst, test) {\n if (!inst) {\n return [];\n }\n var ret = test(inst) ? [inst] : [];\n if (ReactTestUtils.isDOMComponent(inst)) {\n var internalInstance = ReactInstanceMap.get(inst);\n var renderedChildren = internalInstance\n ._renderedComponent\n ._renderedChildren;\n var key;\n for (key in renderedChildren) {\n if (!renderedChildren.hasOwnProperty(key)) {\n continue;\n }\n if (!renderedChildren[key].getPublicInstance) {\n continue;\n }\n ret = ret.concat(\n ReactTestUtils.findAllInRenderedTree(\n renderedChildren[key].getPublicInstance(),\n test\n )\n );\n }\n } else if (ReactTestUtils.isCompositeComponent(inst)) {\n ret = ret.concat(\n ReactTestUtils.findAllInRenderedTree(\n ReactTestUtils.getRenderedChildOfCompositeComponent(inst),\n test\n )\n );\n }\n return ret;\n },\n\n /**\n * Finds all instance of components in the rendered tree that are DOM\n * components with the class name matching `className`.\n * @return an array of all the matches.\n */\n scryRenderedDOMComponentsWithClass: function(root, className) {\n return ReactTestUtils.findAllInRenderedTree(root, function(inst) {\n var instClassName = inst.props.className;\n return ReactTestUtils.isDOMComponent(inst) && (\n instClassName &&\n (' ' + instClassName + ' ').indexOf(' ' + className + ' ') !== -1\n );\n });\n },\n\n /**\n * Like scryRenderedDOMComponentsWithClass but expects there to be one result,\n * and returns that one result, or throws exception if there is any other\n * number of matches besides one.\n * @return {!ReactDOMComponent} The one match.\n */\n findRenderedDOMComponentWithClass: function(root, className) {\n var all =\n ReactTestUtils.scryRenderedDOMComponentsWithClass(root, className);\n if (all.length !== 1) {\n throw new Error('Did not find exactly one match ' +\n '(found: ' + all.length + ') for class:' + className\n );\n }\n return all[0];\n },\n\n\n /**\n * Finds all instance of components in the rendered tree that are DOM\n * components with the tag name matching `tagName`.\n * @return an array of all the matches.\n */\n scryRenderedDOMComponentsWithTag: function(root, tagName) {\n return ReactTestUtils.findAllInRenderedTree(root, function(inst) {\n return ReactTestUtils.isDOMComponent(inst) &&\n inst.tagName === tagName.toUpperCase();\n });\n },\n\n /**\n * Like scryRenderedDOMComponentsWithTag but expects there to be one result,\n * and returns that one result, or throws exception if there is any other\n * number of matches besides one.\n * @return {!ReactDOMComponent} The one match.\n */\n findRenderedDOMComponentWithTag: function(root, tagName) {\n var all = ReactTestUtils.scryRenderedDOMComponentsWithTag(root, tagName);\n if (all.length !== 1) {\n throw new Error('Did not find exactly one match for tag:' + tagName);\n }\n return all[0];\n },\n\n\n /**\n * Finds all instances of components with type equal to `componentType`.\n * @return an array of all the matches.\n */\n scryRenderedComponentsWithType: function(root, componentType) {\n return ReactTestUtils.findAllInRenderedTree(root, function(inst) {\n return ReactTestUtils.isCompositeComponentWithType(\n inst,\n componentType\n );\n });\n },\n\n /**\n * Same as `scryRenderedComponentsWithType` but expects there to be one result\n * and returns that one result, or throws exception if there is any other\n * number of matches besides one.\n * @return {!ReactComponent} The one match.\n */\n findRenderedComponentWithType: function(root, componentType) {\n var all = ReactTestUtils.scryRenderedComponentsWithType(\n root,\n componentType\n );\n if (all.length !== 1) {\n throw new Error(\n 'Did not find exactly one match for componentType:' + componentType\n );\n }\n return all[0];\n },\n\n /**\n * Pass a mocked component module to this method to augment it with\n * useful methods that allow it to be used as a dummy React component.\n * Instead of rendering as usual, the component will become a simple\n * <div> containing any provided children.\n *\n * @param {object} module the mock function object exported from a\n * module that defines the component to be mocked\n * @param {?string} mockTagName optional dummy root tag name to return\n * from render method (overrides\n * module.mockTagName if provided)\n * @return {object} the ReactTestUtils object (for chaining)\n */\n mockComponent: function(module, mockTagName) {\n mockTagName = mockTagName || module.mockTagName || \"div\";\n\n module.prototype.render.mockImplementation(function() {\n return React.createElement(\n mockTagName,\n null,\n this.props.children\n );\n });\n\n return this;\n },\n\n /**\n * Simulates a top level event being dispatched from a raw event that occured\n * on an `Element` node.\n * @param topLevelType {Object} A type from `EventConstants.topLevelTypes`\n * @param {!Element} node The dom to simulate an event occurring on.\n * @param {?Event} fakeNativeEvent Fake native event to use in SyntheticEvent.\n */\n simulateNativeEventOnNode: function(topLevelType, node, fakeNativeEvent) {\n fakeNativeEvent.target = node;\n ReactBrowserEventEmitter.ReactEventListener.dispatchEvent(\n topLevelType,\n fakeNativeEvent\n );\n },\n\n /**\n * Simulates a top level event being dispatched from a raw event that occured\n * on the `ReactDOMComponent` `comp`.\n * @param topLevelType {Object} A type from `EventConstants.topLevelTypes`.\n * @param comp {!ReactDOMComponent}\n * @param {?Event} fakeNativeEvent Fake native event to use in SyntheticEvent.\n */\n simulateNativeEventOnDOMComponent: function(\n topLevelType,\n comp,\n fakeNativeEvent) {\n ReactTestUtils.simulateNativeEventOnNode(\n topLevelType,\n comp.getDOMNode(),\n fakeNativeEvent\n );\n },\n\n nativeTouchData: function(x, y) {\n return {\n touches: [\n {pageX: x, pageY: y}\n ]\n };\n },\n\n createRenderer: function() {\n return new ReactShallowRenderer();\n },\n\n Simulate: null,\n SimulateNative: {}\n};\n\n/**\n * @class ReactShallowRenderer\n */\nvar ReactShallowRenderer = function() {\n this._instance = null;\n};\n\nReactShallowRenderer.prototype.getRenderOutput = function() {\n return (\n (this._instance && this._instance._renderedComponent &&\n this._instance._renderedComponent._renderedOutput)\n || null\n );\n};\n\nvar NoopInternalComponent = function(element) {\n this._renderedOutput = element;\n this._currentElement = element === null || element === false ?\n ReactEmptyComponent.emptyElement :\n element;\n};\n\nNoopInternalComponent.prototype = {\n\n mountComponent: function() {\n },\n\n receiveComponent: function(element) {\n this._renderedOutput = element;\n this._currentElement = element === null || element === false ?\n ReactEmptyComponent.emptyElement :\n element;\n },\n\n unmountComponent: function() {\n }\n\n};\n\nvar ShallowComponentWrapper = function() { };\nassign(\n ShallowComponentWrapper.prototype,\n ReactCompositeComponent.Mixin, {\n _instantiateReactComponent: function(element) {\n return new NoopInternalComponent(element);\n },\n _replaceNodeWithMarkupByID: function() {},\n _renderValidatedComponent:\n ReactCompositeComponent.Mixin.\n _renderValidatedComponentWithoutOwnerOrContext\n }\n);\n\nReactShallowRenderer.prototype.render = function(element, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();\n this._render(element, transaction, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n};\n\nReactShallowRenderer.prototype.unmount = function() {\n if (this._instance) {\n this._instance.unmountComponent();\n }\n};\n\nReactShallowRenderer.prototype._render = function(element, transaction, context) {\n if (!this._instance) {\n var rootID = ReactInstanceHandles.createReactRootID();\n var instance = new ShallowComponentWrapper(element.type);\n instance.construct(element);\n\n instance.mountComponent(rootID, transaction, context);\n\n this._instance = instance;\n } else {\n this._instance.receiveComponent(element, transaction, context);\n }\n};\n\n/**\n * Exports:\n *\n * - `ReactTestUtils.Simulate.click(Element/ReactDOMComponent)`\n * - `ReactTestUtils.Simulate.mouseMove(Element/ReactDOMComponent)`\n * - `ReactTestUtils.Simulate.change(Element/ReactDOMComponent)`\n * - ... (All keys from event plugin `eventTypes` objects)\n */\nfunction makeSimulator(eventType) {\n return function(domComponentOrNode, eventData) {\n var node;\n if (ReactTestUtils.isDOMComponent(domComponentOrNode)) {\n node = domComponentOrNode.getDOMNode();\n } else if (domComponentOrNode.tagName) {\n node = domComponentOrNode;\n }\n\n var fakeNativeEvent = new Event();\n fakeNativeEvent.target = node;\n // We don't use SyntheticEvent.getPooled in order to not have to worry about\n // properly destroying any properties assigned from `eventData` upon release\n var event = new SyntheticEvent(\n ReactBrowserEventEmitter.eventNameDispatchConfigs[eventType],\n ReactMount.getID(node),\n fakeNativeEvent\n );\n assign(event, eventData);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n ReactUpdates.batchedUpdates(function() {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue();\n });\n };\n}\n\nfunction buildSimulators() {\n ReactTestUtils.Simulate = {};\n\n var eventType;\n for (eventType in ReactBrowserEventEmitter.eventNameDispatchConfigs) {\n /**\n * @param {!Element || ReactDOMComponent} domComponentOrNode\n * @param {?object} eventData Fake event data to use in SyntheticEvent.\n */\n ReactTestUtils.Simulate[eventType] = makeSimulator(eventType);\n }\n}\n\n// Rebuild ReactTestUtils.Simulate whenever event plugins are injected\nvar oldInjectEventPluginOrder = EventPluginHub.injection.injectEventPluginOrder;\nEventPluginHub.injection.injectEventPluginOrder = function() {\n oldInjectEventPluginOrder.apply(this, arguments);\n buildSimulators();\n};\nvar oldInjectEventPlugins = EventPluginHub.injection.injectEventPluginsByName;\nEventPluginHub.injection.injectEventPluginsByName = function() {\n oldInjectEventPlugins.apply(this, arguments);\n buildSimulators();\n};\n\nbuildSimulators();\n\n/**\n * Exports:\n *\n * - `ReactTestUtils.SimulateNative.click(Element/ReactDOMComponent)`\n * - `ReactTestUtils.SimulateNative.mouseMove(Element/ReactDOMComponent)`\n * - `ReactTestUtils.SimulateNative.mouseIn/ReactDOMComponent)`\n * - `ReactTestUtils.SimulateNative.mouseOut(Element/ReactDOMComponent)`\n * - ... (All keys from `EventConstants.topLevelTypes`)\n *\n * Note: Top level event types are a subset of the entire set of handler types\n * (which include a broader set of \"synthetic\" events). For example, onDragDone\n * is a synthetic event. Except when testing an event plugin or React's event\n * handling code specifically, you probably want to use ReactTestUtils.Simulate\n * to dispatch synthetic events.\n */\n\nfunction makeNativeSimulator(eventType) {\n return function(domComponentOrNode, nativeEventData) {\n var fakeNativeEvent = new Event(eventType);\n assign(fakeNativeEvent, nativeEventData);\n if (ReactTestUtils.isDOMComponent(domComponentOrNode)) {\n ReactTestUtils.simulateNativeEventOnDOMComponent(\n eventType,\n domComponentOrNode,\n fakeNativeEvent\n );\n } else if (!!domComponentOrNode.tagName) {\n // Will allow on actual dom nodes.\n ReactTestUtils.simulateNativeEventOnNode(\n eventType,\n domComponentOrNode,\n fakeNativeEvent\n );\n }\n };\n}\n\nvar eventType;\nfor (eventType in topLevelTypes) {\n // Event type is stored as 'topClick' - we transform that to 'click'\n var convenienceName = eventType.indexOf('top') === 0 ?\n eventType.charAt(3).toLowerCase() + eventType.substr(4) : eventType;\n /**\n * @param {!Element || ReactDOMComponent} domComponentOrNode\n * @param {?Event} nativeEventData Fake native event to use in SyntheticEvent.\n */\n ReactTestUtils.SimulateNative[convenienceName] =\n makeNativeSimulator(eventType);\n}\n\nmodule.exports = ReactTestUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactTestUtils.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native-button/Button.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\nvar React=require('react-native');var \n\nPropTypes=\n\n\n\n\nReact.PropTypes;var StyleSheet=React.StyleSheet;var Text=React.Text;var TouchableOpacity=React.TouchableOpacity;var View=React.View;\n\nvar coalesceNonElementChildren=require('./coalesceNonElementChildren');\n\nvar systemButtonOpacity=0.2;\n\nvar Button=React.createClass({displayName:'Button',\npropTypes:_extends({},\nTouchableOpacity.propTypes,{\ndisabled:PropTypes.bool,\nstyle:Text.propTypes.style}),\n\n\nrender:function(){\nvar touchableProps={\nactiveOpacity:this._computeActiveOpacity()};\n\nif(!this.props.disabled){\ntouchableProps.onPress = this.props.onPress;\ntouchableProps.onPressIn = this.props.onPressIn;\ntouchableProps.onPressOut = this.props.onPressOut;\ntouchableProps.onLongPress = this.props.onLongPress;}\n\n\nreturn (\nReact.createElement(TouchableOpacity,touchableProps,\nthis._renderGroupedChildren()));},\n\n\n\n\n_renderGroupedChildren:function(){var _this=this;\nvar buttonStateStyle=this.props.disabled?styles.disabledText:null;\n\nvar children=coalesceNonElementChildren(this.props.children,function(children,index){\nreturn (\nReact.createElement(Text,{\nkey:index,\nstyle:[styles.text,buttonStateStyle,_this.props.style]},\nchildren));});\n\n\n\n\nswitch(children.length){\ncase 0:\nreturn null;\ncase 1:\nreturn children[0];\ndefault:\nreturn React.createElement(View,{style:styles.group},children);}},\n\n\n\n_computeActiveOpacity:function(){\nif(this.props.disabled){\nreturn 1;}\n\nreturn this.props.activeOpacity != null?\nthis.props.activeOpacity:\nsystemButtonOpacity;}});\n\n\n\nvar styles=StyleSheet.create({\ntext:{\ncolor:'#007aff',\nfontFamily:'.HelveticaNeueInterface-MediumP4',\nfontSize:17,\nfontWeight:'bold',\ntextAlign:'center'},\n\ndisabledText:{\ncolor:'#dcdcdc'},\n\ngroup:{\nflexDirection:'row',\njustifyContent:'space-between',\nalignItems:'center'}});\n\n\n\nmodule.exports = Button;","sourceCode":"'use strict';\n\nvar React = require('react-native');\nvar {\n PropTypes,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n} = React;\n\nvar coalesceNonElementChildren = require('./coalesceNonElementChildren');\n\nvar systemButtonOpacity = 0.2;\n\nvar Button = React.createClass({\n propTypes: {\n ...TouchableOpacity.propTypes,\n disabled: PropTypes.bool,\n style: Text.propTypes.style,\n },\n\n render() {\n var touchableProps = {\n activeOpacity: this._computeActiveOpacity(),\n };\n if (!this.props.disabled) {\n touchableProps.onPress = this.props.onPress;\n touchableProps.onPressIn = this.props.onPressIn;\n touchableProps.onPressOut = this.props.onPressOut;\n touchableProps.onLongPress = this.props.onLongPress;\n }\n\n return (\n <TouchableOpacity {...touchableProps}>\n {this._renderGroupedChildren()}\n </TouchableOpacity>\n );\n },\n\n _renderGroupedChildren() {\n var buttonStateStyle = this.props.disabled ? styles.disabledText : null;\n\n var children = coalesceNonElementChildren(this.props.children, (children, index) => {\n return (\n <Text\n key={index}\n style={[styles.text, buttonStateStyle, this.props.style]}>\n {children}\n </Text>\n );\n });\n\n switch (children.length) {\n case 0:\n return null;\n case 1:\n return children[0];\n default:\n return <View style={styles.group}>{children}</View>;\n }\n },\n\n _computeActiveOpacity() {\n if (this.props.disabled) {\n return 1;\n }\n return this.props.activeOpacity != null ?\n this.props.activeOpacity :\n systemButtonOpacity;\n },\n});\n\nvar styles = StyleSheet.create({\n text: {\n color: '#007aff',\n fontFamily: '.HelveticaNeueInterface-MediumP4',\n fontSize: 17,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n disabledText: {\n color: '#dcdcdc',\n },\n group: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n});\n\nmodule.exports = Button;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native-button/Button.js"},"mtime":1430539889000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/Libraries/react-native/react-native.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNative=Object.assign(Object.create(require('React')),{\n\nActivityIndicatorIOS:require('ActivityIndicatorIOS'),\nDatePickerIOS:require('DatePickerIOS'),\nImage:require('Image'),\nListView:require('ListView'),\nMapView:require('MapView'),\nNavigator:require('Navigator'),\nNavigatorIOS:require('NavigatorIOS'),\nPickerIOS:require('PickerIOS'),\nProgressViewIOS:require('ProgressViewIOS'),\nScrollView:require('ScrollView'),\nSegmentedControlIOS:require('SegmentedControlIOS'),\nSliderIOS:require('SliderIOS'),\nSwitchIOS:require('SwitchIOS'),\nTabBarIOS:require('TabBarIOS'),\nText:require('Text'),\nTextInput:require('TextInput'),\nTouchableHighlight:require('TouchableHighlight'),\nTouchableOpacity:require('TouchableOpacity'),\nTouchableWithoutFeedback:require('TouchableWithoutFeedback'),\nView:require('View'),\nWebView:require('WebView'),\n\n\nActionSheetIOS:require('ActionSheetIOS'),\nAdSupportIOS:require('AdSupportIOS'),\nAlertIOS:require('AlertIOS'),\nAnimated:require('Animated'),\nAppRegistry:require('AppRegistry'),\nAppStateIOS:require('AppStateIOS'),\nAsyncStorage:require('AsyncStorage'),\nCameraRoll:require('CameraRoll'),\nDimensions:require('Dimensions'),\nEasing:require('Easing'),\nImagePickerIOS:require('ImagePickerIOS'),\nInteractionManager:require('InteractionManager'),\nLayoutAnimation:require('LayoutAnimation'),\nLinkingIOS:require('LinkingIOS'),\nNetInfo:require('NetInfo'),\nPanResponder:require('PanResponder'),\nPixelRatio:require('PixelRatio'),\nPushNotificationIOS:require('PushNotificationIOS'),\nSettings:require('Settings'),\nStatusBarIOS:require('StatusBarIOS'),\nStyleSheet:require('StyleSheet'),\nVibrationIOS:require('VibrationIOS'),\n\n\nDeviceEventEmitter:require('RCTDeviceEventEmitter'),\nNativeAppEventEmitter:require('RCTNativeAppEventEmitter'),\nNativeModules:require('NativeModules'),\nPlatform:require('Platform'),\nrequireNativeComponent:require('requireNativeComponent'),\n\n\nEdgeInsetsPropType:require('EdgeInsetsPropType'),\nPointPropType:require('PointPropType'),\n\naddons:{\nLinkedStateMixin:require('LinkedStateMixin'),\nPerf:undefined,\nPureRenderMixin:require('ReactComponentWithPureRenderMixin'),\nTestModule:require('NativeModules').TestModule,\nTestUtils:undefined,\nbatchedUpdates:require('ReactUpdates').batchedUpdates,\ncloneWithProps:require('cloneWithProps'),\ncreateFragment:require('ReactFragment').create,\nupdate:require('update')}});\n\n\n\nif(__DEV__){\nReactNative.addons.Perf = require('ReactDefaultPerf');\nReactNative.addons.TestUtils = require('ReactTestUtils');}\n\n\nmodule.exports = ReactNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n'use strict';\n\n// Export React, plus some native additions.\n//\n// The use of Object.create/assign is to work around a Flow bug (#6560135).\n// Once that is fixed, change this back to\n//\n// var ReactNative = {...require('React'), /* additions */}\n//\nvar ReactNative = Object.assign(Object.create(require('React')), {\n // Components\n ActivityIndicatorIOS: require('ActivityIndicatorIOS'),\n DatePickerIOS: require('DatePickerIOS'),\n Image: require('Image'),\n ListView: require('ListView'),\n MapView: require('MapView'),\n Navigator: require('Navigator'),\n NavigatorIOS: require('NavigatorIOS'),\n PickerIOS: require('PickerIOS'),\n ProgressViewIOS: require('ProgressViewIOS'),\n ScrollView: require('ScrollView'),\n SegmentedControlIOS: require('SegmentedControlIOS'),\n SliderIOS: require('SliderIOS'),\n SwitchIOS: require('SwitchIOS'),\n TabBarIOS: require('TabBarIOS'),\n Text: require('Text'),\n TextInput: require('TextInput'),\n TouchableHighlight: require('TouchableHighlight'),\n TouchableOpacity: require('TouchableOpacity'),\n TouchableWithoutFeedback: require('TouchableWithoutFeedback'),\n View: require('View'),\n WebView: require('WebView'),\n\n // APIs\n ActionSheetIOS: require('ActionSheetIOS'),\n AdSupportIOS: require('AdSupportIOS'),\n AlertIOS: require('AlertIOS'),\n Animated: require('Animated'),\n AppRegistry: require('AppRegistry'),\n AppStateIOS: require('AppStateIOS'),\n AsyncStorage: require('AsyncStorage'),\n CameraRoll: require('CameraRoll'),\n Dimensions: require('Dimensions'),\n Easing: require('Easing'),\n ImagePickerIOS: require('ImagePickerIOS'),\n InteractionManager: require('InteractionManager'),\n LayoutAnimation: require('LayoutAnimation'),\n LinkingIOS: require('LinkingIOS'),\n NetInfo: require('NetInfo'),\n PanResponder: require('PanResponder'),\n PixelRatio: require('PixelRatio'),\n PushNotificationIOS: require('PushNotificationIOS'),\n Settings: require('Settings'),\n StatusBarIOS: require('StatusBarIOS'),\n StyleSheet: require('StyleSheet'),\n VibrationIOS: require('VibrationIOS'),\n\n // Plugins\n DeviceEventEmitter: require('RCTDeviceEventEmitter'),\n NativeAppEventEmitter: require('RCTNativeAppEventEmitter'),\n NativeModules: require('NativeModules'),\n Platform: require('Platform'),\n requireNativeComponent: require('requireNativeComponent'),\n\n // Prop Types\n EdgeInsetsPropType: require('EdgeInsetsPropType'),\n PointPropType: require('PointPropType'),\n\n addons: {\n LinkedStateMixin: require('LinkedStateMixin'),\n Perf: undefined,\n PureRenderMixin: require('ReactComponentWithPureRenderMixin'),\n TestModule: require('NativeModules').TestModule,\n TestUtils: undefined,\n batchedUpdates: require('ReactUpdates').batchedUpdates,\n cloneWithProps: require('cloneWithProps'),\n createFragment: require('ReactFragment').create,\n update: require('update'),\n },\n});\n\nif (__DEV__) {\n ReactNative.addons.Perf = require('ReactDefaultPerf');\n ReactNative.addons.TestUtils = require('ReactTestUtils');\n}\n\nmodule.exports = ReactNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/Libraries/react-native/react-native.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native-button/coalesceNonElementChildren.js":{"data":{"code":"'use strict';\n\nvar React=require('react-native');\n\nfunction coalesceNonElementChildren(children,coalesceNodes){\nvar coalescedChildren=[];\n\nvar contiguousNonElements=[];\nReact.Children.forEach(children,function(child){\nif(!React.isValidElement(child)){\ncontiguousNonElements.push(child);\nreturn;}\n\n\nif(contiguousNonElements.length){\nvar coalescedChild=coalesceNodes(contiguousNonElements,coalescedChildren.length);\ncoalescedChildren.push(\ncoalesceNodes(contiguousNonElements,coalescedChildren.length));\n\ncontiguousNonElements = [];}\n\n\ncoalescedChildren.push(child);});\n\n\nif(contiguousNonElements.length){\ncoalescedChildren.push(\ncoalesceNodes(contiguousNonElements,coalescedChildren.length));}\n\n\n\nreturn coalescedChildren;}\n\n\nmodule.exports = coalesceNonElementChildren;","sourceCode":"'use strict';\n\nvar React = require('react-native');\n\nfunction coalesceNonElementChildren(children, coalesceNodes) {\n var coalescedChildren = [];\n\n var contiguousNonElements = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) {\n contiguousNonElements.push(child);\n return;\n }\n\n if (contiguousNonElements.length) {\n var coalescedChild = coalesceNodes(contiguousNonElements, coalescedChildren.length);\n coalescedChildren.push(\n coalesceNodes(contiguousNonElements, coalescedChildren.length)\n );\n contiguousNonElements = [];\n }\n\n coalescedChildren.push(child);\n });\n\n if (contiguousNonElements.length) {\n coalescedChildren.push(\n coalesceNodes(contiguousNonElements, coalescedChildren.length)\n );\n }\n\n return coalescedChildren;\n}\n\nmodule.exports = coalesceNonElementChildren;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native-button/coalesceNonElementChildren.js"},"mtime":1430540029000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/request-fetch-adapter.js":{"data":{"code":"module.exports.request = function request(verb,url,body,callback){\nif(typeof body === \"function\"){\ncallback = body;\nbody = null;}\n\n\nvar headers={\n'Accept':'application/json',\n'Content-Type':'application/json'};\n\n\nif(body && typeof body === \"object\"){\nbody = JSON.stringify(body);}\n\n\nvar statusCode;\n\nfetch(url,{\nmethod:verb,\nheaders:headers,\nbody:body}).\nthen(function(response){\nstatusCode = response.status;\nreturn response.text();}).\nthen(function(body){\ncallback(null,{statusCode:statusCode,body:body});}).\ncatch(function(err){\ncallback(err);});};","sourceCode":"module.exports.request = function request(verb, url, body, callback) {\n if (typeof body === \"function\") {\n callback = body;\n body = null;\n }\n\n var headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n };\n\n if (body && typeof body === \"object\") {\n body = JSON.stringify(body);\n }\n\n var statusCode;\n\n fetch(url, {\n method: verb,\n headers: headers,\n body: body\n }).then(function(response) {\n statusCode = response.status;\n return response.text();\n }).then(function(body) {\n callback(null, {statusCode: statusCode, body: body});\n }).catch(function(err) {\n callback(err);\n });\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/request-fetch-adapter.js"},"mtime":1439251638000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/semver/semver.browser.js":{"data":{"code":";(function(exports){\n\n\nif(typeof module === 'object' && module.exports === exports)\nexports = module.exports = SemVer;\n\n\n\n\n\nexports.SEMVER_SPEC_VERSION = '2.0.0';\n\nvar MAX_LENGTH=256;\nvar MAX_SAFE_INTEGER=Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n\nvar re=exports.re = [];\nvar src=exports.src = [];\nvar R=0;\n\n\n\n\n\n\n\nvar NUMERICIDENTIFIER=R++;\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*';\nvar NUMERICIDENTIFIERLOOSE=R++;\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+';\n\n\n\n\n\n\nvar NONNUMERICIDENTIFIER=R++;\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*';\n\n\n\n\n\nvar MAINVERSION=R++;\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' + \n'(' + src[NUMERICIDENTIFIER] + ')\\\\.' + \n'(' + src[NUMERICIDENTIFIER] + ')';\n\nvar MAINVERSIONLOOSE=R++;\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' + \n'(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' + \n'(' + src[NUMERICIDENTIFIERLOOSE] + ')';\n\n\n\n\nvar PRERELEASEIDENTIFIER=R++;\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + \n'|' + src[NONNUMERICIDENTIFIER] + ')';\n\nvar PRERELEASEIDENTIFIERLOOSE=R++;\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + \n'|' + src[NONNUMERICIDENTIFIER] + ')';\n\n\n\n\n\n\nvar PRERELEASE=R++;\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + \n'(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))';\n\nvar PRERELEASELOOSE=R++;\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + \n'(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';\n\n\n\n\nvar BUILDIDENTIFIER=R++;\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+';\n\n\n\n\n\nvar BUILD=R++;\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] + \n'(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))';\n\n\n\n\n\n\n\n\n\n\n\nvar FULL=R++;\nvar FULLPLAIN='v?' + src[MAINVERSION] + \nsrc[PRERELEASE] + '?' + \nsrc[BUILD] + '?';\n\nsrc[FULL] = '^' + FULLPLAIN + '$';\n\n\n\n\nvar LOOSEPLAIN='[v=\\\\s]*' + src[MAINVERSIONLOOSE] + \nsrc[PRERELEASELOOSE] + '?' + \nsrc[BUILD] + '?';\n\nvar LOOSE=R++;\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$';\n\nvar GTLT=R++;\nsrc[GTLT] = '((?:<|>)?=?)';\n\n\n\n\nvar XRANGEIDENTIFIERLOOSE=R++;\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*';\nvar XRANGEIDENTIFIER=R++;\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*';\n\nvar XRANGEPLAIN=R++;\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' + \n'(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' + \n'(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' + \n'(?:' + src[PRERELEASE] + ')?' + \nsrc[BUILD] + '?' + \n')?)?';\n\nvar XRANGEPLAINLOOSE=R++;\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + \n'(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + \n'(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + \n'(?:' + src[PRERELEASELOOSE] + ')?' + \nsrc[BUILD] + '?' + \n')?)?';\n\nvar XRANGE=R++;\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$';\nvar XRANGELOOSE=R++;\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$';\n\n\n\nvar LONETILDE=R++;\nsrc[LONETILDE] = '(?:~>?)';\n\nvar TILDETRIM=R++;\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+';\nre[TILDETRIM] = new RegExp(src[TILDETRIM],'g');\nvar tildeTrimReplace='$1~';\n\nvar TILDE=R++;\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';\nvar TILDELOOSE=R++;\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';\n\n\n\nvar LONECARET=R++;\nsrc[LONECARET] = '(?:\\\\^)';\n\nvar CARETTRIM=R++;\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+';\nre[CARETTRIM] = new RegExp(src[CARETTRIM],'g');\nvar caretTrimReplace='$1^';\n\nvar CARET=R++;\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';\nvar CARETLOOSE=R++;\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';\n\n\nvar COMPARATORLOOSE=R++;\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$';\nvar COMPARATOR=R++;\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$';\n\n\n\n\nvar COMPARATORTRIM=R++;\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] + \n'\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';\n\n\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM],'g');\nvar comparatorTrimReplace='$1$2$3';\n\n\n\n\n\n\nvar HYPHENRANGE=R++;\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' + \n'\\\\s+-\\\\s+' + \n'(' + src[XRANGEPLAIN] + ')' + \n'\\\\s*$';\n\nvar HYPHENRANGELOOSE=R++;\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' + \n'\\\\s+-\\\\s+' + \n'(' + src[XRANGEPLAINLOOSE] + ')' + \n'\\\\s*$';\n\n\nvar STAR=R++;\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*';\n\n\n\nfor(var i=0;i < R;i++) {\n;\nif(!re[i])\nre[i] = new RegExp(src[i]);}\n\n\nexports.parse = parse;\nfunction parse(version,loose){\nif(version instanceof SemVer)\nreturn version;\n\nif(typeof version !== 'string')\nreturn null;\n\nif(version.length > MAX_LENGTH)\nreturn null;\n\nvar r=loose?re[LOOSE]:re[FULL];\nif(!r.test(version))\nreturn null;\n\ntry{\nreturn new SemVer(version,loose);}\ncatch(er) {\nreturn null;}}\n\n\n\nexports.valid = valid;\nfunction valid(version,loose){\nvar v=parse(version,loose);\nreturn v?v.version:null;}\n\n\n\nexports.clean = clean;\nfunction clean(version,loose){\nvar s=parse(version.trim().replace(/^[=v]+/,''),loose);\nreturn s?s.version:null;}\n\n\nexports.SemVer = SemVer;\n\nfunction SemVer(version,loose){\nif(version instanceof SemVer){\nif(version.loose === loose)\nreturn version;else \n\nversion = version.version;}else \nif(typeof version !== 'string'){\nthrow new TypeError('Invalid Version: ' + version);}\n\n\nif(version.length > MAX_LENGTH)\nthrow new TypeError('version is longer than ' + MAX_LENGTH + ' characters');\n\nif(!(this instanceof SemVer))\nreturn new SemVer(version,loose);\n\n;\nthis.loose = loose;\nvar m=version.trim().match(loose?re[LOOSE]:re[FULL]);\n\nif(!m)\nthrow new TypeError('Invalid Version: ' + version);\n\nthis.raw = version;\n\n\nthis.major = +m[1];\nthis.minor = +m[2];\nthis.patch = +m[3];\n\nif(this.major > MAX_SAFE_INTEGER || this.major < 0)\nthrow new TypeError('Invalid major version');\n\nif(this.minor > MAX_SAFE_INTEGER || this.minor < 0)\nthrow new TypeError('Invalid minor version');\n\nif(this.patch > MAX_SAFE_INTEGER || this.patch < 0)\nthrow new TypeError('Invalid patch version');\n\n\nif(!m[4])\nthis.prerelease = [];else \n\nthis.prerelease = m[4].split('.').map(function(id){\nif(/^[0-9]+$/.test(id)){\nvar num=+id;\nif(num >= 0 && num < MAX_SAFE_INTEGER)\nreturn num;}\n\nreturn id;});\n\n\nthis.build = m[5]?m[5].split('.'):[];\nthis.format();}\n\n\nSemVer.prototype.format = function(){\nthis.version = this.major + '.' + this.minor + '.' + this.patch;\nif(this.prerelease.length)\nthis.version += '-' + this.prerelease.join('.');\nreturn this.version;};\n\n\nSemVer.prototype.inspect = function(){\nreturn '<SemVer \"' + this + '\">';};\n\n\nSemVer.prototype.toString = function(){\nreturn this.version;};\n\n\nSemVer.prototype.compare = function(other){\n;\nif(!(other instanceof SemVer))\nother = new SemVer(other,this.loose);\n\nreturn this.compareMain(other) || this.comparePre(other);};\n\n\nSemVer.prototype.compareMain = function(other){\nif(!(other instanceof SemVer))\nother = new SemVer(other,this.loose);\n\nreturn compareIdentifiers(this.major,other.major) || \ncompareIdentifiers(this.minor,other.minor) || \ncompareIdentifiers(this.patch,other.patch);};\n\n\nSemVer.prototype.comparePre = function(other){\nif(!(other instanceof SemVer))\nother = new SemVer(other,this.loose);\n\n\nif(this.prerelease.length && !other.prerelease.length)\nreturn -1;else \nif(!this.prerelease.length && other.prerelease.length)\nreturn 1;else \nif(!this.prerelease.length && !other.prerelease.length)\nreturn 0;\n\nvar i=0;\ndo {\nvar a=this.prerelease[i];\nvar b=other.prerelease[i];\n;\nif(a === undefined && b === undefined)\nreturn 0;else \nif(b === undefined)\nreturn 1;else \nif(a === undefined)\nreturn -1;else \nif(a === b)\ncontinue;else \n\nreturn compareIdentifiers(a,b);}while(\n++i);};\n\n\n\n\nSemVer.prototype.inc = function(release,identifier){\nswitch(release){\ncase 'premajor':\nthis.prerelease.length = 0;\nthis.patch = 0;\nthis.minor = 0;\nthis.major++;\nthis.inc('pre',identifier);\nbreak;\ncase 'preminor':\nthis.prerelease.length = 0;\nthis.patch = 0;\nthis.minor++;\nthis.inc('pre',identifier);\nbreak;\ncase 'prepatch':\n\n\n\nthis.prerelease.length = 0;\nthis.inc('patch',identifier);\nthis.inc('pre',identifier);\nbreak;\n\n\ncase 'prerelease':\nif(this.prerelease.length === 0)\nthis.inc('patch',identifier);\nthis.inc('pre',identifier);\nbreak;\n\ncase 'major':\n\n\n\n\nif(this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0)\nthis.major++;\nthis.minor = 0;\nthis.patch = 0;\nthis.prerelease = [];\nbreak;\ncase 'minor':\n\n\n\n\nif(this.patch !== 0 || this.prerelease.length === 0)\nthis.minor++;\nthis.patch = 0;\nthis.prerelease = [];\nbreak;\ncase 'patch':\n\n\n\n\nif(this.prerelease.length === 0)\nthis.patch++;\nthis.prerelease = [];\nbreak;\n\n\ncase 'pre':\nif(this.prerelease.length === 0)\nthis.prerelease = [0];else \n{\nvar i=this.prerelease.length;\nwhile(--i >= 0) {\nif(typeof this.prerelease[i] === 'number'){\nthis.prerelease[i]++;\ni = -2;}}\n\n\nif(i === -1)\nthis.prerelease.push(0);}\n\nif(identifier){\n\n\nif(this.prerelease[0] === identifier){\nif(isNaN(this.prerelease[1]))\nthis.prerelease = [identifier,0];}else \n\nthis.prerelease = [identifier,0];}\n\nbreak;\n\ndefault:\nthrow new Error('invalid increment argument: ' + release);}\n\nthis.format();\nreturn this;};\n\n\nexports.inc = inc;\nfunction inc(version,release,loose,identifier){\nif(typeof loose === 'string'){\nidentifier = loose;\nloose = undefined;}\n\n\ntry{\nreturn new SemVer(version,loose).inc(release,identifier).version;}\ncatch(er) {\nreturn null;}}\n\n\n\nexports.diff = diff;\nfunction diff(version1,version2){\nif(eq(version1,version2)){\nreturn null;}else \n{\nvar v1=parse(version1);\nvar v2=parse(version2);\nif(v1.prerelease.length || v2.prerelease.length){\nfor(var key in v1) {\nif(key === 'major' || key === 'minor' || key === 'patch'){\nif(v1[key] !== v2[key]){\nreturn 'pre' + key;}}}\n\n\n\nreturn 'prerelease';}\n\nfor(var key in v1) {\nif(key === 'major' || key === 'minor' || key === 'patch'){\nif(v1[key] !== v2[key]){\nreturn key;}}}}}\n\n\n\n\n\n\nexports.compareIdentifiers = compareIdentifiers;\n\nvar numeric=/^[0-9]+$/;\nfunction compareIdentifiers(a,b){\nvar anum=numeric.test(a);\nvar bnum=numeric.test(b);\n\nif(anum && bnum){\na = +a;\nb = +b;}\n\n\nreturn anum && !bnum?-1:\nbnum && !anum?1:\na < b?-1:\na > b?1:\n0;}\n\n\nexports.rcompareIdentifiers = rcompareIdentifiers;\nfunction rcompareIdentifiers(a,b){\nreturn compareIdentifiers(b,a);}\n\n\nexports.major = major;\nfunction major(a,loose){\nreturn new SemVer(a,loose).major;}\n\n\nexports.minor = minor;\nfunction minor(a,loose){\nreturn new SemVer(a,loose).minor;}\n\n\nexports.patch = patch;\nfunction patch(a,loose){\nreturn new SemVer(a,loose).patch;}\n\n\nexports.compare = compare;\nfunction compare(a,b,loose){\nreturn new SemVer(a,loose).compare(b);}\n\n\nexports.compareLoose = compareLoose;\nfunction compareLoose(a,b){\nreturn compare(a,b,true);}\n\n\nexports.rcompare = rcompare;\nfunction rcompare(a,b,loose){\nreturn compare(b,a,loose);}\n\n\nexports.sort = sort;\nfunction sort(list,loose){\nreturn list.sort(function(a,b){\nreturn exports.compare(a,b,loose);});}\n\n\n\nexports.rsort = rsort;\nfunction rsort(list,loose){\nreturn list.sort(function(a,b){\nreturn exports.rcompare(a,b,loose);});}\n\n\n\nexports.gt = gt;\nfunction gt(a,b,loose){\nreturn compare(a,b,loose) > 0;}\n\n\nexports.lt = lt;\nfunction lt(a,b,loose){\nreturn compare(a,b,loose) < 0;}\n\n\nexports.eq = eq;\nfunction eq(a,b,loose){\nreturn compare(a,b,loose) === 0;}\n\n\nexports.neq = neq;\nfunction neq(a,b,loose){\nreturn compare(a,b,loose) !== 0;}\n\n\nexports.gte = gte;\nfunction gte(a,b,loose){\nreturn compare(a,b,loose) >= 0;}\n\n\nexports.lte = lte;\nfunction lte(a,b,loose){\nreturn compare(a,b,loose) <= 0;}\n\n\nexports.cmp = cmp;\nfunction cmp(a,op,b,loose){\nvar ret;\nswitch(op){\ncase '===':\nif(typeof a === 'object')a = a.version;\nif(typeof b === 'object')b = b.version;\nret = a === b;\nbreak;\ncase '!==':\nif(typeof a === 'object')a = a.version;\nif(typeof b === 'object')b = b.version;\nret = a !== b;\nbreak;\ncase '':case '=':case '==':ret = eq(a,b,loose);break;\ncase '!=':ret = neq(a,b,loose);break;\ncase '>':ret = gt(a,b,loose);break;\ncase '>=':ret = gte(a,b,loose);break;\ncase '<':ret = lt(a,b,loose);break;\ncase '<=':ret = lte(a,b,loose);break;\ndefault:throw new TypeError('Invalid operator: ' + op);}\n\nreturn ret;}\n\n\nexports.Comparator = Comparator;\nfunction Comparator(comp,loose){\nif(comp instanceof Comparator){\nif(comp.loose === loose)\nreturn comp;else \n\ncomp = comp.value;}\n\n\nif(!(this instanceof Comparator))\nreturn new Comparator(comp,loose);\n\n;\nthis.loose = loose;\nthis.parse(comp);\n\nif(this.semver === ANY)\nthis.value = '';else \n\nthis.value = this.operator + this.semver.version;\n\n;}\n\n\nvar ANY={};\nComparator.prototype.parse = function(comp){\nvar r=this.loose?re[COMPARATORLOOSE]:re[COMPARATOR];\nvar m=comp.match(r);\n\nif(!m)\nthrow new TypeError('Invalid comparator: ' + comp);\n\nthis.operator = m[1];\nif(this.operator === '=')\nthis.operator = '';\n\n\nif(!m[2])\nthis.semver = ANY;else \n\nthis.semver = new SemVer(m[2],this.loose);};\n\n\nComparator.prototype.inspect = function(){\nreturn '<SemVer Comparator \"' + this + '\">';};\n\n\nComparator.prototype.toString = function(){\nreturn this.value;};\n\n\nComparator.prototype.test = function(version){\n;\n\nif(this.semver === ANY)\nreturn true;\n\nif(typeof version === 'string')\nversion = new SemVer(version,this.loose);\n\nreturn cmp(version,this.operator,this.semver,this.loose);};\n\n\n\nexports.Range = Range;\nfunction Range(range,loose){\nif(range instanceof Range && range.loose === loose)\nreturn range;\n\nif(!(this instanceof Range))\nreturn new Range(range,loose);\n\nthis.loose = loose;\n\n\nthis.raw = range;\nthis.set = range.split(/\\s*\\|\\|\\s*/).map(function(range){\nreturn this.parseRange(range.trim());},\nthis).filter(function(c){\n\nreturn c.length;});\n\n\nif(!this.set.length){\nthrow new TypeError('Invalid SemVer Range: ' + range);}\n\n\nthis.format();}\n\n\nRange.prototype.inspect = function(){\nreturn '<SemVer Range \"' + this.range + '\">';};\n\n\nRange.prototype.format = function(){\nthis.range = this.set.map(function(comps){\nreturn comps.join(' ').trim();}).\njoin('||').trim();\nreturn this.range;};\n\n\nRange.prototype.toString = function(){\nreturn this.range;};\n\n\nRange.prototype.parseRange = function(range){\nvar loose=this.loose;\nrange = range.trim();\n;\n\nvar hr=loose?re[HYPHENRANGELOOSE]:re[HYPHENRANGE];\nrange = range.replace(hr,hyphenReplace);\n;\n\nrange = range.replace(re[COMPARATORTRIM],comparatorTrimReplace);\n;\n\n\nrange = range.replace(re[TILDETRIM],tildeTrimReplace);\n\n\nrange = range.replace(re[CARETTRIM],caretTrimReplace);\n\n\nrange = range.split(/\\s+/).join(' ');\n\n\n\n\nvar compRe=loose?re[COMPARATORLOOSE]:re[COMPARATOR];\nvar set=range.split(' ').map(function(comp){\nreturn parseComparator(comp,loose);}).\njoin(' ').split(/\\s+/);\nif(this.loose){\n\nset = set.filter(function(comp){\nreturn !!comp.match(compRe);});}\n\n\nset = set.map(function(comp){\nreturn new Comparator(comp,loose);});\n\n\nreturn set;};\n\n\n\nexports.toComparators = toComparators;\nfunction toComparators(range,loose){\nreturn new Range(range,loose).set.map(function(comp){\nreturn comp.map(function(c){\nreturn c.value;}).\njoin(' ').trim().split(' ');});}\n\n\n\n\n\n\nfunction parseComparator(comp,loose){\n;\ncomp = replaceCarets(comp,loose);\n;\ncomp = replaceTildes(comp,loose);\n;\ncomp = replaceXRanges(comp,loose);\n;\ncomp = replaceStars(comp,loose);\n;\nreturn comp;}\n\n\nfunction isX(id){\nreturn !id || id.toLowerCase() === 'x' || id === '*';}\n\n\n\n\n\n\n\n\nfunction replaceTildes(comp,loose){\nreturn comp.trim().split(/\\s+/).map(function(comp){\nreturn replaceTilde(comp,loose);}).\njoin(' ');}\n\n\nfunction replaceTilde(comp,loose){\nvar r=loose?re[TILDELOOSE]:re[TILDE];\nreturn comp.replace(r,function(_,M,m,p,pr){\n;\nvar ret;\n\nif(isX(M))\nret = '';else \nif(isX(m))\nret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';else \nif(isX(p))\n\nret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';else \nif(pr){\n;\nif(pr.charAt(0) !== '-')\npr = '-' + pr;\nret = '>=' + M + '.' + m + '.' + p + pr + \n' <' + M + '.' + (+m + 1) + '.0';}else \n\n\nret = '>=' + M + '.' + m + '.' + p + \n' <' + M + '.' + (+m + 1) + '.0';\n\n;\nreturn ret;});}\n\n\n\n\n\n\n\n\n\nfunction replaceCarets(comp,loose){\nreturn comp.trim().split(/\\s+/).map(function(comp){\nreturn replaceCaret(comp,loose);}).\njoin(' ');}\n\n\nfunction replaceCaret(comp,loose){\n;\nvar r=loose?re[CARETLOOSE]:re[CARET];\nreturn comp.replace(r,function(_,M,m,p,pr){\n;\nvar ret;\n\nif(isX(M))\nret = '';else \nif(isX(m))\nret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';else \nif(isX(p)){\nif(M === '0')\nret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';else \n\nret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';}else \nif(pr){\n;\nif(pr.charAt(0) !== '-')\npr = '-' + pr;\nif(M === '0'){\nif(m === '0')\nret = '>=' + M + '.' + m + '.' + p + pr + \n' <' + M + '.' + m + '.' + (+p + 1);else \n\nret = '>=' + M + '.' + m + '.' + p + pr + \n' <' + M + '.' + (+m + 1) + '.0';}else \n\nret = '>=' + M + '.' + m + '.' + p + pr + \n' <' + (+M + 1) + '.0.0';}else \n{\n;\nif(M === '0'){\nif(m === '0')\nret = '>=' + M + '.' + m + '.' + p + \n' <' + M + '.' + m + '.' + (+p + 1);else \n\nret = '>=' + M + '.' + m + '.' + p + \n' <' + M + '.' + (+m + 1) + '.0';}else \n\nret = '>=' + M + '.' + m + '.' + p + \n' <' + (+M + 1) + '.0.0';}\n\n\n;\nreturn ret;});}\n\n\n\nfunction replaceXRanges(comp,loose){\n;\nreturn comp.split(/\\s+/).map(function(comp){\nreturn replaceXRange(comp,loose);}).\njoin(' ');}\n\n\nfunction replaceXRange(comp,loose){\ncomp = comp.trim();\nvar r=loose?re[XRANGELOOSE]:re[XRANGE];\nreturn comp.replace(r,function(ret,gtlt,M,m,p,pr){\n;\nvar xM=isX(M);\nvar xm=xM || isX(m);\nvar xp=xm || isX(p);\nvar anyX=xp;\n\nif(gtlt === '=' && anyX)\ngtlt = '';\n\nif(xM){\nif(gtlt === '>' || gtlt === '<'){\n\nret = '<0.0.0';}else \n{\n\nret = '*';}}else \n\nif(gtlt && anyX){\n\nif(xm)\nm = 0;\nif(xp)\np = 0;\n\nif(gtlt === '>'){\n\n\n\ngtlt = '>=';\nif(xm){\nM = +M + 1;\nm = 0;\np = 0;}else \nif(xp){\nm = +m + 1;\np = 0;}}else \n\nif(gtlt === '<='){\n\n\ngtlt = '<';\nif(xm)\nM = +M + 1;else \n\nm = +m + 1;}\n\n\nret = gtlt + M + '.' + m + '.' + p;}else \nif(xm){\nret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';}else \nif(xp){\nret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';}\n\n\n;\n\nreturn ret;});}\n\n\n\n\n\nfunction replaceStars(comp,loose){\n;\n\nreturn comp.trim().replace(re[STAR],'');}\n\n\n\n\n\n\n\nfunction hyphenReplace($0,\nfrom,fM,fm,fp,fpr,fb,\nto,tM,tm,tp,tpr,tb){\n\nif(isX(fM))\nfrom = '';else \nif(isX(fm))\nfrom = '>=' + fM + '.0.0';else \nif(isX(fp))\nfrom = '>=' + fM + '.' + fm + '.0';else \n\nfrom = '>=' + from;\n\nif(isX(tM))\nto = '';else \nif(isX(tm))\nto = '<' + (+tM + 1) + '.0.0';else \nif(isX(tp))\nto = '<' + tM + '.' + (+tm + 1) + '.0';else \nif(tpr)\nto = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;else \n\nto = '<=' + to;\n\nreturn (from + ' ' + to).trim();}\n\n\n\n\nRange.prototype.test = function(version){\nif(!version)\nreturn false;\n\nif(typeof version === 'string')\nversion = new SemVer(version,this.loose);\n\nfor(var i=0;i < this.set.length;i++) {\nif(testSet(this.set[i],version))\nreturn true;}\n\nreturn false;};\n\n\nfunction testSet(set,version){\nfor(var i=0;i < set.length;i++) {\nif(!set[i].test(version))\nreturn false;}\n\n\nif(version.prerelease.length){\n\n\n\n\n\nfor(var i=0;i < set.length;i++) {\n;\nif(set[i].semver === ANY)\ncontinue;\n\nif(set[i].semver.prerelease.length > 0){\nvar allowed=set[i].semver;\nif(allowed.major === version.major && \nallowed.minor === version.minor && \nallowed.patch === version.patch)\nreturn true;}}\n\n\n\n\nreturn false;}\n\n\nreturn true;}\n\n\nexports.satisfies = satisfies;\nfunction satisfies(version,range,loose){\ntry{\nrange = new Range(range,loose);}\ncatch(er) {\nreturn false;}\n\nreturn range.test(version);}\n\n\nexports.maxSatisfying = maxSatisfying;\nfunction maxSatisfying(versions,range,loose){\nreturn versions.filter(function(version){\nreturn satisfies(version,range,loose);}).\nsort(function(a,b){\nreturn rcompare(a,b,loose);})[\n0] || null;}\n\n\nexports.validRange = validRange;\nfunction validRange(range,loose){\ntry{\n\n\nreturn new Range(range,loose).range || '*';}\ncatch(er) {\nreturn null;}}\n\n\n\n\nexports.ltr = ltr;\nfunction ltr(version,range,loose){\nreturn outside(version,range,'<',loose);}\n\n\n\nexports.gtr = gtr;\nfunction gtr(version,range,loose){\nreturn outside(version,range,'>',loose);}\n\n\nexports.outside = outside;\nfunction outside(version,range,hilo,loose){\nversion = new SemVer(version,loose);\nrange = new Range(range,loose);\n\nvar gtfn,ltefn,ltfn,comp,ecomp;\nswitch(hilo){\ncase '>':\ngtfn = gt;\nltefn = lte;\nltfn = lt;\ncomp = '>';\necomp = '>=';\nbreak;\ncase '<':\ngtfn = lt;\nltefn = gte;\nltfn = gt;\ncomp = '<';\necomp = '<=';\nbreak;\ndefault:\nthrow new TypeError('Must provide a hilo val of \"<\" or \">\"');}\n\n\n\nif(satisfies(version,range,loose)){\nreturn false;}\n\n\n\n\n\nfor(var i=0;i < range.set.length;++i) {\nvar comparators=range.set[i];\n\nvar high=null;\nvar low=null;\n\ncomparators.forEach(function(comparator){\nif(comparator.semver === ANY){\ncomparator = new Comparator('>=0.0.0');}\n\nhigh = high || comparator;\nlow = low || comparator;\nif(gtfn(comparator.semver,high.semver,loose)){\nhigh = comparator;}else \nif(ltfn(comparator.semver,low.semver,loose)){\nlow = comparator;}});\n\n\n\n\n\nif(high.operator === comp || high.operator === ecomp){\nreturn false;}\n\n\n\n\nif((!low.operator || low.operator === comp) && \nltefn(version,low.semver)){\nreturn false;}else \nif(low.operator === ecomp && ltfn(version,low.semver)){\nreturn false;}}\n\n\nreturn true;}\n\n\n\nif(typeof define === 'function' && define.amd)\ndefine(exports);})(\n\n\ntypeof exports === 'object'?exports:\ntypeof define === 'function' && define.amd?{}:\nsemver = {});","sourceCode":";(function(exports) {\n\n// export the class if we are in a Node-like system.\nif (typeof module === 'object' && module.exports === exports)\n exports = module.exports = SemVer;\n\n// The debug function is excluded entirely from the minified version.\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0';\n\nvar MAX_LENGTH = 256;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n// The actual regexps go on exports.re\nvar re = exports.re = [];\nvar src = exports.src = [];\nvar R = 0;\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++;\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*';\nvar NUMERICIDENTIFIERLOOSE = R++;\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+';\n\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++;\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*';\n\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++;\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')';\n\nvar MAINVERSIONLOOSE = R++;\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')';\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++;\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n '|' + src[NONNUMERICIDENTIFIER] + ')';\n\nvar PRERELEASEIDENTIFIERLOOSE = R++;\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n '|' + src[NONNUMERICIDENTIFIER] + ')';\n\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++;\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))';\n\nvar PRERELEASELOOSE = R++;\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++;\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+';\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++;\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))';\n\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++;\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n src[PRERELEASE] + '?' +\n src[BUILD] + '?';\n\nsrc[FULL] = '^' + FULLPLAIN + '$';\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n src[PRERELEASELOOSE] + '?' +\n src[BUILD] + '?';\n\nvar LOOSE = R++;\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$';\n\nvar GTLT = R++;\nsrc[GTLT] = '((?:<|>)?=?)';\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++;\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*';\nvar XRANGEIDENTIFIER = R++;\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*';\n\nvar XRANGEPLAIN = R++;\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:' + src[PRERELEASE] + ')?' +\n src[BUILD] + '?' +\n ')?)?';\n\nvar XRANGEPLAINLOOSE = R++;\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[PRERELEASELOOSE] + ')?' +\n src[BUILD] + '?' +\n ')?)?';\n\nvar XRANGE = R++;\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$';\nvar XRANGELOOSE = R++;\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$';\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++;\nsrc[LONETILDE] = '(?:~>?)';\n\nvar TILDETRIM = R++;\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+';\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');\nvar tildeTrimReplace = '$1~';\n\nvar TILDE = R++;\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';\nvar TILDELOOSE = R++;\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++;\nsrc[LONECARET] = '(?:\\\\^)';\n\nvar CARETTRIM = R++;\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+';\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');\nvar caretTrimReplace = '$1^';\n\nvar CARET = R++;\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';\nvar CARETLOOSE = R++;\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++;\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$';\nvar COMPARATOR = R++;\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$';\n\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++;\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');\nvar comparatorTrimReplace = '$1$2$3';\n\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++;\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAIN] + ')' +\n '\\\\s*$';\n\nvar HYPHENRANGELOOSE = R++;\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$';\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++;\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*';\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n ;\n if (!re[i])\n re[i] = new RegExp(src[i]);\n}\n\nexports.parse = parse;\nfunction parse(version, loose) {\n if (version instanceof SemVer)\n return version;\n\n if (typeof version !== 'string')\n return null;\n\n if (version.length > MAX_LENGTH)\n return null;\n\n var r = loose ? re[LOOSE] : re[FULL];\n if (!r.test(version))\n return null;\n\n try {\n return new SemVer(version, loose);\n } catch (er) {\n return null;\n }\n}\n\nexports.valid = valid;\nfunction valid(version, loose) {\n var v = parse(version, loose);\n return v ? v.version : null;\n}\n\n\nexports.clean = clean;\nfunction clean(version, loose) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), loose);\n return s ? s.version : null;\n}\n\nexports.SemVer = SemVer;\n\nfunction SemVer(version, loose) {\n if (version instanceof SemVer) {\n if (version.loose === loose)\n return version;\n else\n version = version.version;\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version);\n }\n\n if (version.length > MAX_LENGTH)\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n\n if (!(this instanceof SemVer))\n return new SemVer(version, loose);\n\n ;\n this.loose = loose;\n var m = version.trim().match(loose ? re[LOOSE] : re[FULL]);\n\n if (!m)\n throw new TypeError('Invalid Version: ' + version);\n\n this.raw = version;\n\n // these are actually numbers\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0)\n throw new TypeError('Invalid major version')\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0)\n throw new TypeError('Invalid minor version')\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0)\n throw new TypeError('Invalid patch version')\n\n // numberify any prerelease numeric ids\n if (!m[4])\n this.prerelease = [];\n else\n this.prerelease = m[4].split('.').map(function(id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER)\n return num\n }\n return id;\n });\n\n this.build = m[5] ? m[5].split('.') : [];\n this.format();\n}\n\nSemVer.prototype.format = function() {\n this.version = this.major + '.' + this.minor + '.' + this.patch;\n if (this.prerelease.length)\n this.version += '-' + this.prerelease.join('.');\n return this.version;\n};\n\nSemVer.prototype.inspect = function() {\n return '<SemVer \"' + this + '\">';\n};\n\nSemVer.prototype.toString = function() {\n return this.version;\n};\n\nSemVer.prototype.compare = function(other) {\n ;\n if (!(other instanceof SemVer))\n other = new SemVer(other, this.loose);\n\n return this.compareMain(other) || this.comparePre(other);\n};\n\nSemVer.prototype.compareMain = function(other) {\n if (!(other instanceof SemVer))\n other = new SemVer(other, this.loose);\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch);\n};\n\nSemVer.prototype.comparePre = function(other) {\n if (!(other instanceof SemVer))\n other = new SemVer(other, this.loose);\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length)\n return -1;\n else if (!this.prerelease.length && other.prerelease.length)\n return 1;\n else if (!this.prerelease.length && !other.prerelease.length)\n return 0;\n\n var i = 0;\n do {\n var a = this.prerelease[i];\n var b = other.prerelease[i];\n ;\n if (a === undefined && b === undefined)\n return 0;\n else if (b === undefined)\n return 1;\n else if (a === undefined)\n return -1;\n else if (a === b)\n continue;\n else\n return compareIdentifiers(a, b);\n } while (++i);\n};\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function(release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc('pre', identifier);\n break;\n case 'preminor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc('pre', identifier);\n break;\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0;\n this.inc('patch', identifier);\n this.inc('pre', identifier);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0)\n this.inc('patch', identifier);\n this.inc('pre', identifier);\n break;\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0)\n this.major++;\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0)\n this.minor++;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0)\n this.patch++;\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0)\n this.prerelease = [0];\n else {\n var i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) // didn't increment anything\n this.prerelease.push(0);\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1]))\n this.prerelease = [identifier, 0];\n } else\n this.prerelease = [identifier, 0];\n }\n break;\n\n default:\n throw new Error('invalid increment argument: ' + release);\n }\n this.format();\n return this;\n};\n\nexports.inc = inc;\nfunction inc(version, release, loose, identifier) {\n if (typeof(loose) === 'string') {\n identifier = loose;\n loose = undefined;\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version;\n } catch (er) {\n return null;\n }\n}\n\nexports.diff = diff;\nfunction diff(version1, version2) {\n if (eq(version1, version2)) {\n return null;\n } else {\n var v1 = parse(version1);\n var v2 = parse(version2);\n if (v1.prerelease.length || v2.prerelease.length) {\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return 'pre'+key;\n }\n }\n }\n return 'prerelease';\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return key;\n }\n }\n }\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers;\n\nvar numeric = /^[0-9]+$/;\nfunction compareIdentifiers(a, b) {\n var anum = numeric.test(a);\n var bnum = numeric.test(b);\n\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n\n return (anum && !bnum) ? -1 :\n (bnum && !anum) ? 1 :\n a < b ? -1 :\n a > b ? 1 :\n 0;\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers;\nfunction rcompareIdentifiers(a, b) {\n return compareIdentifiers(b, a);\n}\n\nexports.major = major;\nfunction major(a, loose) {\n return new SemVer(a, loose).major;\n}\n\nexports.minor = minor;\nfunction minor(a, loose) {\n return new SemVer(a, loose).minor;\n}\n\nexports.patch = patch;\nfunction patch(a, loose) {\n return new SemVer(a, loose).patch;\n}\n\nexports.compare = compare;\nfunction compare(a, b, loose) {\n return new SemVer(a, loose).compare(b);\n}\n\nexports.compareLoose = compareLoose;\nfunction compareLoose(a, b) {\n return compare(a, b, true);\n}\n\nexports.rcompare = rcompare;\nfunction rcompare(a, b, loose) {\n return compare(b, a, loose);\n}\n\nexports.sort = sort;\nfunction sort(list, loose) {\n return list.sort(function(a, b) {\n return exports.compare(a, b, loose);\n });\n}\n\nexports.rsort = rsort;\nfunction rsort(list, loose) {\n return list.sort(function(a, b) {\n return exports.rcompare(a, b, loose);\n });\n}\n\nexports.gt = gt;\nfunction gt(a, b, loose) {\n return compare(a, b, loose) > 0;\n}\n\nexports.lt = lt;\nfunction lt(a, b, loose) {\n return compare(a, b, loose) < 0;\n}\n\nexports.eq = eq;\nfunction eq(a, b, loose) {\n return compare(a, b, loose) === 0;\n}\n\nexports.neq = neq;\nfunction neq(a, b, loose) {\n return compare(a, b, loose) !== 0;\n}\n\nexports.gte = gte;\nfunction gte(a, b, loose) {\n return compare(a, b, loose) >= 0;\n}\n\nexports.lte = lte;\nfunction lte(a, b, loose) {\n return compare(a, b, loose) <= 0;\n}\n\nexports.cmp = cmp;\nfunction cmp(a, op, b, loose) {\n var ret;\n switch (op) {\n case '===':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n ret = a === b;\n break;\n case '!==':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n ret = a !== b;\n break;\n case '': case '=': case '==': ret = eq(a, b, loose); break;\n case '!=': ret = neq(a, b, loose); break;\n case '>': ret = gt(a, b, loose); break;\n case '>=': ret = gte(a, b, loose); break;\n case '<': ret = lt(a, b, loose); break;\n case '<=': ret = lte(a, b, loose); break;\n default: throw new TypeError('Invalid operator: ' + op);\n }\n return ret;\n}\n\nexports.Comparator = Comparator;\nfunction Comparator(comp, loose) {\n if (comp instanceof Comparator) {\n if (comp.loose === loose)\n return comp;\n else\n comp = comp.value;\n }\n\n if (!(this instanceof Comparator))\n return new Comparator(comp, loose);\n\n ;\n this.loose = loose;\n this.parse(comp);\n\n if (this.semver === ANY)\n this.value = '';\n else\n this.value = this.operator + this.semver.version;\n\n ;\n}\n\nvar ANY = {};\nComparator.prototype.parse = function(comp) {\n var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR];\n var m = comp.match(r);\n\n if (!m)\n throw new TypeError('Invalid comparator: ' + comp);\n\n this.operator = m[1];\n if (this.operator === '=')\n this.operator = '';\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2])\n this.semver = ANY;\n else\n this.semver = new SemVer(m[2], this.loose);\n};\n\nComparator.prototype.inspect = function() {\n return '<SemVer Comparator \"' + this + '\">';\n};\n\nComparator.prototype.toString = function() {\n return this.value;\n};\n\nComparator.prototype.test = function(version) {\n ;\n\n if (this.semver === ANY)\n return true;\n\n if (typeof version === 'string')\n version = new SemVer(version, this.loose);\n\n return cmp(version, this.operator, this.semver, this.loose);\n};\n\n\nexports.Range = Range;\nfunction Range(range, loose) {\n if ((range instanceof Range) && range.loose === loose)\n return range;\n\n if (!(this instanceof Range))\n return new Range(range, loose);\n\n this.loose = loose;\n\n // First, split based on boolean or ||\n this.raw = range;\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function(range) {\n return this.parseRange(range.trim());\n }, this).filter(function(c) {\n // throw out any that are not relevant for whatever reason\n return c.length;\n });\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range);\n }\n\n this.format();\n}\n\nRange.prototype.inspect = function() {\n return '<SemVer Range \"' + this.range + '\">';\n};\n\nRange.prototype.format = function() {\n this.range = this.set.map(function(comps) {\n return comps.join(' ').trim();\n }).join('||').trim();\n return this.range;\n};\n\nRange.prototype.toString = function() {\n return this.range;\n};\n\nRange.prototype.parseRange = function(range) {\n var loose = this.loose;\n range = range.trim();\n ;\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE];\n range = range.replace(hr, hyphenReplace);\n ;\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace);\n ;\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[TILDETRIM], tildeTrimReplace);\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[CARETTRIM], caretTrimReplace);\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ');\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];\n var set = range.split(' ').map(function(comp) {\n return parseComparator(comp, loose);\n }).join(' ').split(/\\s+/);\n if (this.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function(comp) {\n return !!comp.match(compRe);\n });\n }\n set = set.map(function(comp) {\n return new Comparator(comp, loose);\n });\n\n return set;\n};\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators;\nfunction toComparators(range, loose) {\n return new Range(range, loose).set.map(function(comp) {\n return comp.map(function(c) {\n return c.value;\n }).join(' ').trim().split(' ');\n });\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator(comp, loose) {\n ;\n comp = replaceCarets(comp, loose);\n ;\n comp = replaceTildes(comp, loose);\n ;\n comp = replaceXRanges(comp, loose);\n ;\n comp = replaceStars(comp, loose);\n ;\n return comp;\n}\n\nfunction isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes(comp, loose) {\n return comp.trim().split(/\\s+/).map(function(comp) {\n return replaceTilde(comp, loose);\n }).join(' ');\n}\n\nfunction replaceTilde(comp, loose) {\n var r = loose ? re[TILDELOOSE] : re[TILDE];\n return comp.replace(r, function(_, M, m, p, pr) {\n ;\n var ret;\n\n if (isX(M))\n ret = '';\n else if (isX(m))\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n else if (isX(p))\n // ~1.2 == >=1.2.0- <1.3.0-\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n else if (pr) {\n ;\n if (pr.charAt(0) !== '-')\n pr = '-' + pr;\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + M + '.' + (+m + 1) + '.0';\n } else\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0';\n\n ;\n return ret;\n });\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets(comp, loose) {\n return comp.trim().split(/\\s+/).map(function(comp) {\n return replaceCaret(comp, loose);\n }).join(' ');\n}\n\nfunction replaceCaret(comp, loose) {\n ;\n var r = loose ? re[CARETLOOSE] : re[CARET];\n return comp.replace(r, function(_, M, m, p, pr) {\n ;\n var ret;\n\n if (isX(M))\n ret = '';\n else if (isX(m))\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n else if (isX(p)) {\n if (M === '0')\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n else\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';\n } else if (pr) {\n ;\n if (pr.charAt(0) !== '-')\n pr = '-' + pr;\n if (M === '0') {\n if (m === '0')\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + M + '.' + m + '.' + (+p + 1);\n else\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + M + '.' + (+m + 1) + '.0';\n } else\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + (+M + 1) + '.0.0';\n } else {\n ;\n if (M === '0') {\n if (m === '0')\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1);\n else\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0';\n } else\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0';\n }\n\n ;\n return ret;\n });\n}\n\nfunction replaceXRanges(comp, loose) {\n ;\n return comp.split(/\\s+/).map(function(comp) {\n return replaceXRange(comp, loose);\n }).join(' ');\n}\n\nfunction replaceXRange(comp, loose) {\n comp = comp.trim();\n var r = loose ? re[XRANGELOOSE] : re[XRANGE];\n return comp.replace(r, function(ret, gtlt, M, m, p, pr) {\n ;\n var xM = isX(M);\n var xm = xM || isX(m);\n var xp = xm || isX(p);\n var anyX = xp;\n\n if (gtlt === '=' && anyX)\n gtlt = '';\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // replace X with 0\n if (xm)\n m = 0;\n if (xp)\n p = 0;\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else if (xp) {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm)\n M = +M + 1\n else\n m = +m + 1\n }\n\n ret = gtlt + M + '.' + m + '.' + p;\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n }\n\n ;\n\n return ret;\n });\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars(comp, loose) {\n ;\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[STAR], '');\n}\n\n// This function is passed to string.replace(re[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n\n if (isX(fM))\n from = '';\n else if (isX(fm))\n from = '>=' + fM + '.0.0';\n else if (isX(fp))\n from = '>=' + fM + '.' + fm + '.0';\n else\n from = '>=' + from;\n\n if (isX(tM))\n to = '';\n else if (isX(tm))\n to = '<' + (+tM + 1) + '.0.0';\n else if (isX(tp))\n to = '<' + tM + '.' + (+tm + 1) + '.0';\n else if (tpr)\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;\n else\n to = '<=' + to;\n\n return (from + ' ' + to).trim();\n}\n\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function(version) {\n if (!version)\n return false;\n\n if (typeof version === 'string')\n version = new SemVer(version, this.loose);\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version))\n return true;\n }\n return false;\n};\n\nfunction testSet(set, version) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version))\n return false;\n }\n\n if (version.prerelease.length) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (var i = 0; i < set.length; i++) {\n ;\n if (set[i].semver === ANY)\n continue;\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver;\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch)\n return true;\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false;\n }\n\n return true;\n}\n\nexports.satisfies = satisfies;\nfunction satisfies(version, range, loose) {\n try {\n range = new Range(range, loose);\n } catch (er) {\n return false;\n }\n return range.test(version);\n}\n\nexports.maxSatisfying = maxSatisfying;\nfunction maxSatisfying(versions, range, loose) {\n return versions.filter(function(version) {\n return satisfies(version, range, loose);\n }).sort(function(a, b) {\n return rcompare(a, b, loose);\n })[0] || null;\n}\n\nexports.validRange = validRange;\nfunction validRange(range, loose) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, loose).range || '*';\n } catch (er) {\n return null;\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr;\nfunction ltr(version, range, loose) {\n return outside(version, range, '<', loose);\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr;\nfunction gtr(version, range, loose) {\n return outside(version, range, '>', loose);\n}\n\nexports.outside = outside;\nfunction outside(version, range, hilo, loose) {\n version = new SemVer(version, loose);\n range = new Range(range, loose);\n\n var gtfn, ltefn, ltfn, comp, ecomp;\n switch (hilo) {\n case '>':\n gtfn = gt;\n ltefn = lte;\n ltfn = lt;\n comp = '>';\n ecomp = '>=';\n break;\n case '<':\n gtfn = lt;\n ltefn = gte;\n ltfn = gt;\n comp = '<';\n ecomp = '<=';\n break;\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"');\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, loose)) {\n return false;\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i];\n\n var high = null;\n var low = null;\n\n comparators.forEach(function(comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator;\n low = low || comparator;\n if (gtfn(comparator.semver, high.semver, loose)) {\n high = comparator;\n } else if (ltfn(comparator.semver, low.semver, loose)) {\n low = comparator;\n }\n });\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false;\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false;\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false;\n }\n }\n return true;\n}\n\n// Use the define() function if we're in AMD land\nif (typeof define === 'function' && define.amd)\n define(exports);\n\n})(\n typeof exports === 'object' ? exports :\n typeof define === 'function' && define.amd ? {} :\n semver = {}\n);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/semver/semver.browser.js"},"mtime":1432938335000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/code-push/script/acquisition-sdk.js":{"data":{"code":"var \nAcquisitionManager=(function(){\nfunction AcquisitionManager(httpRequester,configuration){\nthis._httpRequester = httpRequester;\nthis._serverUrl = configuration.serverUrl;\nif(this._serverUrl.slice(-1) !== \"/\"){\nthis._serverUrl += \"/\";}\n\nthis._deploymentKey = configuration.deploymentKey;\nthis._ignoreAppVersion = configuration.ignoreAppVersion;}\n\nAcquisitionManager.prototype.queryUpdateWithCurrentPackage = function(currentPackage,callback){\nvar _this=this;\nif(!currentPackage || !currentPackage.appVersion){\nthrow new Error(\"Calling common acquisition SDK with incorrect package\");}\n\nvar updateRequest={\ndeploymentKey:this._deploymentKey,\nappVersion:currentPackage.appVersion,\npackageHash:currentPackage.packageHash,\nisCompanion:this._ignoreAppVersion};\n\nvar requestUrl=this._serverUrl + \"updateCheck?\" + queryStringify(updateRequest);\nthis._httpRequester.request(0,requestUrl,function(error,response){\nif(error){\ncallback(error,null);}\n\nif(response.statusCode !== 200){\ncallback(new Error(response.statusCode + \": \" + response.body),null);\nreturn;}\n\ntry{\nvar responseObject=JSON.parse(response.body);\nvar updateInfo=responseObject.updateInfo;}\n\ncatch(error) {\ncallback(error,null);}\n\nif(!updateInfo){\ncallback(error,null);}else \n\nif(updateInfo.updateAppVersion){\ncallback(null,{updateAppVersion:true,appVersion:updateInfo.appVersion});\nreturn;}else \n\nif(!updateInfo.isAvailable){\ncallback(null,null);\nreturn;}\n\nvar remotePackage={\ndeploymentKey:_this._deploymentKey,\ndescription:updateInfo.description,\nlabel:updateInfo.label,\nappVersion:updateInfo.appVersion,\nisMandatory:updateInfo.isMandatory,\npackageHash:updateInfo.packageHash,\npackageSize:updateInfo.packageSize,\ndownloadUrl:updateInfo.downloadURL};\n\ncallback(null,remotePackage);});};\n\n\nreturn AcquisitionManager;})();\n\nexports.AcquisitionManager = AcquisitionManager;\nfunction queryStringify(object){\nvar queryString=\"\";\nvar isFirst=true;\nfor(var property in object) {\nif(object.hasOwnProperty(property)){\nvar value=object[property];\nif(!isFirst){\nqueryString += \"&\";}\n\nqueryString += encodeURIComponent(property) + \"=\";\nif(value !== null && typeof value !== \"undefined\"){\nqueryString += encodeURIComponent(value);}\n\nisFirst = false;}}\n\n\nreturn queryString;}","sourceCode":"/// <reference path=\"../definitions/harness.d.ts\" />\nvar AcquisitionManager = (function () {\n function AcquisitionManager(httpRequester, configuration) {\n this._httpRequester = httpRequester;\n this._serverUrl = configuration.serverUrl;\n if (this._serverUrl.slice(-1) !== \"/\") {\n this._serverUrl += \"/\";\n }\n this._deploymentKey = configuration.deploymentKey;\n this._ignoreAppVersion = configuration.ignoreAppVersion;\n }\n AcquisitionManager.prototype.queryUpdateWithCurrentPackage = function (currentPackage, callback) {\n var _this = this;\n if (!currentPackage || !currentPackage.appVersion) {\n throw new Error(\"Calling common acquisition SDK with incorrect package\"); // Unexpected; indicates error in our implementation\n }\n var updateRequest = {\n deploymentKey: this._deploymentKey,\n appVersion: currentPackage.appVersion,\n packageHash: currentPackage.packageHash,\n isCompanion: this._ignoreAppVersion\n };\n var requestUrl = this._serverUrl + \"updateCheck?\" + queryStringify(updateRequest);\n this._httpRequester.request(0 /* GET */, requestUrl, function (error, response) {\n if (error) {\n callback(error, null);\n }\n if (response.statusCode !== 200) {\n callback(new Error(response.statusCode + \": \" + response.body), null);\n return;\n }\n try {\n var responseObject = JSON.parse(response.body);\n var updateInfo = responseObject.updateInfo;\n }\n catch (error) {\n callback(error, null);\n }\n if (!updateInfo) {\n callback(error, null);\n }\n else if (updateInfo.updateAppVersion) {\n callback(null, { updateAppVersion: true, appVersion: updateInfo.appVersion });\n return;\n }\n else if (!updateInfo.isAvailable) {\n callback(null, null);\n return;\n }\n var remotePackage = {\n deploymentKey: _this._deploymentKey,\n description: updateInfo.description,\n label: updateInfo.label,\n appVersion: updateInfo.appVersion,\n isMandatory: updateInfo.isMandatory,\n packageHash: updateInfo.packageHash,\n packageSize: updateInfo.packageSize,\n downloadUrl: updateInfo.downloadURL\n };\n callback(null, remotePackage);\n });\n };\n return AcquisitionManager;\n})();\nexports.AcquisitionManager = AcquisitionManager;\nfunction queryStringify(object) {\n var queryString = \"\";\n var isFirst = true;\n for (var property in object) {\n if (object.hasOwnProperty(property)) {\n var value = object[property];\n if (!isFirst) {\n queryString += \"&\";\n }\n queryString += encodeURIComponent(property) + \"=\";\n if (value !== null && typeof value !== \"undefined\") {\n queryString += encodeURIComponent(value);\n }\n isFirst = false;\n }\n }\n return queryString;\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/code-push/script/acquisition-sdk.js"},"mtime":1439410105000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/HybridMobileDeploy.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\nvar NativeHybridMobileDeploy=require('react-native').NativeModules.HybridMobileDeploy;\nvar requestFetchAdapter=require(\"./request-fetch-adapter.js\");\nvar semver=require('semver');\nvar Sdk=require(\"code-push/script/acquisition-sdk\").AcquisitionManager;\nvar sdk;\nvar config;\n\nfunction getConfiguration(callback){\nif(config){\nsetImmediate(function(){\ncallback(null,config);});}else \n\n{\nNativeHybridMobileDeploy.getConfiguration(function(err,configuration){\nif(err)callback(err);\nconfig = configuration;\ncallback(null,config);});}}\n\n\n\n\nfunction getSdk(callback){\nif(sdk){\nsetImmediate(function(){\ncallback(null,sdk);});}else \n\n{\ngetConfiguration(function(err,configuration){\nsdk = new Sdk(requestFetchAdapter,configuration);\ncallback(null,sdk);});}}\n\n\n\n\nfunction queryUpdate(callback){\ngetConfiguration(function(err,configuration){\nif(err)callback(err);\ngetSdk(function(err,sdk){\nif(err)callback(err);\nNativeHybridMobileDeploy.getLocalPackage(function(err,localPackage){\nif(err){\nconsole.log(err);\nvar pkg={appVersion:configuration.appVersion};\nsdk.queryUpdateWithCurrentPackage(pkg,callback);}else \nif(localPackage == null){\nvar pkg={appVersion:configuration.appVersion};\nsdk.queryUpdateWithCurrentPackage(pkg,callback);}else \n{\nsdk.queryUpdateWithCurrentPackage(localPackage,callback);}});});});}\n\n\n\n\n\n\nfunction installUpdate(update){\n\n\nNativeHybridMobileDeploy.installUpdate(update,JSON.stringify(update),function(err){return console.log(err);});}\n\n\nvar HybridMobileDeploy={\ngetConfiguration:getConfiguration,\nqueryUpdate:queryUpdate,\ninstallUpdate:installUpdate};\n\n\nmodule.exports = HybridMobileDeploy;","sourceCode":"/**\n * @providesModule HybridMobileDeploy\n * @flow\n */\n\n'use strict';\n\nvar NativeHybridMobileDeploy = require('react-native').NativeModules.HybridMobileDeploy;\nvar requestFetchAdapter = require(\"./request-fetch-adapter.js\");\nvar semver = require('semver');\nvar Sdk = require(\"code-push/script/acquisition-sdk\").AcquisitionManager;\nvar sdk;\nvar config;\n\nfunction getConfiguration(callback) {\n if (config) {\n setImmediate(function() {\n callback(/*error=*/ null, config);\n });\n } else {\n NativeHybridMobileDeploy.getConfiguration(function(err, configuration) {\n if (err) callback(err);\n config = configuration;\n callback(/*error=*/ null, config);\n });\n }\n}\n\nfunction getSdk(callback) {\n if (sdk) {\n setImmediate(function() {\n callback(/*error=*/ null, sdk);\n });\n } else {\n getConfiguration(function(err, configuration) {\n sdk = new Sdk(requestFetchAdapter, configuration);\n callback(/*error=*/ null, sdk);\n });\n }\n}\n\nfunction queryUpdate(callback) {\n getConfiguration(function(err, configuration) {\n if (err) callback(err);\n getSdk(function(err, sdk) {\n if (err) callback(err);\n NativeHybridMobileDeploy.getLocalPackage(function(err, localPackage) {\n if(err){ \n console.log(err);\n var pkg = {appVersion: configuration.appVersion};\n sdk.queryUpdateWithCurrentPackage(pkg, callback);\n }else if(localPackage == null){\n var pkg = {appVersion: configuration.appVersion};\n sdk.queryUpdateWithCurrentPackage(pkg, callback);\n }else{\n sdk.queryUpdateWithCurrentPackage(localPackage, callback);\n }\n });\n });\n });\n}\n\nfunction installUpdate(update) {\n // use the downloaded package info. native code will save the package info\n // so that the client knows what the current package version is.\n NativeHybridMobileDeploy.installUpdate(update, JSON.stringify(update), (err) => console.log(err));\n}\n\nvar HybridMobileDeploy = {\n getConfiguration: getConfiguration,\n queryUpdate: queryUpdate,\n installUpdate: installUpdate\n};\n\nmodule.exports = HybridMobileDeploy;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/HybridMobileDeploy.ios.js"},"mtime":1439493005000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/index.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\nvar React=require('react-native');var \n\nAppRegistry=\n\n\n\n\nReact.AppRegistry;var StyleSheet=React.StyleSheet;var Text=React.Text;var TouchableOpacity=React.TouchableOpacity;var View=React.View;\n\nvar Button=require(\"react-native-button\");\n\nvar HybridMobileDeploy=require('react-native-hybrid-mobile-deploy');\n\nvar HybridMobileDeployCompanion=React.createClass({displayName:'HybridMobileDeployCompanion',\ncomponentDidMount:function(){\nthis.fetchData();},\n\nfetchData:function(){var _this=this;\nHybridMobileDeploy.queryUpdate(function(err,update){\n_this.setState({update:update,updateString:JSON.stringify(update)});});},\n\n\ngetInitialState:function(){\nreturn {update:false,updateString:\"\"};},\n\nhandlePress:function(){\nHybridMobileDeploy.installUpdate(this.state.update);},\n\nrender:function(){\nvar updateView;\nif(this.state.update){\nupdateView = \nReact.createElement(View,null,\nReact.createElement(Text,null,'Update Available: ','\\n',' ',this.state.update.scriptVersion,' - ',this.state.update.description),\nReact.createElement(Button,{style:{color:'green'},onPress:this.handlePress},'Update'));}\n\n\n\n\n;\nreturn (\nReact.createElement(View,{style:styles.container},\nReact.createElement(Text,{style:styles.welcome},'Welcome to React Native!'),\n\n\nReact.createElement(Text,{style:styles.instructions},'To get started, edit index.ios.js'),\n\n\nReact.createElement(Text,{style:styles.instructions},'Press Cmd+R to reload,',\n'\\n','Cmd+D or shake for dev menu'),\n\n\nupdateView));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nflex:1,\njustifyContent:'center',\nalignItems:'center',\nbackgroundColor:'#F5FCFF'},\n\nwelcome:{\nfontSize:20,\ntextAlign:'center',\nmargin:10},\n\ninstructions:{\ntextAlign:'center',\ncolor:'#333333',\nmarginBottom:5}});\n\n\n\nAppRegistry.registerComponent('HybridMobileDeployCompanion',function(){return HybridMobileDeployCompanion;});","sourceCode":"/**\n * Sample React Native App\n * https://github.com/facebook/react-native\n */\n'use strict';\n\nvar React = require('react-native');\nvar {\n AppRegistry,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n} = React;\n\nvar Button = require(\"react-native-button\");\n\nvar HybridMobileDeploy = require('react-native-hybrid-mobile-deploy');\n\nvar HybridMobileDeployCompanion = React.createClass({\n componentDidMount: function() {\n this.fetchData();\n },\n fetchData: function() {\n HybridMobileDeploy.queryUpdate((err, update) => {\n this.setState({ update: update, updateString: JSON.stringify(update) });\n });\n },\n getInitialState: function() {\n return { update: false, updateString: \"\" };\n },\n handlePress: function() {\n HybridMobileDeploy.installUpdate(this.state.update);\n },\n render: function() {\n var updateView;\n if (this.state.update) {\n updateView = (\n <View>\n <Text>Update Available: {'\\n'} {this.state.update.scriptVersion} - {this.state.update.description}</Text>\n <Button style={{color: 'green'}} onPress={this.handlePress}>\n Update\n </Button>\n </View>\n );\n };\n return (\n <View style={styles.container}>\n <Text style={styles.welcome}>\n Welcome to React Native!\n </Text>\n <Text style={styles.instructions}>\n To get started, edit index.ios.js\n </Text>\n <Text style={styles.instructions}>\n Press Cmd+R to reload,{'\\n'}\n Cmd+D or shake for dev menu\n </Text>\n {updateView}\n </View>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#F5FCFF',\n },\n welcome: {\n fontSize: 20,\n textAlign: 'center',\n margin: 10,\n },\n instructions: {\n textAlign: 'center',\n color: '#333333',\n marginBottom: 5,\n },\n});\n\nAppRegistry.registerComponent('HybridMobileDeployCompanion', () => HybridMobileDeployCompanion);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/index.ios.js"},"mtime":1439500375000}}