Created
July 18, 2019 08:42
-
-
Save RJ-software-outsourcing/2baa2659935e8803f331c600793f834b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({"/Users/chenwei/Desktop/github/metamask-extension/app/scripts/createStandardProvider.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
Object.defineProperty(exports, "__esModule", { | |
value: true | |
}); | |
var _promise = _dereq_('babel-runtime/core-js/promise'); | |
var _promise2 = _interopRequireDefault(_promise); | |
var _classCallCheck2 = _dereq_('babel-runtime/helpers/classCallCheck'); | |
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | |
var _createClass2 = _dereq_('babel-runtime/helpers/createClass'); | |
var _createClass3 = _interopRequireDefault(_createClass2); | |
exports.default = createStandardProvider; | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
var StandardProvider = function () { | |
function StandardProvider(provider) { | |
var _this = this; | |
(0, _classCallCheck3.default)(this, StandardProvider); | |
this._provider = provider; | |
this._subscribe(); | |
// indicate that we've connected, mostly just for standard compliance | |
setTimeout(function () { | |
_this._onConnect(); | |
}); | |
} | |
(0, _createClass3.default)(StandardProvider, [{ | |
key: '_onClose', | |
value: function _onClose() { | |
if (this._isConnected === undefined || this._isConnected) { | |
this._provider.emit('close', { | |
code: 1011, | |
reason: 'Network connection error' | |
}); | |
} | |
this._isConnected = false; | |
} | |
}, { | |
key: '_onConnect', | |
value: function _onConnect() { | |
!this._isConnected && this._provider.emit('connect'); | |
this._isConnected = true; | |
} | |
}, { | |
key: '_subscribe', | |
value: function _subscribe() { | |
var _this2 = this; | |
this._provider.on('data', function (error, _ref) { | |
var method = _ref.method, | |
params = _ref.params; | |
if (!error && method === 'eth_subscription') { | |
_this2._provider.emit('notification', params.result); | |
} | |
}); | |
} | |
/** | |
* Initiate an RPC method call | |
* | |
* @param {string} method - RPC method name to call | |
* @param {string[]} params - Array of RPC method parameters | |
* @returns {Promise<*>} Promise resolving to the result if successful | |
*/ | |
}, { | |
key: 'send', | |
value: function send(method) { | |
var _this3 = this; | |
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; | |
return new _promise2.default(function (resolve, reject) { | |
try { | |
_this3._provider.sendAsync({ id: 1, jsonrpc: '2.0', method: method, params: params }, function (error, response) { | |
error = error || response.error; | |
error ? reject(error) : resolve(response); | |
}); | |
} catch (error) { | |
reject(error); | |
} | |
}); | |
} | |
}]); | |
return StandardProvider; | |
}(); | |
/** | |
* Converts a legacy provider into an EIP-1193-compliant standard provider | |
* @param {Object} provider - Legacy provider to convert | |
* @returns {Object} Standard provider | |
*/ | |
function createStandardProvider(provider) { | |
var standardProvider = new StandardProvider(provider); | |
var sendLegacy = provider.send; | |
provider.send = function (methodOrPayload, callbackOrArgs) { | |
if (typeof methodOrPayload === 'string' && !callbackOrArgs || Array.isArray(callbackOrArgs)) { | |
return standardProvider.send(methodOrPayload, callbackOrArgs); | |
} | |
return sendLegacy.call(provider, methodOrPayload, callbackOrArgs); | |
}; | |
return provider; | |
} | |
},{"babel-runtime/core-js/promise":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/promise.js","babel-runtime/helpers/classCallCheck":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/classCallCheck.js","babel-runtime/helpers/createClass":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/createClass.js"}],"/Users/chenwei/Desktop/github/metamask-extension/app/scripts/inpage.js":[function(_dereq_,module,exports){ | |
(function (global){ | |
'use strict'; | |
var _regenerator = _dereq_('babel-runtime/regenerator'); | |
var _regenerator2 = _interopRequireDefault(_regenerator); | |
var _asyncToGenerator2 = _dereq_('babel-runtime/helpers/asyncToGenerator'); | |
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); | |
var _promise = _dereq_('babel-runtime/core-js/promise'); | |
var _promise2 = _interopRequireDefault(_promise); | |
// publicConfig isn't populated until we get a message from background. | |
// Using this getter will ensure the state is available | |
var getPublicConfigWhenReady = function () { | |
var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() { | |
var store, state; | |
return _regenerator2.default.wrap(function _callee3$(_context3) { | |
while (1) { | |
switch (_context3.prev = _context3.next) { | |
case 0: | |
store = inpageProvider.publicConfigStore; | |
state = store.getState(); | |
// if state is missing, wait for first update | |
if (state.networkVersion) { | |
_context3.next = 7; | |
break; | |
} | |
_context3.next = 5; | |
return new _promise2.default(function (resolve) { | |
return store.once('update', resolve); | |
}); | |
case 5: | |
state = _context3.sent; | |
console.log('new state', state); | |
case 7: | |
return _context3.abrupt('return', state); | |
case 8: | |
case 'end': | |
return _context3.stop(); | |
} | |
} | |
}, _callee3, this); | |
})); | |
return function getPublicConfigWhenReady() { | |
return _ref6.apply(this, arguments); | |
}; | |
}(); | |
// Work around for [email protected] deleting the bound `sendAsync` but not the unbound | |
// `sendAsync` method on the prototype, causing `this` reference issues with drizzle | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
/*global Web3*/ | |
cleanContextForImports(); | |
_dereq_('web3/dist/web3.min.js'); | |
var log = _dereq_('loglevel'); | |
var LocalMessageDuplexStream = _dereq_('post-message-stream'); | |
var setupDappAutoReload = _dereq_('./lib/auto-reload.js'); | |
var MetamaskInpageProvider = _dereq_('metamask-inpage-provider'); | |
var createStandardProvider = _dereq_('./createStandardProvider').default; | |
console.log('inpage script running!!!!'); | |
var warned = false; | |
restoreContextAfterImports(); | |
log.setDefaultLevel(true ? 'debug' : 'warn'); | |
// | |
// setup plugin communication | |
// | |
// setup background connection | |
var metamaskStream = new LocalMessageDuplexStream({ | |
name: 'inpage_tangerine', | |
target: 'contentscript_tangerine' | |
}); | |
// compose the inpage provider | |
var inpageProvider = new MetamaskInpageProvider(metamaskStream); | |
// set a high max listener count to avoid unnecesary warnings | |
inpageProvider.setMaxListeners(100); | |
// augment the provider with its enable method | |
inpageProvider.enable = function () { | |
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, | |
force = _ref.force; | |
return new _promise2.default(function (resolve, reject) { | |
inpageProvider.sendAsync({ method: 'eth_requestAccounts', params: [force] }, function (error, response) { | |
if (error || response.error) { | |
reject(error || response.error); | |
} else { | |
resolve(response.result); | |
} | |
}); | |
}); | |
}; | |
// give the dapps control of a refresh they can toggle this off on the window.ethereum | |
// this will be default true so it does not break any old apps. | |
inpageProvider.autoRefreshOnNetworkChange = true; | |
// add metamask-specific convenience methods | |
inpageProvider._metamask = new Proxy({ | |
/** | |
* Synchronously determines if this domain is currently enabled, with a potential false negative if called to soon | |
* | |
* @returns {boolean} - returns true if this domain is currently enabled | |
*/ | |
isEnabled: function isEnabled() { | |
var _inpageProvider$publi = inpageProvider.publicConfigStore.getState(), | |
isEnabled = _inpageProvider$publi.isEnabled; | |
return Boolean(isEnabled); | |
}, | |
/** | |
* Asynchronously determines if this domain is currently enabled | |
* | |
* @returns {Promise<boolean>} - Promise resolving to true if this domain is currently enabled | |
*/ | |
isApproved: function () { | |
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { | |
var _ref3, isEnabled; | |
return _regenerator2.default.wrap(function _callee$(_context) { | |
while (1) { | |
switch (_context.prev = _context.next) { | |
case 0: | |
_context.next = 2; | |
return getPublicConfigWhenReady(); | |
case 2: | |
_ref3 = _context.sent; | |
isEnabled = _ref3.isEnabled; | |
return _context.abrupt('return', Boolean(isEnabled)); | |
case 5: | |
case 'end': | |
return _context.stop(); | |
} | |
} | |
}, _callee, this); | |
})); | |
function isApproved() { | |
return _ref2.apply(this, arguments); | |
} | |
return isApproved; | |
}(), | |
/** | |
* Determines if MetaMask is unlocked by the user | |
* | |
* @returns {Promise<boolean>} - Promise resolving to true if MetaMask is currently unlocked | |
*/ | |
isUnlocked: function () { | |
var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() { | |
var _ref5, isUnlocked; | |
return _regenerator2.default.wrap(function _callee2$(_context2) { | |
while (1) { | |
switch (_context2.prev = _context2.next) { | |
case 0: | |
_context2.next = 2; | |
return getPublicConfigWhenReady(); | |
case 2: | |
_ref5 = _context2.sent; | |
isUnlocked = _ref5.isUnlocked; | |
return _context2.abrupt('return', Boolean(isUnlocked)); | |
case 5: | |
case 'end': | |
return _context2.stop(); | |
} | |
} | |
}, _callee2, this); | |
})); | |
function isUnlocked() { | |
return _ref4.apply(this, arguments); | |
} | |
return isUnlocked; | |
}() | |
}, { | |
get: function get(obj, prop) { | |
!warned && console.warn('Heads up! ethereum._metamask exposes methods that have ' + 'not been standardized yet. This means that these methods may not be implemented ' + 'in other dapp browsers and may be removed from MetaMask in the future.'); | |
warned = true; | |
return obj[prop]; | |
} | |
});var proxiedInpageProvider = new Proxy(inpageProvider, { | |
// straight up lie that we deleted the property so that it doesnt | |
// throw an error in strict mode | |
deleteProperty: function deleteProperty() { | |
return true; | |
} | |
}); | |
// window.ethereum = createStandardProvider(proxiedInpageProvider) | |
window.tangerine = createStandardProvider(proxiedInpageProvider); | |
// | |
// setup web3 | |
// | |
var web3 = new Web3(proxiedInpageProvider); | |
web3.setProvider = function () { | |
log.debug('MetaMask - overrode web3.setProvider'); | |
}; | |
log.debug('MetaMask - injected web3'); | |
setupDappAutoReload(web3, inpageProvider.publicConfigStore); | |
// set web3 defaultAccount | |
inpageProvider.publicConfigStore.subscribe(function (state) { | |
web3.eth.defaultAccount = state.selectedAddress; | |
}); | |
inpageProvider.publicConfigStore.subscribe(function (state) { | |
if (state.onboardingcomplete) { | |
window.postMessage('onboardingcomplete', '*'); | |
} | |
}); | |
// need to make sure we aren't affected by overlapping namespaces | |
// and that we dont affect the app with our namespace | |
// mostly a fix for web3's BigNumber if AMD's "define" is defined... | |
var __define = void 0; | |
/** | |
* Caches reference to global define object and deletes it to | |
* avoid conflicts with other global define objects, such as | |
* AMD's define function | |
*/ | |
function cleanContextForImports() { | |
__define = global.define; | |
try { | |
global.define = undefined; | |
} catch (_) { | |
console.warn('MetaMask - global.define could not be deleted.'); | |
} | |
} | |
/** | |
* Restores global define object from cached reference | |
*/ | |
function restoreContextAfterImports() { | |
try { | |
global.define = __define; | |
} catch (_) { | |
console.warn('MetaMask - global.define could not be overwritten.'); | |
} | |
} | |
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
},{"./createStandardProvider":"/Users/chenwei/Desktop/github/metamask-extension/app/scripts/createStandardProvider.js","./lib/auto-reload.js":"/Users/chenwei/Desktop/github/metamask-extension/app/scripts/lib/auto-reload.js","babel-runtime/core-js/promise":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/promise.js","babel-runtime/helpers/asyncToGenerator":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/asyncToGenerator.js","babel-runtime/regenerator":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/regenerator/index.js","loglevel":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/loglevel/lib/loglevel.js","metamask-inpage-provider":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/index.js","post-message-stream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/post-message-stream/index.js","web3/dist/web3.min.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/web3/dist/web3.min.js"}],"/Users/chenwei/Desktop/github/metamask-extension/app/scripts/lib/auto-reload.js":[function(_dereq_,module,exports){ | |
(function (global){ | |
"use strict"; | |
module.exports = setupDappAutoReload; | |
function setupDappAutoReload(web3, observable) { | |
// export web3 as a global, checking for usage | |
var reloadInProgress = false; | |
var lastTimeUsed = void 0; | |
var lastSeenNetwork = void 0; | |
// global.web3 = new Proxy(web3, { | |
// get: (_web3, key) => { | |
// // get the time of use | |
// lastTimeUsed = Date.now() | |
// // return value normally | |
// return _web3[key] | |
// }, | |
// set: (_web3, key, value) => { | |
// // set value normally | |
// _web3[key] = value | |
// }, | |
// }) | |
observable.subscribe(function (state) { | |
// if the auto refresh on network change is false do not | |
// do anything | |
// if (!window.ethereum.autoRefreshOnNetworkChange) return | |
if (!window.tangerine.autoRefreshOnNetworkChange) return; | |
// if reload in progress, no need to check reload logic | |
if (reloadInProgress) return; | |
var currentNetwork = state.networkVersion; | |
// set the initial network | |
if (!lastSeenNetwork) { | |
lastSeenNetwork = currentNetwork; | |
return; | |
} | |
// skip reload logic if web3 not used | |
if (!lastTimeUsed) return; | |
// if network did not change, exit | |
if (currentNetwork === lastSeenNetwork) return; | |
// initiate page reload | |
reloadInProgress = true; | |
var timeSinceUse = Date.now() - lastTimeUsed; | |
// if web3 was recently used then delay the reloading of the page | |
if (timeSinceUse > 500) { | |
triggerReset(); | |
} else { | |
setTimeout(triggerReset, 500); | |
} | |
}); | |
} | |
// reload the page | |
function triggerReset() { | |
global.location.reload(); | |
} | |
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/async/dist/async.js":[function(_dereq_,module,exports){ | |
(function (process,global,setImmediate){ | |
(function (global, factory) { | |
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | |
typeof define === 'function' && define.amd ? define(['exports'], factory) : | |
(factory((global.async = global.async || {}))); | |
}(this, (function (exports) { 'use strict'; | |
function slice(arrayLike, start) { | |
start = start|0; | |
var newLen = Math.max(arrayLike.length - start, 0); | |
var newArr = Array(newLen); | |
for(var idx = 0; idx < newLen; idx++) { | |
newArr[idx] = arrayLike[start + idx]; | |
} | |
return newArr; | |
} | |
/** | |
* Creates a continuation function with some arguments already applied. | |
* | |
* Useful as a shorthand when combined with other control flow functions. Any | |
* arguments passed to the returned function are added to the arguments | |
* originally passed to apply. | |
* | |
* @name apply | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @category Util | |
* @param {Function} fn - The function you want to eventually apply all | |
* arguments to. Invokes with (arguments...). | |
* @param {...*} arguments... - Any number of arguments to automatically apply | |
* when the continuation is called. | |
* @returns {Function} the partially-applied function | |
* @example | |
* | |
* // using apply | |
* async.parallel([ | |
* async.apply(fs.writeFile, 'testfile1', 'test1'), | |
* async.apply(fs.writeFile, 'testfile2', 'test2') | |
* ]); | |
* | |
* | |
* // the same process without using apply | |
* async.parallel([ | |
* function(callback) { | |
* fs.writeFile('testfile1', 'test1', callback); | |
* }, | |
* function(callback) { | |
* fs.writeFile('testfile2', 'test2', callback); | |
* } | |
* ]); | |
* | |
* // It's possible to pass any number of additional arguments when calling the | |
* // continuation: | |
* | |
* node> var fn = async.apply(sys.puts, 'one'); | |
* node> fn('two', 'three'); | |
* one | |
* two | |
* three | |
*/ | |
var apply = function(fn/*, ...args*/) { | |
var args = slice(arguments, 1); | |
return function(/*callArgs*/) { | |
var callArgs = slice(arguments); | |
return fn.apply(null, args.concat(callArgs)); | |
}; | |
}; | |
var initialParams = function (fn) { | |
return function (/*...args, callback*/) { | |
var args = slice(arguments); | |
var callback = args.pop(); | |
fn.call(this, args, callback); | |
}; | |
}; | |
/** | |
* Checks if `value` is the | |
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) | |
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) | |
* | |
* @static | |
* @memberOf _ | |
* @since 0.1.0 | |
* @category Lang | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is an object, else `false`. | |
* @example | |
* | |
* _.isObject({}); | |
* // => true | |
* | |
* _.isObject([1, 2, 3]); | |
* // => true | |
* | |
* _.isObject(_.noop); | |
* // => true | |
* | |
* _.isObject(null); | |
* // => false | |
*/ | |
function isObject(value) { | |
var type = typeof value; | |
return value != null && (type == 'object' || type == 'function'); | |
} | |
var hasSetImmediate = typeof setImmediate === 'function' && setImmediate; | |
var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; | |
function fallback(fn) { | |
setTimeout(fn, 0); | |
} | |
function wrap(defer) { | |
return function (fn/*, ...args*/) { | |
var args = slice(arguments, 1); | |
defer(function () { | |
fn.apply(null, args); | |
}); | |
}; | |
} | |
var _defer; | |
if (hasSetImmediate) { | |
_defer = setImmediate; | |
} else if (hasNextTick) { | |
_defer = process.nextTick; | |
} else { | |
_defer = fallback; | |
} | |
var setImmediate$1 = wrap(_defer); | |
/** | |
* Take a sync function and make it async, passing its return value to a | |
* callback. This is useful for plugging sync functions into a waterfall, | |
* series, or other async functions. Any arguments passed to the generated | |
* function will be passed to the wrapped function (except for the final | |
* callback argument). Errors thrown will be passed to the callback. | |
* | |
* If the function passed to `asyncify` returns a Promise, that promises's | |
* resolved/rejected state will be used to call the callback, rather than simply | |
* the synchronous return value. | |
* | |
* This also means you can asyncify ES2017 `async` functions. | |
* | |
* @name asyncify | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @alias wrapSync | |
* @category Util | |
* @param {Function} func - The synchronous function, or Promise-returning | |
* function to convert to an {@link AsyncFunction}. | |
* @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be | |
* invoked with `(args..., callback)`. | |
* @example | |
* | |
* // passing a regular synchronous function | |
* async.waterfall([ | |
* async.apply(fs.readFile, filename, "utf8"), | |
* async.asyncify(JSON.parse), | |
* function (data, next) { | |
* // data is the result of parsing the text. | |
* // If there was a parsing error, it would have been caught. | |
* } | |
* ], callback); | |
* | |
* // passing a function returning a promise | |
* async.waterfall([ | |
* async.apply(fs.readFile, filename, "utf8"), | |
* async.asyncify(function (contents) { | |
* return db.model.create(contents); | |
* }), | |
* function (model, next) { | |
* // `model` is the instantiated model object. | |
* // If there was an error, this function would be skipped. | |
* } | |
* ], callback); | |
* | |
* // es2017 example, though `asyncify` is not needed if your JS environment | |
* // supports async functions out of the box | |
* var q = async.queue(async.asyncify(async function(file) { | |
* var intermediateStep = await processFile(file); | |
* return await somePromise(intermediateStep) | |
* })); | |
* | |
* q.push(files); | |
*/ | |
function asyncify(func) { | |
return initialParams(function (args, callback) { | |
var result; | |
try { | |
result = func.apply(this, args); | |
} catch (e) { | |
return callback(e); | |
} | |
// if result is Promise object | |
if (isObject(result) && typeof result.then === 'function') { | |
result.then(function(value) { | |
invokeCallback(callback, null, value); | |
}, function(err) { | |
invokeCallback(callback, err.message ? err : new Error(err)); | |
}); | |
} else { | |
callback(null, result); | |
} | |
}); | |
} | |
function invokeCallback(callback, error, value) { | |
try { | |
callback(error, value); | |
} catch (e) { | |
setImmediate$1(rethrow, e); | |
} | |
} | |
function rethrow(error) { | |
throw error; | |
} | |
var supportsSymbol = typeof Symbol === 'function'; | |
function isAsync(fn) { | |
return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction'; | |
} | |
function wrapAsync(asyncFn) { | |
return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn; | |
} | |
function applyEach$1(eachfn) { | |
return function(fns/*, ...args*/) { | |
var args = slice(arguments, 1); | |
var go = initialParams(function(args, callback) { | |
var that = this; | |
return eachfn(fns, function (fn, cb) { | |
wrapAsync(fn).apply(that, args.concat(cb)); | |
}, callback); | |
}); | |
if (args.length) { | |
return go.apply(this, args); | |
} | |
else { | |
return go; | |
} | |
}; | |
} | |
/** Detect free variable `global` from Node.js. */ | |
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; | |
/** Detect free variable `self`. */ | |
var freeSelf = typeof self == 'object' && self && self.Object === Object && self; | |
/** Used as a reference to the global object. */ | |
var root = freeGlobal || freeSelf || Function('return this')(); | |
/** Built-in value references. */ | |
var Symbol$1 = root.Symbol; | |
/** Used for built-in method references. */ | |
var objectProto = Object.prototype; | |
/** Used to check objects for own properties. */ | |
var hasOwnProperty = objectProto.hasOwnProperty; | |
/** | |
* Used to resolve the | |
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) | |
* of values. | |
*/ | |
var nativeObjectToString = objectProto.toString; | |
/** Built-in value references. */ | |
var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined; | |
/** | |
* A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. | |
* | |
* @private | |
* @param {*} value The value to query. | |
* @returns {string} Returns the raw `toStringTag`. | |
*/ | |
function getRawTag(value) { | |
var isOwn = hasOwnProperty.call(value, symToStringTag$1), | |
tag = value[symToStringTag$1]; | |
try { | |
value[symToStringTag$1] = undefined; | |
var unmasked = true; | |
} catch (e) {} | |
var result = nativeObjectToString.call(value); | |
if (unmasked) { | |
if (isOwn) { | |
value[symToStringTag$1] = tag; | |
} else { | |
delete value[symToStringTag$1]; | |
} | |
} | |
return result; | |
} | |
/** Used for built-in method references. */ | |
var objectProto$1 = Object.prototype; | |
/** | |
* Used to resolve the | |
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) | |
* of values. | |
*/ | |
var nativeObjectToString$1 = objectProto$1.toString; | |
/** | |
* Converts `value` to a string using `Object.prototype.toString`. | |
* | |
* @private | |
* @param {*} value The value to convert. | |
* @returns {string} Returns the converted string. | |
*/ | |
function objectToString(value) { | |
return nativeObjectToString$1.call(value); | |
} | |
/** `Object#toString` result references. */ | |
var nullTag = '[object Null]'; | |
var undefinedTag = '[object Undefined]'; | |
/** Built-in value references. */ | |
var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : undefined; | |
/** | |
* The base implementation of `getTag` without fallbacks for buggy environments. | |
* | |
* @private | |
* @param {*} value The value to query. | |
* @returns {string} Returns the `toStringTag`. | |
*/ | |
function baseGetTag(value) { | |
if (value == null) { | |
return value === undefined ? undefinedTag : nullTag; | |
} | |
return (symToStringTag && symToStringTag in Object(value)) | |
? getRawTag(value) | |
: objectToString(value); | |
} | |
/** `Object#toString` result references. */ | |
var asyncTag = '[object AsyncFunction]'; | |
var funcTag = '[object Function]'; | |
var genTag = '[object GeneratorFunction]'; | |
var proxyTag = '[object Proxy]'; | |
/** | |
* Checks if `value` is classified as a `Function` object. | |
* | |
* @static | |
* @memberOf _ | |
* @since 0.1.0 | |
* @category Lang | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is a function, else `false`. | |
* @example | |
* | |
* _.isFunction(_); | |
* // => true | |
* | |
* _.isFunction(/abc/); | |
* // => false | |
*/ | |
function isFunction(value) { | |
if (!isObject(value)) { | |
return false; | |
} | |
// The use of `Object#toString` avoids issues with the `typeof` operator | |
// in Safari 9 which returns 'object' for typed arrays and other constructors. | |
var tag = baseGetTag(value); | |
return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; | |
} | |
/** Used as references for various `Number` constants. */ | |
var MAX_SAFE_INTEGER = 9007199254740991; | |
/** | |
* Checks if `value` is a valid array-like length. | |
* | |
* **Note:** This method is loosely based on | |
* [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). | |
* | |
* @static | |
* @memberOf _ | |
* @since 4.0.0 | |
* @category Lang | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is a valid length, else `false`. | |
* @example | |
* | |
* _.isLength(3); | |
* // => true | |
* | |
* _.isLength(Number.MIN_VALUE); | |
* // => false | |
* | |
* _.isLength(Infinity); | |
* // => false | |
* | |
* _.isLength('3'); | |
* // => false | |
*/ | |
function isLength(value) { | |
return typeof value == 'number' && | |
value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; | |
} | |
/** | |
* Checks if `value` is array-like. A value is considered array-like if it's | |
* not a function and has a `value.length` that's an integer greater than or | |
* equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. | |
* | |
* @static | |
* @memberOf _ | |
* @since 4.0.0 | |
* @category Lang | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is array-like, else `false`. | |
* @example | |
* | |
* _.isArrayLike([1, 2, 3]); | |
* // => true | |
* | |
* _.isArrayLike(document.body.children); | |
* // => true | |
* | |
* _.isArrayLike('abc'); | |
* // => true | |
* | |
* _.isArrayLike(_.noop); | |
* // => false | |
*/ | |
function isArrayLike(value) { | |
return value != null && isLength(value.length) && !isFunction(value); | |
} | |
// A temporary value used to identify if the loop should be broken. | |
// See #1064, #1293 | |
var breakLoop = {}; | |
/** | |
* This method returns `undefined`. | |
* | |
* @static | |
* @memberOf _ | |
* @since 2.3.0 | |
* @category Util | |
* @example | |
* | |
* _.times(2, _.noop); | |
* // => [undefined, undefined] | |
*/ | |
function noop() { | |
// No operation performed. | |
} | |
function once(fn) { | |
return function () { | |
if (fn === null) return; | |
var callFn = fn; | |
fn = null; | |
callFn.apply(this, arguments); | |
}; | |
} | |
var iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator; | |
var getIterator = function (coll) { | |
return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol](); | |
}; | |
/** | |
* The base implementation of `_.times` without support for iteratee shorthands | |
* or max array length checks. | |
* | |
* @private | |
* @param {number} n The number of times to invoke `iteratee`. | |
* @param {Function} iteratee The function invoked per iteration. | |
* @returns {Array} Returns the array of results. | |
*/ | |
function baseTimes(n, iteratee) { | |
var index = -1, | |
result = Array(n); | |
while (++index < n) { | |
result[index] = iteratee(index); | |
} | |
return result; | |
} | |
/** | |
* Checks if `value` is object-like. A value is object-like if it's not `null` | |
* and has a `typeof` result of "object". | |
* | |
* @static | |
* @memberOf _ | |
* @since 4.0.0 | |
* @category Lang | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is object-like, else `false`. | |
* @example | |
* | |
* _.isObjectLike({}); | |
* // => true | |
* | |
* _.isObjectLike([1, 2, 3]); | |
* // => true | |
* | |
* _.isObjectLike(_.noop); | |
* // => false | |
* | |
* _.isObjectLike(null); | |
* // => false | |
*/ | |
function isObjectLike(value) { | |
return value != null && typeof value == 'object'; | |
} | |
/** `Object#toString` result references. */ | |
var argsTag = '[object Arguments]'; | |
/** | |
* The base implementation of `_.isArguments`. | |
* | |
* @private | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is an `arguments` object, | |
*/ | |
function baseIsArguments(value) { | |
return isObjectLike(value) && baseGetTag(value) == argsTag; | |
} | |
/** Used for built-in method references. */ | |
var objectProto$3 = Object.prototype; | |
/** Used to check objects for own properties. */ | |
var hasOwnProperty$2 = objectProto$3.hasOwnProperty; | |
/** Built-in value references. */ | |
var propertyIsEnumerable = objectProto$3.propertyIsEnumerable; | |
/** | |
* Checks if `value` is likely an `arguments` object. | |
* | |
* @static | |
* @memberOf _ | |
* @since 0.1.0 | |
* @category Lang | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is an `arguments` object, | |
* else `false`. | |
* @example | |
* | |
* _.isArguments(function() { return arguments; }()); | |
* // => true | |
* | |
* _.isArguments([1, 2, 3]); | |
* // => false | |
*/ | |
var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { | |
return isObjectLike(value) && hasOwnProperty$2.call(value, 'callee') && | |
!propertyIsEnumerable.call(value, 'callee'); | |
}; | |
/** | |
* Checks if `value` is classified as an `Array` object. | |
* | |
* @static | |
* @memberOf _ | |
* @since 0.1.0 | |
* @category Lang | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is an array, else `false`. | |
* @example | |
* | |
* _.isArray([1, 2, 3]); | |
* // => true | |
* | |
* _.isArray(document.body.children); | |
* // => false | |
* | |
* _.isArray('abc'); | |
* // => false | |
* | |
* _.isArray(_.noop); | |
* // => false | |
*/ | |
var isArray = Array.isArray; | |
/** | |
* This method returns `false`. | |
* | |
* @static | |
* @memberOf _ | |
* @since 4.13.0 | |
* @category Util | |
* @returns {boolean} Returns `false`. | |
* @example | |
* | |
* _.times(2, _.stubFalse); | |
* // => [false, false] | |
*/ | |
function stubFalse() { | |
return false; | |
} | |
/** Detect free variable `exports`. */ | |
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; | |
/** Detect free variable `module`. */ | |
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; | |
/** Detect the popular CommonJS extension `module.exports`. */ | |
var moduleExports = freeModule && freeModule.exports === freeExports; | |
/** Built-in value references. */ | |
var Buffer = moduleExports ? root.Buffer : undefined; | |
/* Built-in method references for those with the same name as other `lodash` methods. */ | |
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; | |
/** | |
* Checks if `value` is a buffer. | |
* | |
* @static | |
* @memberOf _ | |
* @since 4.3.0 | |
* @category Lang | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is a buffer, else `false`. | |
* @example | |
* | |
* _.isBuffer(new Buffer(2)); | |
* // => true | |
* | |
* _.isBuffer(new Uint8Array(2)); | |
* // => false | |
*/ | |
var isBuffer = nativeIsBuffer || stubFalse; | |
/** Used as references for various `Number` constants. */ | |
var MAX_SAFE_INTEGER$1 = 9007199254740991; | |
/** Used to detect unsigned integer values. */ | |
var reIsUint = /^(?:0|[1-9]\d*)$/; | |
/** | |
* Checks if `value` is a valid array-like index. | |
* | |
* @private | |
* @param {*} value The value to check. | |
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. | |
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`. | |
*/ | |
function isIndex(value, length) { | |
length = length == null ? MAX_SAFE_INTEGER$1 : length; | |
return !!length && | |
(typeof value == 'number' || reIsUint.test(value)) && | |
(value > -1 && value % 1 == 0 && value < length); | |
} | |
/** `Object#toString` result references. */ | |
var argsTag$1 = '[object Arguments]'; | |
var arrayTag = '[object Array]'; | |
var boolTag = '[object Boolean]'; | |
var dateTag = '[object Date]'; | |
var errorTag = '[object Error]'; | |
var funcTag$1 = '[object Function]'; | |
var mapTag = '[object Map]'; | |
var numberTag = '[object Number]'; | |
var objectTag = '[object Object]'; | |
var regexpTag = '[object RegExp]'; | |
var setTag = '[object Set]'; | |
var stringTag = '[object String]'; | |
var weakMapTag = '[object WeakMap]'; | |
var arrayBufferTag = '[object ArrayBuffer]'; | |
var dataViewTag = '[object DataView]'; | |
var float32Tag = '[object Float32Array]'; | |
var float64Tag = '[object Float64Array]'; | |
var int8Tag = '[object Int8Array]'; | |
var int16Tag = '[object Int16Array]'; | |
var int32Tag = '[object Int32Array]'; | |
var uint8Tag = '[object Uint8Array]'; | |
var uint8ClampedTag = '[object Uint8ClampedArray]'; | |
var uint16Tag = '[object Uint16Array]'; | |
var uint32Tag = '[object Uint32Array]'; | |
/** Used to identify `toStringTag` values of typed arrays. */ | |
var typedArrayTags = {}; | |
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = | |
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = | |
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = | |
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = | |
typedArrayTags[uint32Tag] = true; | |
typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = | |
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = | |
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = | |
typedArrayTags[errorTag] = typedArrayTags[funcTag$1] = | |
typedArrayTags[mapTag] = typedArrayTags[numberTag] = | |
typedArrayTags[objectTag] = typedArrayTags[regexpTag] = | |
typedArrayTags[setTag] = typedArrayTags[stringTag] = | |
typedArrayTags[weakMapTag] = false; | |
/** | |
* The base implementation of `_.isTypedArray` without Node.js optimizations. | |
* | |
* @private | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`. | |
*/ | |
function baseIsTypedArray(value) { | |
return isObjectLike(value) && | |
isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; | |
} | |
/** | |
* The base implementation of `_.unary` without support for storing metadata. | |
* | |
* @private | |
* @param {Function} func The function to cap arguments for. | |
* @returns {Function} Returns the new capped function. | |
*/ | |
function baseUnary(func) { | |
return function(value) { | |
return func(value); | |
}; | |
} | |
/** Detect free variable `exports`. */ | |
var freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports; | |
/** Detect free variable `module`. */ | |
var freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module; | |
/** Detect the popular CommonJS extension `module.exports`. */ | |
var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1; | |
/** Detect free variable `process` from Node.js. */ | |
var freeProcess = moduleExports$1 && freeGlobal.process; | |
/** Used to access faster Node.js helpers. */ | |
var nodeUtil = (function() { | |
try { | |
return freeProcess && freeProcess.binding && freeProcess.binding('util'); | |
} catch (e) {} | |
}()); | |
/* Node.js helper references. */ | |
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; | |
/** | |
* Checks if `value` is classified as a typed array. | |
* | |
* @static | |
* @memberOf _ | |
* @since 3.0.0 | |
* @category Lang | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`. | |
* @example | |
* | |
* _.isTypedArray(new Uint8Array); | |
* // => true | |
* | |
* _.isTypedArray([]); | |
* // => false | |
*/ | |
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; | |
/** Used for built-in method references. */ | |
var objectProto$2 = Object.prototype; | |
/** Used to check objects for own properties. */ | |
var hasOwnProperty$1 = objectProto$2.hasOwnProperty; | |
/** | |
* Creates an array of the enumerable property names of the array-like `value`. | |
* | |
* @private | |
* @param {*} value The value to query. | |
* @param {boolean} inherited Specify returning inherited property names. | |
* @returns {Array} Returns the array of property names. | |
*/ | |
function arrayLikeKeys(value, inherited) { | |
var isArr = isArray(value), | |
isArg = !isArr && isArguments(value), | |
isBuff = !isArr && !isArg && isBuffer(value), | |
isType = !isArr && !isArg && !isBuff && isTypedArray(value), | |
skipIndexes = isArr || isArg || isBuff || isType, | |
result = skipIndexes ? baseTimes(value.length, String) : [], | |
length = result.length; | |
for (var key in value) { | |
if ((inherited || hasOwnProperty$1.call(value, key)) && | |
!(skipIndexes && ( | |
// Safari 9 has enumerable `arguments.length` in strict mode. | |
key == 'length' || | |
// Node.js 0.10 has enumerable non-index properties on buffers. | |
(isBuff && (key == 'offset' || key == 'parent')) || | |
// PhantomJS 2 has enumerable non-index properties on typed arrays. | |
(isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || | |
// Skip index properties. | |
isIndex(key, length) | |
))) { | |
result.push(key); | |
} | |
} | |
return result; | |
} | |
/** Used for built-in method references. */ | |
var objectProto$5 = Object.prototype; | |
/** | |
* Checks if `value` is likely a prototype object. | |
* | |
* @private | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is a prototype, else `false`. | |
*/ | |
function isPrototype(value) { | |
var Ctor = value && value.constructor, | |
proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5; | |
return value === proto; | |
} | |
/** | |
* Creates a unary function that invokes `func` with its argument transformed. | |
* | |
* @private | |
* @param {Function} func The function to wrap. | |
* @param {Function} transform The argument transform. | |
* @returns {Function} Returns the new function. | |
*/ | |
function overArg(func, transform) { | |
return function(arg) { | |
return func(transform(arg)); | |
}; | |
} | |
/* Built-in method references for those with the same name as other `lodash` methods. */ | |
var nativeKeys = overArg(Object.keys, Object); | |
/** Used for built-in method references. */ | |
var objectProto$4 = Object.prototype; | |
/** Used to check objects for own properties. */ | |
var hasOwnProperty$3 = objectProto$4.hasOwnProperty; | |
/** | |
* The base implementation of `_.keys` which doesn't treat sparse arrays as dense. | |
* | |
* @private | |
* @param {Object} object The object to query. | |
* @returns {Array} Returns the array of property names. | |
*/ | |
function baseKeys(object) { | |
if (!isPrototype(object)) { | |
return nativeKeys(object); | |
} | |
var result = []; | |
for (var key in Object(object)) { | |
if (hasOwnProperty$3.call(object, key) && key != 'constructor') { | |
result.push(key); | |
} | |
} | |
return result; | |
} | |
/** | |
* Creates an array of the own enumerable property names of `object`. | |
* | |
* **Note:** Non-object values are coerced to objects. See the | |
* [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) | |
* for more details. | |
* | |
* @static | |
* @since 0.1.0 | |
* @memberOf _ | |
* @category Object | |
* @param {Object} object The object to query. | |
* @returns {Array} Returns the array of property names. | |
* @example | |
* | |
* function Foo() { | |
* this.a = 1; | |
* this.b = 2; | |
* } | |
* | |
* Foo.prototype.c = 3; | |
* | |
* _.keys(new Foo); | |
* // => ['a', 'b'] (iteration order is not guaranteed) | |
* | |
* _.keys('hi'); | |
* // => ['0', '1'] | |
*/ | |
function keys(object) { | |
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); | |
} | |
function createArrayIterator(coll) { | |
var i = -1; | |
var len = coll.length; | |
return function next() { | |
return ++i < len ? {value: coll[i], key: i} : null; | |
} | |
} | |
function createES2015Iterator(iterator) { | |
var i = -1; | |
return function next() { | |
var item = iterator.next(); | |
if (item.done) | |
return null; | |
i++; | |
return {value: item.value, key: i}; | |
} | |
} | |
function createObjectIterator(obj) { | |
var okeys = keys(obj); | |
var i = -1; | |
var len = okeys.length; | |
return function next() { | |
var key = okeys[++i]; | |
return i < len ? {value: obj[key], key: key} : null; | |
}; | |
} | |
function iterator(coll) { | |
if (isArrayLike(coll)) { | |
return createArrayIterator(coll); | |
} | |
var iterator = getIterator(coll); | |
return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); | |
} | |
function onlyOnce(fn) { | |
return function() { | |
if (fn === null) throw new Error("Callback was already called."); | |
var callFn = fn; | |
fn = null; | |
callFn.apply(this, arguments); | |
}; | |
} | |
function _eachOfLimit(limit) { | |
return function (obj, iteratee, callback) { | |
callback = once(callback || noop); | |
if (limit <= 0 || !obj) { | |
return callback(null); | |
} | |
var nextElem = iterator(obj); | |
var done = false; | |
var running = 0; | |
function iterateeCallback(err, value) { | |
running -= 1; | |
if (err) { | |
done = true; | |
callback(err); | |
} | |
else if (value === breakLoop || (done && running <= 0)) { | |
done = true; | |
return callback(null); | |
} | |
else { | |
replenish(); | |
} | |
} | |
function replenish () { | |
while (running < limit && !done) { | |
var elem = nextElem(); | |
if (elem === null) { | |
done = true; | |
if (running <= 0) { | |
callback(null); | |
} | |
return; | |
} | |
running += 1; | |
iteratee(elem.value, elem.key, onlyOnce(iterateeCallback)); | |
} | |
} | |
replenish(); | |
}; | |
} | |
/** | |
* The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a | |
* time. | |
* | |
* @name eachOfLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.eachOf]{@link module:Collections.eachOf} | |
* @alias forEachOfLimit | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - An async function to apply to each | |
* item in `coll`. The `key` is the item's key, or index in the case of an | |
* array. | |
* Invoked with (item, key, callback). | |
* @param {Function} [callback] - A callback which is called when all | |
* `iteratee` functions have finished, or an error occurs. Invoked with (err). | |
*/ | |
function eachOfLimit(coll, limit, iteratee, callback) { | |
_eachOfLimit(limit)(coll, wrapAsync(iteratee), callback); | |
} | |
function doLimit(fn, limit) { | |
return function (iterable, iteratee, callback) { | |
return fn(iterable, limit, iteratee, callback); | |
}; | |
} | |
// eachOf implementation optimized for array-likes | |
function eachOfArrayLike(coll, iteratee, callback) { | |
callback = once(callback || noop); | |
var index = 0, | |
completed = 0, | |
length = coll.length; | |
if (length === 0) { | |
callback(null); | |
} | |
function iteratorCallback(err, value) { | |
if (err) { | |
callback(err); | |
} else if ((++completed === length) || value === breakLoop) { | |
callback(null); | |
} | |
} | |
for (; index < length; index++) { | |
iteratee(coll[index], index, onlyOnce(iteratorCallback)); | |
} | |
} | |
// a generic version of eachOf which can handle array, object, and iterator cases. | |
var eachOfGeneric = doLimit(eachOfLimit, Infinity); | |
/** | |
* Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument | |
* to the iteratee. | |
* | |
* @name eachOf | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @alias forEachOf | |
* @category Collection | |
* @see [async.each]{@link module:Collections.each} | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - A function to apply to each | |
* item in `coll`. | |
* The `key` is the item's key, or index in the case of an array. | |
* Invoked with (item, key, callback). | |
* @param {Function} [callback] - A callback which is called when all | |
* `iteratee` functions have finished, or an error occurs. Invoked with (err). | |
* @example | |
* | |
* var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"}; | |
* var configs = {}; | |
* | |
* async.forEachOf(obj, function (value, key, callback) { | |
* fs.readFile(__dirname + value, "utf8", function (err, data) { | |
* if (err) return callback(err); | |
* try { | |
* configs[key] = JSON.parse(data); | |
* } catch (e) { | |
* return callback(e); | |
* } | |
* callback(); | |
* }); | |
* }, function (err) { | |
* if (err) console.error(err.message); | |
* // configs is now a map of JSON data | |
* doSomethingWith(configs); | |
* }); | |
*/ | |
var eachOf = function(coll, iteratee, callback) { | |
var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric; | |
eachOfImplementation(coll, wrapAsync(iteratee), callback); | |
}; | |
function doParallel(fn) { | |
return function (obj, iteratee, callback) { | |
return fn(eachOf, obj, wrapAsync(iteratee), callback); | |
}; | |
} | |
function _asyncMap(eachfn, arr, iteratee, callback) { | |
callback = callback || noop; | |
arr = arr || []; | |
var results = []; | |
var counter = 0; | |
var _iteratee = wrapAsync(iteratee); | |
eachfn(arr, function (value, _, callback) { | |
var index = counter++; | |
_iteratee(value, function (err, v) { | |
results[index] = v; | |
callback(err); | |
}); | |
}, function (err) { | |
callback(err, results); | |
}); | |
} | |
/** | |
* Produces a new collection of values by mapping each value in `coll` through | |
* the `iteratee` function. The `iteratee` is called with an item from `coll` | |
* and a callback for when it has finished processing. Each of these callback | |
* takes 2 arguments: an `error`, and the transformed item from `coll`. If | |
* `iteratee` passes an error to its callback, the main `callback` (for the | |
* `map` function) is immediately called with the error. | |
* | |
* Note, that since this function applies the `iteratee` to each item in | |
* parallel, there is no guarantee that the `iteratee` functions will complete | |
* in order. However, the results array will be in the same order as the | |
* original `coll`. | |
* | |
* If `map` is passed an Object, the results will be an Array. The results | |
* will roughly be in the order of the original Objects' keys (but this can | |
* vary across JavaScript engines). | |
* | |
* @name map | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async function to apply to each item in | |
* `coll`. | |
* The iteratee should complete with the transformed item. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called when all `iteratee` | |
* functions have finished, or an error occurs. Results is an Array of the | |
* transformed items from the `coll`. Invoked with (err, results). | |
* @example | |
* | |
* async.map(['file1','file2','file3'], fs.stat, function(err, results) { | |
* // results is now an array of stats for each file | |
* }); | |
*/ | |
var map = doParallel(_asyncMap); | |
/** | |
* Applies the provided arguments to each function in the array, calling | |
* `callback` after all functions have completed. If you only provide the first | |
* argument, `fns`, then it will return a function which lets you pass in the | |
* arguments as if it were a single function call. If more arguments are | |
* provided, `callback` is required while `args` is still optional. | |
* | |
* @name applyEach | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s | |
* to all call with the same arguments | |
* @param {...*} [args] - any number of separate arguments to pass to the | |
* function. | |
* @param {Function} [callback] - the final argument should be the callback, | |
* called when all functions have completed processing. | |
* @returns {Function} - If only the first argument, `fns`, is provided, it will | |
* return a function which lets you pass in the arguments as if it were a single | |
* function call. The signature is `(..args, callback)`. If invoked with any | |
* arguments, `callback` is required. | |
* @example | |
* | |
* async.applyEach([enableSearch, updateSchema], 'bucket', callback); | |
* | |
* // partial application example: | |
* async.each( | |
* buckets, | |
* async.applyEach([enableSearch, updateSchema]), | |
* callback | |
* ); | |
*/ | |
var applyEach = applyEach$1(map); | |
function doParallelLimit(fn) { | |
return function (obj, limit, iteratee, callback) { | |
return fn(_eachOfLimit(limit), obj, wrapAsync(iteratee), callback); | |
}; | |
} | |
/** | |
* The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time. | |
* | |
* @name mapLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.map]{@link module:Collections.map} | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - An async function to apply to each item in | |
* `coll`. | |
* The iteratee should complete with the transformed item. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called when all `iteratee` | |
* functions have finished, or an error occurs. Results is an array of the | |
* transformed items from the `coll`. Invoked with (err, results). | |
*/ | |
var mapLimit = doParallelLimit(_asyncMap); | |
/** | |
* The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time. | |
* | |
* @name mapSeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.map]{@link module:Collections.map} | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async function to apply to each item in | |
* `coll`. | |
* The iteratee should complete with the transformed item. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called when all `iteratee` | |
* functions have finished, or an error occurs. Results is an array of the | |
* transformed items from the `coll`. Invoked with (err, results). | |
*/ | |
var mapSeries = doLimit(mapLimit, 1); | |
/** | |
* The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time. | |
* | |
* @name applyEachSeries | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.applyEach]{@link module:ControlFlow.applyEach} | |
* @category Control Flow | |
* @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s to all | |
* call with the same arguments | |
* @param {...*} [args] - any number of separate arguments to pass to the | |
* function. | |
* @param {Function} [callback] - the final argument should be the callback, | |
* called when all functions have completed processing. | |
* @returns {Function} - If only the first argument is provided, it will return | |
* a function which lets you pass in the arguments as if it were a single | |
* function call. | |
*/ | |
var applyEachSeries = applyEach$1(mapSeries); | |
/** | |
* A specialized version of `_.forEach` for arrays without support for | |
* iteratee shorthands. | |
* | |
* @private | |
* @param {Array} [array] The array to iterate over. | |
* @param {Function} iteratee The function invoked per iteration. | |
* @returns {Array} Returns `array`. | |
*/ | |
function arrayEach(array, iteratee) { | |
var index = -1, | |
length = array == null ? 0 : array.length; | |
while (++index < length) { | |
if (iteratee(array[index], index, array) === false) { | |
break; | |
} | |
} | |
return array; | |
} | |
/** | |
* Creates a base function for methods like `_.forIn` and `_.forOwn`. | |
* | |
* @private | |
* @param {boolean} [fromRight] Specify iterating from right to left. | |
* @returns {Function} Returns the new base function. | |
*/ | |
function createBaseFor(fromRight) { | |
return function(object, iteratee, keysFunc) { | |
var index = -1, | |
iterable = Object(object), | |
props = keysFunc(object), | |
length = props.length; | |
while (length--) { | |
var key = props[fromRight ? length : ++index]; | |
if (iteratee(iterable[key], key, iterable) === false) { | |
break; | |
} | |
} | |
return object; | |
}; | |
} | |
/** | |
* The base implementation of `baseForOwn` which iterates over `object` | |
* properties returned by `keysFunc` and invokes `iteratee` for each property. | |
* Iteratee functions may exit iteration early by explicitly returning `false`. | |
* | |
* @private | |
* @param {Object} object The object to iterate over. | |
* @param {Function} iteratee The function invoked per iteration. | |
* @param {Function} keysFunc The function to get the keys of `object`. | |
* @returns {Object} Returns `object`. | |
*/ | |
var baseFor = createBaseFor(); | |
/** | |
* The base implementation of `_.forOwn` without support for iteratee shorthands. | |
* | |
* @private | |
* @param {Object} object The object to iterate over. | |
* @param {Function} iteratee The function invoked per iteration. | |
* @returns {Object} Returns `object`. | |
*/ | |
function baseForOwn(object, iteratee) { | |
return object && baseFor(object, iteratee, keys); | |
} | |
/** | |
* The base implementation of `_.findIndex` and `_.findLastIndex` without | |
* support for iteratee shorthands. | |
* | |
* @private | |
* @param {Array} array The array to inspect. | |
* @param {Function} predicate The function invoked per iteration. | |
* @param {number} fromIndex The index to search from. | |
* @param {boolean} [fromRight] Specify iterating from right to left. | |
* @returns {number} Returns the index of the matched value, else `-1`. | |
*/ | |
function baseFindIndex(array, predicate, fromIndex, fromRight) { | |
var length = array.length, | |
index = fromIndex + (fromRight ? 1 : -1); | |
while ((fromRight ? index-- : ++index < length)) { | |
if (predicate(array[index], index, array)) { | |
return index; | |
} | |
} | |
return -1; | |
} | |
/** | |
* The base implementation of `_.isNaN` without support for number objects. | |
* | |
* @private | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. | |
*/ | |
function baseIsNaN(value) { | |
return value !== value; | |
} | |
/** | |
* A specialized version of `_.indexOf` which performs strict equality | |
* comparisons of values, i.e. `===`. | |
* | |
* @private | |
* @param {Array} array The array to inspect. | |
* @param {*} value The value to search for. | |
* @param {number} fromIndex The index to search from. | |
* @returns {number} Returns the index of the matched value, else `-1`. | |
*/ | |
function strictIndexOf(array, value, fromIndex) { | |
var index = fromIndex - 1, | |
length = array.length; | |
while (++index < length) { | |
if (array[index] === value) { | |
return index; | |
} | |
} | |
return -1; | |
} | |
/** | |
* The base implementation of `_.indexOf` without `fromIndex` bounds checks. | |
* | |
* @private | |
* @param {Array} array The array to inspect. | |
* @param {*} value The value to search for. | |
* @param {number} fromIndex The index to search from. | |
* @returns {number} Returns the index of the matched value, else `-1`. | |
*/ | |
function baseIndexOf(array, value, fromIndex) { | |
return value === value | |
? strictIndexOf(array, value, fromIndex) | |
: baseFindIndex(array, baseIsNaN, fromIndex); | |
} | |
/** | |
* Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on | |
* their requirements. Each function can optionally depend on other functions | |
* being completed first, and each function is run as soon as its requirements | |
* are satisfied. | |
* | |
* If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence | |
* will stop. Further tasks will not execute (so any other functions depending | |
* on it will not run), and the main `callback` is immediately called with the | |
* error. | |
* | |
* {@link AsyncFunction}s also receive an object containing the results of functions which | |
* have completed so far as the first argument, if they have dependencies. If a | |
* task function has no dependencies, it will only be passed a callback. | |
* | |
* @name auto | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {Object} tasks - An object. Each of its properties is either a | |
* function or an array of requirements, with the {@link AsyncFunction} itself the last item | |
* in the array. The object's key of a property serves as the name of the task | |
* defined by that property, i.e. can be used when specifying requirements for | |
* other tasks. The function receives one or two arguments: | |
* * a `results` object, containing the results of the previously executed | |
* functions, only passed if the task has any dependencies, | |
* * a `callback(err, result)` function, which must be called when finished, | |
* passing an `error` (which can be `null`) and the result of the function's | |
* execution. | |
* @param {number} [concurrency=Infinity] - An optional `integer` for | |
* determining the maximum number of tasks that can be run in parallel. By | |
* default, as many as possible. | |
* @param {Function} [callback] - An optional callback which is called when all | |
* the tasks have been completed. It receives the `err` argument if any `tasks` | |
* pass an error to their callback. Results are always returned; however, if an | |
* error occurs, no further `tasks` will be performed, and the results object | |
* will only contain partial results. Invoked with (err, results). | |
* @returns undefined | |
* @example | |
* | |
* async.auto({ | |
* // this function will just be passed a callback | |
* readData: async.apply(fs.readFile, 'data.txt', 'utf-8'), | |
* showData: ['readData', function(results, cb) { | |
* // results.readData is the file's contents | |
* // ... | |
* }] | |
* }, callback); | |
* | |
* async.auto({ | |
* get_data: function(callback) { | |
* console.log('in get_data'); | |
* // async code to get some data | |
* callback(null, 'data', 'converted to array'); | |
* }, | |
* make_folder: function(callback) { | |
* console.log('in make_folder'); | |
* // async code to create a directory to store a file in | |
* // this is run at the same time as getting the data | |
* callback(null, 'folder'); | |
* }, | |
* write_file: ['get_data', 'make_folder', function(results, callback) { | |
* console.log('in write_file', JSON.stringify(results)); | |
* // once there is some data and the directory exists, | |
* // write the data to a file in the directory | |
* callback(null, 'filename'); | |
* }], | |
* email_link: ['write_file', function(results, callback) { | |
* console.log('in email_link', JSON.stringify(results)); | |
* // once the file is written let's email a link to it... | |
* // results.write_file contains the filename returned by write_file. | |
* callback(null, {'file':results.write_file, 'email':'[email protected]'}); | |
* }] | |
* }, function(err, results) { | |
* console.log('err = ', err); | |
* console.log('results = ', results); | |
* }); | |
*/ | |
var auto = function (tasks, concurrency, callback) { | |
if (typeof concurrency === 'function') { | |
// concurrency is optional, shift the args. | |
callback = concurrency; | |
concurrency = null; | |
} | |
callback = once(callback || noop); | |
var keys$$1 = keys(tasks); | |
var numTasks = keys$$1.length; | |
if (!numTasks) { | |
return callback(null); | |
} | |
if (!concurrency) { | |
concurrency = numTasks; | |
} | |
var results = {}; | |
var runningTasks = 0; | |
var hasError = false; | |
var listeners = Object.create(null); | |
var readyTasks = []; | |
// for cycle detection: | |
var readyToCheck = []; // tasks that have been identified as reachable | |
// without the possibility of returning to an ancestor task | |
var uncheckedDependencies = {}; | |
baseForOwn(tasks, function (task, key) { | |
if (!isArray(task)) { | |
// no dependencies | |
enqueueTask(key, [task]); | |
readyToCheck.push(key); | |
return; | |
} | |
var dependencies = task.slice(0, task.length - 1); | |
var remainingDependencies = dependencies.length; | |
if (remainingDependencies === 0) { | |
enqueueTask(key, task); | |
readyToCheck.push(key); | |
return; | |
} | |
uncheckedDependencies[key] = remainingDependencies; | |
arrayEach(dependencies, function (dependencyName) { | |
if (!tasks[dependencyName]) { | |
throw new Error('async.auto task `' + key + | |
'` has a non-existent dependency `' + | |
dependencyName + '` in ' + | |
dependencies.join(', ')); | |
} | |
addListener(dependencyName, function () { | |
remainingDependencies--; | |
if (remainingDependencies === 0) { | |
enqueueTask(key, task); | |
} | |
}); | |
}); | |
}); | |
checkForDeadlocks(); | |
processQueue(); | |
function enqueueTask(key, task) { | |
readyTasks.push(function () { | |
runTask(key, task); | |
}); | |
} | |
function processQueue() { | |
if (readyTasks.length === 0 && runningTasks === 0) { | |
return callback(null, results); | |
} | |
while(readyTasks.length && runningTasks < concurrency) { | |
var run = readyTasks.shift(); | |
run(); | |
} | |
} | |
function addListener(taskName, fn) { | |
var taskListeners = listeners[taskName]; | |
if (!taskListeners) { | |
taskListeners = listeners[taskName] = []; | |
} | |
taskListeners.push(fn); | |
} | |
function taskComplete(taskName) { | |
var taskListeners = listeners[taskName] || []; | |
arrayEach(taskListeners, function (fn) { | |
fn(); | |
}); | |
processQueue(); | |
} | |
function runTask(key, task) { | |
if (hasError) return; | |
var taskCallback = onlyOnce(function(err, result) { | |
runningTasks--; | |
if (arguments.length > 2) { | |
result = slice(arguments, 1); | |
} | |
if (err) { | |
var safeResults = {}; | |
baseForOwn(results, function(val, rkey) { | |
safeResults[rkey] = val; | |
}); | |
safeResults[key] = result; | |
hasError = true; | |
listeners = Object.create(null); | |
callback(err, safeResults); | |
} else { | |
results[key] = result; | |
taskComplete(key); | |
} | |
}); | |
runningTasks++; | |
var taskFn = wrapAsync(task[task.length - 1]); | |
if (task.length > 1) { | |
taskFn(results, taskCallback); | |
} else { | |
taskFn(taskCallback); | |
} | |
} | |
function checkForDeadlocks() { | |
// Kahn's algorithm | |
// https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm | |
// http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html | |
var currentTask; | |
var counter = 0; | |
while (readyToCheck.length) { | |
currentTask = readyToCheck.pop(); | |
counter++; | |
arrayEach(getDependents(currentTask), function (dependent) { | |
if (--uncheckedDependencies[dependent] === 0) { | |
readyToCheck.push(dependent); | |
} | |
}); | |
} | |
if (counter !== numTasks) { | |
throw new Error( | |
'async.auto cannot execute tasks due to a recursive dependency' | |
); | |
} | |
} | |
function getDependents(taskName) { | |
var result = []; | |
baseForOwn(tasks, function (task, key) { | |
if (isArray(task) && baseIndexOf(task, taskName, 0) >= 0) { | |
result.push(key); | |
} | |
}); | |
return result; | |
} | |
}; | |
/** | |
* A specialized version of `_.map` for arrays without support for iteratee | |
* shorthands. | |
* | |
* @private | |
* @param {Array} [array] The array to iterate over. | |
* @param {Function} iteratee The function invoked per iteration. | |
* @returns {Array} Returns the new mapped array. | |
*/ | |
function arrayMap(array, iteratee) { | |
var index = -1, | |
length = array == null ? 0 : array.length, | |
result = Array(length); | |
while (++index < length) { | |
result[index] = iteratee(array[index], index, array); | |
} | |
return result; | |
} | |
/** `Object#toString` result references. */ | |
var symbolTag = '[object Symbol]'; | |
/** | |
* Checks if `value` is classified as a `Symbol` primitive or object. | |
* | |
* @static | |
* @memberOf _ | |
* @since 4.0.0 | |
* @category Lang | |
* @param {*} value The value to check. | |
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`. | |
* @example | |
* | |
* _.isSymbol(Symbol.iterator); | |
* // => true | |
* | |
* _.isSymbol('abc'); | |
* // => false | |
*/ | |
function isSymbol(value) { | |
return typeof value == 'symbol' || | |
(isObjectLike(value) && baseGetTag(value) == symbolTag); | |
} | |
/** Used as references for various `Number` constants. */ | |
var INFINITY = 1 / 0; | |
/** Used to convert symbols to primitives and strings. */ | |
var symbolProto = Symbol$1 ? Symbol$1.prototype : undefined; | |
var symbolToString = symbolProto ? symbolProto.toString : undefined; | |
/** | |
* The base implementation of `_.toString` which doesn't convert nullish | |
* values to empty strings. | |
* | |
* @private | |
* @param {*} value The value to process. | |
* @returns {string} Returns the string. | |
*/ | |
function baseToString(value) { | |
// Exit early for strings to avoid a performance hit in some environments. | |
if (typeof value == 'string') { | |
return value; | |
} | |
if (isArray(value)) { | |
// Recursively convert values (susceptible to call stack limits). | |
return arrayMap(value, baseToString) + ''; | |
} | |
if (isSymbol(value)) { | |
return symbolToString ? symbolToString.call(value) : ''; | |
} | |
var result = (value + ''); | |
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; | |
} | |
/** | |
* The base implementation of `_.slice` without an iteratee call guard. | |
* | |
* @private | |
* @param {Array} array The array to slice. | |
* @param {number} [start=0] The start position. | |
* @param {number} [end=array.length] The end position. | |
* @returns {Array} Returns the slice of `array`. | |
*/ | |
function baseSlice(array, start, end) { | |
var index = -1, | |
length = array.length; | |
if (start < 0) { | |
start = -start > length ? 0 : (length + start); | |
} | |
end = end > length ? length : end; | |
if (end < 0) { | |
end += length; | |
} | |
length = start > end ? 0 : ((end - start) >>> 0); | |
start >>>= 0; | |
var result = Array(length); | |
while (++index < length) { | |
result[index] = array[index + start]; | |
} | |
return result; | |
} | |
/** | |
* Casts `array` to a slice if it's needed. | |
* | |
* @private | |
* @param {Array} array The array to inspect. | |
* @param {number} start The start position. | |
* @param {number} [end=array.length] The end position. | |
* @returns {Array} Returns the cast slice. | |
*/ | |
function castSlice(array, start, end) { | |
var length = array.length; | |
end = end === undefined ? length : end; | |
return (!start && end >= length) ? array : baseSlice(array, start, end); | |
} | |
/** | |
* Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol | |
* that is not found in the character symbols. | |
* | |
* @private | |
* @param {Array} strSymbols The string symbols to inspect. | |
* @param {Array} chrSymbols The character symbols to find. | |
* @returns {number} Returns the index of the last unmatched string symbol. | |
*/ | |
function charsEndIndex(strSymbols, chrSymbols) { | |
var index = strSymbols.length; | |
while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} | |
return index; | |
} | |
/** | |
* Used by `_.trim` and `_.trimStart` to get the index of the first string symbol | |
* that is not found in the character symbols. | |
* | |
* @private | |
* @param {Array} strSymbols The string symbols to inspect. | |
* @param {Array} chrSymbols The character symbols to find. | |
* @returns {number} Returns the index of the first unmatched string symbol. | |
*/ | |
function charsStartIndex(strSymbols, chrSymbols) { | |
var index = -1, | |
length = strSymbols.length; | |
while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} | |
return index; | |
} | |
/** | |
* Converts an ASCII `string` to an array. | |
* | |
* @private | |
* @param {string} string The string to convert. | |
* @returns {Array} Returns the converted array. | |
*/ | |
function asciiToArray(string) { | |
return string.split(''); | |
} | |
/** Used to compose unicode character classes. */ | |
var rsAstralRange = '\\ud800-\\udfff'; | |
var rsComboMarksRange = '\\u0300-\\u036f'; | |
var reComboHalfMarksRange = '\\ufe20-\\ufe2f'; | |
var rsComboSymbolsRange = '\\u20d0-\\u20ff'; | |
var rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange; | |
var rsVarRange = '\\ufe0e\\ufe0f'; | |
/** Used to compose unicode capture groups. */ | |
var rsZWJ = '\\u200d'; | |
/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ | |
var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); | |
/** | |
* Checks if `string` contains Unicode symbols. | |
* | |
* @private | |
* @param {string} string The string to inspect. | |
* @returns {boolean} Returns `true` if a symbol is found, else `false`. | |
*/ | |
function hasUnicode(string) { | |
return reHasUnicode.test(string); | |
} | |
/** Used to compose unicode character classes. */ | |
var rsAstralRange$1 = '\\ud800-\\udfff'; | |
var rsComboMarksRange$1 = '\\u0300-\\u036f'; | |
var reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f'; | |
var rsComboSymbolsRange$1 = '\\u20d0-\\u20ff'; | |
var rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1; | |
var rsVarRange$1 = '\\ufe0e\\ufe0f'; | |
/** Used to compose unicode capture groups. */ | |
var rsAstral = '[' + rsAstralRange$1 + ']'; | |
var rsCombo = '[' + rsComboRange$1 + ']'; | |
var rsFitz = '\\ud83c[\\udffb-\\udfff]'; | |
var rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')'; | |
var rsNonAstral = '[^' + rsAstralRange$1 + ']'; | |
var rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}'; | |
var rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]'; | |
var rsZWJ$1 = '\\u200d'; | |
/** Used to compose unicode regexes. */ | |
var reOptMod = rsModifier + '?'; | |
var rsOptVar = '[' + rsVarRange$1 + ']?'; | |
var rsOptJoin = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*'; | |
var rsSeq = rsOptVar + reOptMod + rsOptJoin; | |
var rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; | |
/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ | |
var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); | |
/** | |
* Converts a Unicode `string` to an array. | |
* | |
* @private | |
* @param {string} string The string to convert. | |
* @returns {Array} Returns the converted array. | |
*/ | |
function unicodeToArray(string) { | |
return string.match(reUnicode) || []; | |
} | |
/** | |
* Converts `string` to an array. | |
* | |
* @private | |
* @param {string} string The string to convert. | |
* @returns {Array} Returns the converted array. | |
*/ | |
function stringToArray(string) { | |
return hasUnicode(string) | |
? unicodeToArray(string) | |
: asciiToArray(string); | |
} | |
/** | |
* Converts `value` to a string. An empty string is returned for `null` | |
* and `undefined` values. The sign of `-0` is preserved. | |
* | |
* @static | |
* @memberOf _ | |
* @since 4.0.0 | |
* @category Lang | |
* @param {*} value The value to convert. | |
* @returns {string} Returns the converted string. | |
* @example | |
* | |
* _.toString(null); | |
* // => '' | |
* | |
* _.toString(-0); | |
* // => '-0' | |
* | |
* _.toString([1, 2, 3]); | |
* // => '1,2,3' | |
*/ | |
function toString(value) { | |
return value == null ? '' : baseToString(value); | |
} | |
/** Used to match leading and trailing whitespace. */ | |
var reTrim = /^\s+|\s+$/g; | |
/** | |
* Removes leading and trailing whitespace or specified characters from `string`. | |
* | |
* @static | |
* @memberOf _ | |
* @since 3.0.0 | |
* @category String | |
* @param {string} [string=''] The string to trim. | |
* @param {string} [chars=whitespace] The characters to trim. | |
* @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. | |
* @returns {string} Returns the trimmed string. | |
* @example | |
* | |
* _.trim(' abc '); | |
* // => 'abc' | |
* | |
* _.trim('-_-abc-_-', '_-'); | |
* // => 'abc' | |
* | |
* _.map([' foo ', ' bar '], _.trim); | |
* // => ['foo', 'bar'] | |
*/ | |
function trim(string, chars, guard) { | |
string = toString(string); | |
if (string && (guard || chars === undefined)) { | |
return string.replace(reTrim, ''); | |
} | |
if (!string || !(chars = baseToString(chars))) { | |
return string; | |
} | |
var strSymbols = stringToArray(string), | |
chrSymbols = stringToArray(chars), | |
start = charsStartIndex(strSymbols, chrSymbols), | |
end = charsEndIndex(strSymbols, chrSymbols) + 1; | |
return castSlice(strSymbols, start, end).join(''); | |
} | |
var FN_ARGS = /^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m; | |
var FN_ARG_SPLIT = /,/; | |
var FN_ARG = /(=.+)?(\s*)$/; | |
var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; | |
function parseParams(func) { | |
func = func.toString().replace(STRIP_COMMENTS, ''); | |
func = func.match(FN_ARGS)[2].replace(' ', ''); | |
func = func ? func.split(FN_ARG_SPLIT) : []; | |
func = func.map(function (arg){ | |
return trim(arg.replace(FN_ARG, '')); | |
}); | |
return func; | |
} | |
/** | |
* A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent | |
* tasks are specified as parameters to the function, after the usual callback | |
* parameter, with the parameter names matching the names of the tasks it | |
* depends on. This can provide even more readable task graphs which can be | |
* easier to maintain. | |
* | |
* If a final callback is specified, the task results are similarly injected, | |
* specified as named parameters after the initial error parameter. | |
* | |
* The autoInject function is purely syntactic sugar and its semantics are | |
* otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}. | |
* | |
* @name autoInject | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.auto]{@link module:ControlFlow.auto} | |
* @category Control Flow | |
* @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of | |
* the form 'func([dependencies...], callback). The object's key of a property | |
* serves as the name of the task defined by that property, i.e. can be used | |
* when specifying requirements for other tasks. | |
* * The `callback` parameter is a `callback(err, result)` which must be called | |
* when finished, passing an `error` (which can be `null`) and the result of | |
* the function's execution. The remaining parameters name other tasks on | |
* which the task is dependent, and the results from those tasks are the | |
* arguments of those parameters. | |
* @param {Function} [callback] - An optional callback which is called when all | |
* the tasks have been completed. It receives the `err` argument if any `tasks` | |
* pass an error to their callback, and a `results` object with any completed | |
* task results, similar to `auto`. | |
* @example | |
* | |
* // The example from `auto` can be rewritten as follows: | |
* async.autoInject({ | |
* get_data: function(callback) { | |
* // async code to get some data | |
* callback(null, 'data', 'converted to array'); | |
* }, | |
* make_folder: function(callback) { | |
* // async code to create a directory to store a file in | |
* // this is run at the same time as getting the data | |
* callback(null, 'folder'); | |
* }, | |
* write_file: function(get_data, make_folder, callback) { | |
* // once there is some data and the directory exists, | |
* // write the data to a file in the directory | |
* callback(null, 'filename'); | |
* }, | |
* email_link: function(write_file, callback) { | |
* // once the file is written let's email a link to it... | |
* // write_file contains the filename returned by write_file. | |
* callback(null, {'file':write_file, 'email':'[email protected]'}); | |
* } | |
* }, function(err, results) { | |
* console.log('err = ', err); | |
* console.log('email_link = ', results.email_link); | |
* }); | |
* | |
* // If you are using a JS minifier that mangles parameter names, `autoInject` | |
* // will not work with plain functions, since the parameter names will be | |
* // collapsed to a single letter identifier. To work around this, you can | |
* // explicitly specify the names of the parameters your task function needs | |
* // in an array, similar to Angular.js dependency injection. | |
* | |
* // This still has an advantage over plain `auto`, since the results a task | |
* // depends on are still spread into arguments. | |
* async.autoInject({ | |
* //... | |
* write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) { | |
* callback(null, 'filename'); | |
* }], | |
* email_link: ['write_file', function(write_file, callback) { | |
* callback(null, {'file':write_file, 'email':'[email protected]'}); | |
* }] | |
* //... | |
* }, function(err, results) { | |
* console.log('err = ', err); | |
* console.log('email_link = ', results.email_link); | |
* }); | |
*/ | |
function autoInject(tasks, callback) { | |
var newTasks = {}; | |
baseForOwn(tasks, function (taskFn, key) { | |
var params; | |
var fnIsAsync = isAsync(taskFn); | |
var hasNoDeps = | |
(!fnIsAsync && taskFn.length === 1) || | |
(fnIsAsync && taskFn.length === 0); | |
if (isArray(taskFn)) { | |
params = taskFn.slice(0, -1); | |
taskFn = taskFn[taskFn.length - 1]; | |
newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); | |
} else if (hasNoDeps) { | |
// no dependencies, use the function as-is | |
newTasks[key] = taskFn; | |
} else { | |
params = parseParams(taskFn); | |
if (taskFn.length === 0 && !fnIsAsync && params.length === 0) { | |
throw new Error("autoInject task functions require explicit parameters."); | |
} | |
// remove callback param | |
if (!fnIsAsync) params.pop(); | |
newTasks[key] = params.concat(newTask); | |
} | |
function newTask(results, taskCb) { | |
var newArgs = arrayMap(params, function (name) { | |
return results[name]; | |
}); | |
newArgs.push(taskCb); | |
wrapAsync(taskFn).apply(null, newArgs); | |
} | |
}); | |
auto(newTasks, callback); | |
} | |
// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation | |
// used for queues. This implementation assumes that the node provided by the user can be modified | |
// to adjust the next and last properties. We implement only the minimal functionality | |
// for queue support. | |
function DLL() { | |
this.head = this.tail = null; | |
this.length = 0; | |
} | |
function setInitial(dll, node) { | |
dll.length = 1; | |
dll.head = dll.tail = node; | |
} | |
DLL.prototype.removeLink = function(node) { | |
if (node.prev) node.prev.next = node.next; | |
else this.head = node.next; | |
if (node.next) node.next.prev = node.prev; | |
else this.tail = node.prev; | |
node.prev = node.next = null; | |
this.length -= 1; | |
return node; | |
}; | |
DLL.prototype.empty = function () { | |
while(this.head) this.shift(); | |
return this; | |
}; | |
DLL.prototype.insertAfter = function(node, newNode) { | |
newNode.prev = node; | |
newNode.next = node.next; | |
if (node.next) node.next.prev = newNode; | |
else this.tail = newNode; | |
node.next = newNode; | |
this.length += 1; | |
}; | |
DLL.prototype.insertBefore = function(node, newNode) { | |
newNode.prev = node.prev; | |
newNode.next = node; | |
if (node.prev) node.prev.next = newNode; | |
else this.head = newNode; | |
node.prev = newNode; | |
this.length += 1; | |
}; | |
DLL.prototype.unshift = function(node) { | |
if (this.head) this.insertBefore(this.head, node); | |
else setInitial(this, node); | |
}; | |
DLL.prototype.push = function(node) { | |
if (this.tail) this.insertAfter(this.tail, node); | |
else setInitial(this, node); | |
}; | |
DLL.prototype.shift = function() { | |
return this.head && this.removeLink(this.head); | |
}; | |
DLL.prototype.pop = function() { | |
return this.tail && this.removeLink(this.tail); | |
}; | |
DLL.prototype.toArray = function () { | |
var arr = Array(this.length); | |
var curr = this.head; | |
for(var idx = 0; idx < this.length; idx++) { | |
arr[idx] = curr.data; | |
curr = curr.next; | |
} | |
return arr; | |
}; | |
DLL.prototype.remove = function (testFn) { | |
var curr = this.head; | |
while(!!curr) { | |
var next = curr.next; | |
if (testFn(curr)) { | |
this.removeLink(curr); | |
} | |
curr = next; | |
} | |
return this; | |
}; | |
function queue(worker, concurrency, payload) { | |
if (concurrency == null) { | |
concurrency = 1; | |
} | |
else if(concurrency === 0) { | |
throw new Error('Concurrency must not be zero'); | |
} | |
var _worker = wrapAsync(worker); | |
var numRunning = 0; | |
var workersList = []; | |
var processingScheduled = false; | |
function _insert(data, insertAtFront, callback) { | |
if (callback != null && typeof callback !== 'function') { | |
throw new Error('task callback must be a function'); | |
} | |
q.started = true; | |
if (!isArray(data)) { | |
data = [data]; | |
} | |
if (data.length === 0 && q.idle()) { | |
// call drain immediately if there are no tasks | |
return setImmediate$1(function() { | |
q.drain(); | |
}); | |
} | |
for (var i = 0, l = data.length; i < l; i++) { | |
var item = { | |
data: data[i], | |
callback: callback || noop | |
}; | |
if (insertAtFront) { | |
q._tasks.unshift(item); | |
} else { | |
q._tasks.push(item); | |
} | |
} | |
if (!processingScheduled) { | |
processingScheduled = true; | |
setImmediate$1(function() { | |
processingScheduled = false; | |
q.process(); | |
}); | |
} | |
} | |
function _next(tasks) { | |
return function(err){ | |
numRunning -= 1; | |
for (var i = 0, l = tasks.length; i < l; i++) { | |
var task = tasks[i]; | |
var index = baseIndexOf(workersList, task, 0); | |
if (index === 0) { | |
workersList.shift(); | |
} else if (index > 0) { | |
workersList.splice(index, 1); | |
} | |
task.callback.apply(task, arguments); | |
if (err != null) { | |
q.error(err, task.data); | |
} | |
} | |
if (numRunning <= (q.concurrency - q.buffer) ) { | |
q.unsaturated(); | |
} | |
if (q.idle()) { | |
q.drain(); | |
} | |
q.process(); | |
}; | |
} | |
var isProcessing = false; | |
var q = { | |
_tasks: new DLL(), | |
concurrency: concurrency, | |
payload: payload, | |
saturated: noop, | |
unsaturated:noop, | |
buffer: concurrency / 4, | |
empty: noop, | |
drain: noop, | |
error: noop, | |
started: false, | |
paused: false, | |
push: function (data, callback) { | |
_insert(data, false, callback); | |
}, | |
kill: function () { | |
q.drain = noop; | |
q._tasks.empty(); | |
}, | |
unshift: function (data, callback) { | |
_insert(data, true, callback); | |
}, | |
remove: function (testFn) { | |
q._tasks.remove(testFn); | |
}, | |
process: function () { | |
// Avoid trying to start too many processing operations. This can occur | |
// when callbacks resolve synchronously (#1267). | |
if (isProcessing) { | |
return; | |
} | |
isProcessing = true; | |
while(!q.paused && numRunning < q.concurrency && q._tasks.length){ | |
var tasks = [], data = []; | |
var l = q._tasks.length; | |
if (q.payload) l = Math.min(l, q.payload); | |
for (var i = 0; i < l; i++) { | |
var node = q._tasks.shift(); | |
tasks.push(node); | |
workersList.push(node); | |
data.push(node.data); | |
} | |
numRunning += 1; | |
if (q._tasks.length === 0) { | |
q.empty(); | |
} | |
if (numRunning === q.concurrency) { | |
q.saturated(); | |
} | |
var cb = onlyOnce(_next(tasks)); | |
_worker(data, cb); | |
} | |
isProcessing = false; | |
}, | |
length: function () { | |
return q._tasks.length; | |
}, | |
running: function () { | |
return numRunning; | |
}, | |
workersList: function () { | |
return workersList; | |
}, | |
idle: function() { | |
return q._tasks.length + numRunning === 0; | |
}, | |
pause: function () { | |
q.paused = true; | |
}, | |
resume: function () { | |
if (q.paused === false) { return; } | |
q.paused = false; | |
setImmediate$1(q.process); | |
} | |
}; | |
return q; | |
} | |
/** | |
* A cargo of tasks for the worker function to complete. Cargo inherits all of | |
* the same methods and event callbacks as [`queue`]{@link module:ControlFlow.queue}. | |
* @typedef {Object} CargoObject | |
* @memberOf module:ControlFlow | |
* @property {Function} length - A function returning the number of items | |
* waiting to be processed. Invoke like `cargo.length()`. | |
* @property {number} payload - An `integer` for determining how many tasks | |
* should be process per round. This property can be changed after a `cargo` is | |
* created to alter the payload on-the-fly. | |
* @property {Function} push - Adds `task` to the `queue`. The callback is | |
* called once the `worker` has finished processing the task. Instead of a | |
* single task, an array of `tasks` can be submitted. The respective callback is | |
* used for every task in the list. Invoke like `cargo.push(task, [callback])`. | |
* @property {Function} saturated - A callback that is called when the | |
* `queue.length()` hits the concurrency and further tasks will be queued. | |
* @property {Function} empty - A callback that is called when the last item | |
* from the `queue` is given to a `worker`. | |
* @property {Function} drain - A callback that is called when the last item | |
* from the `queue` has returned from the `worker`. | |
* @property {Function} idle - a function returning false if there are items | |
* waiting or being processed, or true if not. Invoke like `cargo.idle()`. | |
* @property {Function} pause - a function that pauses the processing of tasks | |
* until `resume()` is called. Invoke like `cargo.pause()`. | |
* @property {Function} resume - a function that resumes the processing of | |
* queued tasks when the queue is paused. Invoke like `cargo.resume()`. | |
* @property {Function} kill - a function that removes the `drain` callback and | |
* empties remaining tasks from the queue forcing it to go idle. Invoke like `cargo.kill()`. | |
*/ | |
/** | |
* Creates a `cargo` object with the specified payload. Tasks added to the | |
* cargo will be processed altogether (up to the `payload` limit). If the | |
* `worker` is in progress, the task is queued until it becomes available. Once | |
* the `worker` has completed some tasks, each callback of those tasks is | |
* called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) | |
* for how `cargo` and `queue` work. | |
* | |
* While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers | |
* at a time, cargo passes an array of tasks to a single worker, repeating | |
* when the worker is finished. | |
* | |
* @name cargo | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.queue]{@link module:ControlFlow.queue} | |
* @category Control Flow | |
* @param {AsyncFunction} worker - An asynchronous function for processing an array | |
* of queued tasks. Invoked with `(tasks, callback)`. | |
* @param {number} [payload=Infinity] - An optional `integer` for determining | |
* how many tasks should be processed per round; if omitted, the default is | |
* unlimited. | |
* @returns {module:ControlFlow.CargoObject} A cargo object to manage the tasks. Callbacks can | |
* attached as certain properties to listen for specific events during the | |
* lifecycle of the cargo and inner queue. | |
* @example | |
* | |
* // create a cargo object with payload 2 | |
* var cargo = async.cargo(function(tasks, callback) { | |
* for (var i=0; i<tasks.length; i++) { | |
* console.log('hello ' + tasks[i].name); | |
* } | |
* callback(); | |
* }, 2); | |
* | |
* // add some items | |
* cargo.push({name: 'foo'}, function(err) { | |
* console.log('finished processing foo'); | |
* }); | |
* cargo.push({name: 'bar'}, function(err) { | |
* console.log('finished processing bar'); | |
* }); | |
* cargo.push({name: 'baz'}, function(err) { | |
* console.log('finished processing baz'); | |
* }); | |
*/ | |
function cargo(worker, payload) { | |
return queue(worker, 1, payload); | |
} | |
/** | |
* The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. | |
* | |
* @name eachOfSeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.eachOf]{@link module:Collections.eachOf} | |
* @alias forEachOfSeries | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async function to apply to each item in | |
* `coll`. | |
* Invoked with (item, key, callback). | |
* @param {Function} [callback] - A callback which is called when all `iteratee` | |
* functions have finished, or an error occurs. Invoked with (err). | |
*/ | |
var eachOfSeries = doLimit(eachOfLimit, 1); | |
/** | |
* Reduces `coll` into a single value using an async `iteratee` to return each | |
* successive step. `memo` is the initial state of the reduction. This function | |
* only operates in series. | |
* | |
* For performance reasons, it may make sense to split a call to this function | |
* into a parallel map, and then use the normal `Array.prototype.reduce` on the | |
* results. This function is for situations where each step in the reduction | |
* needs to be async; if you can get the data before reducing it, then it's | |
* probably a good idea to do so. | |
* | |
* @name reduce | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @alias inject | |
* @alias foldl | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {*} memo - The initial state of the reduction. | |
* @param {AsyncFunction} iteratee - A function applied to each item in the | |
* array to produce the next step in the reduction. | |
* The `iteratee` should complete with the next state of the reduction. | |
* If the iteratee complete with an error, the reduction is stopped and the | |
* main `callback` is immediately called with the error. | |
* Invoked with (memo, item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Result is the reduced value. Invoked with | |
* (err, result). | |
* @example | |
* | |
* async.reduce([1,2,3], 0, function(memo, item, callback) { | |
* // pointless async: | |
* process.nextTick(function() { | |
* callback(null, memo + item) | |
* }); | |
* }, function(err, result) { | |
* // result is now equal to the last value of memo, which is 6 | |
* }); | |
*/ | |
function reduce(coll, memo, iteratee, callback) { | |
callback = once(callback || noop); | |
var _iteratee = wrapAsync(iteratee); | |
eachOfSeries(coll, function(x, i, callback) { | |
_iteratee(memo, x, function(err, v) { | |
memo = v; | |
callback(err); | |
}); | |
}, function(err) { | |
callback(err, memo); | |
}); | |
} | |
/** | |
* Version of the compose function that is more natural to read. Each function | |
* consumes the return value of the previous function. It is the equivalent of | |
* [compose]{@link module:ControlFlow.compose} with the arguments reversed. | |
* | |
* Each function is executed with the `this` binding of the composed function. | |
* | |
* @name seq | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.compose]{@link module:ControlFlow.compose} | |
* @category Control Flow | |
* @param {...AsyncFunction} functions - the asynchronous functions to compose | |
* @returns {Function} a function that composes the `functions` in order | |
* @example | |
* | |
* // Requires lodash (or underscore), express3 and dresende's orm2. | |
* // Part of an app, that fetches cats of the logged user. | |
* // This example uses `seq` function to avoid overnesting and error | |
* // handling clutter. | |
* app.get('/cats', function(request, response) { | |
* var User = request.models.User; | |
* async.seq( | |
* _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) | |
* function(user, fn) { | |
* user.getCats(fn); // 'getCats' has signature (callback(err, data)) | |
* } | |
* )(req.session.user_id, function (err, cats) { | |
* if (err) { | |
* console.error(err); | |
* response.json({ status: 'error', message: err.message }); | |
* } else { | |
* response.json({ status: 'ok', message: 'Cats found', data: cats }); | |
* } | |
* }); | |
* }); | |
*/ | |
function seq(/*...functions*/) { | |
var _functions = arrayMap(arguments, wrapAsync); | |
return function(/*...args*/) { | |
var args = slice(arguments); | |
var that = this; | |
var cb = args[args.length - 1]; | |
if (typeof cb == 'function') { | |
args.pop(); | |
} else { | |
cb = noop; | |
} | |
reduce(_functions, args, function(newargs, fn, cb) { | |
fn.apply(that, newargs.concat(function(err/*, ...nextargs*/) { | |
var nextargs = slice(arguments, 1); | |
cb(err, nextargs); | |
})); | |
}, | |
function(err, results) { | |
cb.apply(that, [err].concat(results)); | |
}); | |
}; | |
} | |
/** | |
* Creates a function which is a composition of the passed asynchronous | |
* functions. Each function consumes the return value of the function that | |
* follows. Composing functions `f()`, `g()`, and `h()` would produce the result | |
* of `f(g(h()))`, only this version uses callbacks to obtain the return values. | |
* | |
* Each function is executed with the `this` binding of the composed function. | |
* | |
* @name compose | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {...AsyncFunction} functions - the asynchronous functions to compose | |
* @returns {Function} an asynchronous function that is the composed | |
* asynchronous `functions` | |
* @example | |
* | |
* function add1(n, callback) { | |
* setTimeout(function () { | |
* callback(null, n + 1); | |
* }, 10); | |
* } | |
* | |
* function mul3(n, callback) { | |
* setTimeout(function () { | |
* callback(null, n * 3); | |
* }, 10); | |
* } | |
* | |
* var add1mul3 = async.compose(mul3, add1); | |
* add1mul3(4, function (err, result) { | |
* // result now equals 15 | |
* }); | |
*/ | |
var compose = function(/*...args*/) { | |
return seq.apply(null, slice(arguments).reverse()); | |
}; | |
var _concat = Array.prototype.concat; | |
/** | |
* The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time. | |
* | |
* @name concatLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.concat]{@link module:Collections.concat} | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, | |
* which should use an array as its result. Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished, or an error occurs. Results is an array | |
* containing the concatenated results of the `iteratee` function. Invoked with | |
* (err, results). | |
*/ | |
var concatLimit = function(coll, limit, iteratee, callback) { | |
callback = callback || noop; | |
var _iteratee = wrapAsync(iteratee); | |
mapLimit(coll, limit, function(val, callback) { | |
_iteratee(val, function(err /*, ...args*/) { | |
if (err) return callback(err); | |
return callback(null, slice(arguments, 1)); | |
}); | |
}, function(err, mapResults) { | |
var result = []; | |
for (var i = 0; i < mapResults.length; i++) { | |
if (mapResults[i]) { | |
result = _concat.apply(result, mapResults[i]); | |
} | |
} | |
return callback(err, result); | |
}); | |
}; | |
/** | |
* Applies `iteratee` to each item in `coll`, concatenating the results. Returns | |
* the concatenated list. The `iteratee`s are called in parallel, and the | |
* results are concatenated as they return. There is no guarantee that the | |
* results array will be returned in the original order of `coll` passed to the | |
* `iteratee` function. | |
* | |
* @name concat | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, | |
* which should use an array as its result. Invoked with (item, callback). | |
* @param {Function} [callback(err)] - A callback which is called after all the | |
* `iteratee` functions have finished, or an error occurs. Results is an array | |
* containing the concatenated results of the `iteratee` function. Invoked with | |
* (err, results). | |
* @example | |
* | |
* async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files) { | |
* // files is now a list of filenames that exist in the 3 directories | |
* }); | |
*/ | |
var concat = doLimit(concatLimit, Infinity); | |
/** | |
* The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time. | |
* | |
* @name concatSeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.concat]{@link module:Collections.concat} | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. | |
* The iteratee should complete with an array an array of results. | |
* Invoked with (item, callback). | |
* @param {Function} [callback(err)] - A callback which is called after all the | |
* `iteratee` functions have finished, or an error occurs. Results is an array | |
* containing the concatenated results of the `iteratee` function. Invoked with | |
* (err, results). | |
*/ | |
var concatSeries = doLimit(concatLimit, 1); | |
/** | |
* Returns a function that when called, calls-back with the values provided. | |
* Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to | |
* [`auto`]{@link module:ControlFlow.auto}. | |
* | |
* @name constant | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @category Util | |
* @param {...*} arguments... - Any number of arguments to automatically invoke | |
* callback with. | |
* @returns {AsyncFunction} Returns a function that when invoked, automatically | |
* invokes the callback with the previous given arguments. | |
* @example | |
* | |
* async.waterfall([ | |
* async.constant(42), | |
* function (value, next) { | |
* // value === 42 | |
* }, | |
* //... | |
* ], callback); | |
* | |
* async.waterfall([ | |
* async.constant(filename, "utf8"), | |
* fs.readFile, | |
* function (fileData, next) { | |
* //... | |
* } | |
* //... | |
* ], callback); | |
* | |
* async.auto({ | |
* hostname: async.constant("https://server.net/"), | |
* port: findFreePort, | |
* launchServer: ["hostname", "port", function (options, cb) { | |
* startServer(options, cb); | |
* }], | |
* //... | |
* }, callback); | |
*/ | |
var constant = function(/*...values*/) { | |
var values = slice(arguments); | |
var args = [null].concat(values); | |
return function (/*...ignoredArgs, callback*/) { | |
var callback = arguments[arguments.length - 1]; | |
return callback.apply(this, args); | |
}; | |
}; | |
/** | |
* This method returns the first argument it receives. | |
* | |
* @static | |
* @since 0.1.0 | |
* @memberOf _ | |
* @category Util | |
* @param {*} value Any value. | |
* @returns {*} Returns `value`. | |
* @example | |
* | |
* var object = { 'a': 1 }; | |
* | |
* console.log(_.identity(object) === object); | |
* // => true | |
*/ | |
function identity(value) { | |
return value; | |
} | |
function _createTester(check, getResult) { | |
return function(eachfn, arr, iteratee, cb) { | |
cb = cb || noop; | |
var testPassed = false; | |
var testResult; | |
eachfn(arr, function(value, _, callback) { | |
iteratee(value, function(err, result) { | |
if (err) { | |
callback(err); | |
} else if (check(result) && !testResult) { | |
testPassed = true; | |
testResult = getResult(true, value); | |
callback(null, breakLoop); | |
} else { | |
callback(); | |
} | |
}); | |
}, function(err) { | |
if (err) { | |
cb(err); | |
} else { | |
cb(null, testPassed ? testResult : getResult(false)); | |
} | |
}); | |
}; | |
} | |
function _findGetResult(v, x) { | |
return x; | |
} | |
/** | |
* Returns the first value in `coll` that passes an async truth test. The | |
* `iteratee` is applied in parallel, meaning the first iteratee to return | |
* `true` will fire the detect `callback` with that result. That means the | |
* result might not be the first item in the original `coll` (in terms of order) | |
* that passes the test. | |
* If order within the original `coll` is important, then look at | |
* [`detectSeries`]{@link module:Collections.detectSeries}. | |
* | |
* @name detect | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @alias find | |
* @category Collections | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. | |
* The iteratee must complete with a boolean value as its result. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called as soon as any | |
* iteratee returns `true`, or after all the `iteratee` functions have finished. | |
* Result will be the first item in the array that passes the truth test | |
* (iteratee) or the value `undefined` if none passed. Invoked with | |
* (err, result). | |
* @example | |
* | |
* async.detect(['file1','file2','file3'], function(filePath, callback) { | |
* fs.access(filePath, function(err) { | |
* callback(null, !err) | |
* }); | |
* }, function(err, result) { | |
* // result now equals the first file in the list that exists | |
* }); | |
*/ | |
var detect = doParallel(_createTester(identity, _findGetResult)); | |
/** | |
* The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a | |
* time. | |
* | |
* @name detectLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.detect]{@link module:Collections.detect} | |
* @alias findLimit | |
* @category Collections | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. | |
* The iteratee must complete with a boolean value as its result. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called as soon as any | |
* iteratee returns `true`, or after all the `iteratee` functions have finished. | |
* Result will be the first item in the array that passes the truth test | |
* (iteratee) or the value `undefined` if none passed. Invoked with | |
* (err, result). | |
*/ | |
var detectLimit = doParallelLimit(_createTester(identity, _findGetResult)); | |
/** | |
* The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. | |
* | |
* @name detectSeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.detect]{@link module:Collections.detect} | |
* @alias findSeries | |
* @category Collections | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. | |
* The iteratee must complete with a boolean value as its result. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called as soon as any | |
* iteratee returns `true`, or after all the `iteratee` functions have finished. | |
* Result will be the first item in the array that passes the truth test | |
* (iteratee) or the value `undefined` if none passed. Invoked with | |
* (err, result). | |
*/ | |
var detectSeries = doLimit(detectLimit, 1); | |
function consoleFunc(name) { | |
return function (fn/*, ...args*/) { | |
var args = slice(arguments, 1); | |
args.push(function (err/*, ...args*/) { | |
var args = slice(arguments, 1); | |
if (typeof console === 'object') { | |
if (err) { | |
if (console.error) { | |
console.error(err); | |
} | |
} else if (console[name]) { | |
arrayEach(args, function (x) { | |
console[name](x); | |
}); | |
} | |
} | |
}); | |
wrapAsync(fn).apply(null, args); | |
}; | |
} | |
/** | |
* Logs the result of an [`async` function]{@link AsyncFunction} to the | |
* `console` using `console.dir` to display the properties of the resulting object. | |
* Only works in Node.js or in browsers that support `console.dir` and | |
* `console.error` (such as FF and Chrome). | |
* If multiple arguments are returned from the async function, | |
* `console.dir` is called on each argument in order. | |
* | |
* @name dir | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @category Util | |
* @param {AsyncFunction} function - The function you want to eventually apply | |
* all arguments to. | |
* @param {...*} arguments... - Any number of arguments to apply to the function. | |
* @example | |
* | |
* // in a module | |
* var hello = function(name, callback) { | |
* setTimeout(function() { | |
* callback(null, {hello: name}); | |
* }, 1000); | |
* }; | |
* | |
* // in the node repl | |
* node> async.dir(hello, 'world'); | |
* {hello: 'world'} | |
*/ | |
var dir = consoleFunc('dir'); | |
/** | |
* The post-check version of [`during`]{@link module:ControlFlow.during}. To reflect the difference in | |
* the order of operations, the arguments `test` and `fn` are switched. | |
* | |
* Also a version of [`doWhilst`]{@link module:ControlFlow.doWhilst} with asynchronous `test` function. | |
* @name doDuring | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.during]{@link module:ControlFlow.during} | |
* @category Control Flow | |
* @param {AsyncFunction} fn - An async function which is called each time | |
* `test` passes. Invoked with (callback). | |
* @param {AsyncFunction} test - asynchronous truth test to perform before each | |
* execution of `fn`. Invoked with (...args, callback), where `...args` are the | |
* non-error args from the previous callback of `fn`. | |
* @param {Function} [callback] - A callback which is called after the test | |
* function has failed and repeated execution of `fn` has stopped. `callback` | |
* will be passed an error if one occurred, otherwise `null`. | |
*/ | |
function doDuring(fn, test, callback) { | |
callback = onlyOnce(callback || noop); | |
var _fn = wrapAsync(fn); | |
var _test = wrapAsync(test); | |
function next(err/*, ...args*/) { | |
if (err) return callback(err); | |
var args = slice(arguments, 1); | |
args.push(check); | |
_test.apply(this, args); | |
} | |
function check(err, truth) { | |
if (err) return callback(err); | |
if (!truth) return callback(null); | |
_fn(next); | |
} | |
check(null, true); | |
} | |
/** | |
* The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in | |
* the order of operations, the arguments `test` and `iteratee` are switched. | |
* | |
* `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. | |
* | |
* @name doWhilst | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.whilst]{@link module:ControlFlow.whilst} | |
* @category Control Flow | |
* @param {AsyncFunction} iteratee - A function which is called each time `test` | |
* passes. Invoked with (callback). | |
* @param {Function} test - synchronous truth test to perform after each | |
* execution of `iteratee`. Invoked with any non-error callback results of | |
* `iteratee`. | |
* @param {Function} [callback] - A callback which is called after the test | |
* function has failed and repeated execution of `iteratee` has stopped. | |
* `callback` will be passed an error and any arguments passed to the final | |
* `iteratee`'s callback. Invoked with (err, [results]); | |
*/ | |
function doWhilst(iteratee, test, callback) { | |
callback = onlyOnce(callback || noop); | |
var _iteratee = wrapAsync(iteratee); | |
var next = function(err/*, ...args*/) { | |
if (err) return callback(err); | |
var args = slice(arguments, 1); | |
if (test.apply(this, args)) return _iteratee(next); | |
callback.apply(null, [null].concat(args)); | |
}; | |
_iteratee(next); | |
} | |
/** | |
* Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the | |
* argument ordering differs from `until`. | |
* | |
* @name doUntil | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.doWhilst]{@link module:ControlFlow.doWhilst} | |
* @category Control Flow | |
* @param {AsyncFunction} iteratee - An async function which is called each time | |
* `test` fails. Invoked with (callback). | |
* @param {Function} test - synchronous truth test to perform after each | |
* execution of `iteratee`. Invoked with any non-error callback results of | |
* `iteratee`. | |
* @param {Function} [callback] - A callback which is called after the test | |
* function has passed and repeated execution of `iteratee` has stopped. `callback` | |
* will be passed an error and any arguments passed to the final `iteratee`'s | |
* callback. Invoked with (err, [results]); | |
*/ | |
function doUntil(iteratee, test, callback) { | |
doWhilst(iteratee, function() { | |
return !test.apply(this, arguments); | |
}, callback); | |
} | |
/** | |
* Like [`whilst`]{@link module:ControlFlow.whilst}, except the `test` is an asynchronous function that | |
* is passed a callback in the form of `function (err, truth)`. If error is | |
* passed to `test` or `fn`, the main callback is immediately called with the | |
* value of the error. | |
* | |
* @name during | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.whilst]{@link module:ControlFlow.whilst} | |
* @category Control Flow | |
* @param {AsyncFunction} test - asynchronous truth test to perform before each | |
* execution of `fn`. Invoked with (callback). | |
* @param {AsyncFunction} fn - An async function which is called each time | |
* `test` passes. Invoked with (callback). | |
* @param {Function} [callback] - A callback which is called after the test | |
* function has failed and repeated execution of `fn` has stopped. `callback` | |
* will be passed an error, if one occurred, otherwise `null`. | |
* @example | |
* | |
* var count = 0; | |
* | |
* async.during( | |
* function (callback) { | |
* return callback(null, count < 5); | |
* }, | |
* function (callback) { | |
* count++; | |
* setTimeout(callback, 1000); | |
* }, | |
* function (err) { | |
* // 5 seconds have passed | |
* } | |
* ); | |
*/ | |
function during(test, fn, callback) { | |
callback = onlyOnce(callback || noop); | |
var _fn = wrapAsync(fn); | |
var _test = wrapAsync(test); | |
function next(err) { | |
if (err) return callback(err); | |
_test(check); | |
} | |
function check(err, truth) { | |
if (err) return callback(err); | |
if (!truth) return callback(null); | |
_fn(next); | |
} | |
_test(check); | |
} | |
function _withoutIndex(iteratee) { | |
return function (value, index, callback) { | |
return iteratee(value, callback); | |
}; | |
} | |
/** | |
* Applies the function `iteratee` to each item in `coll`, in parallel. | |
* The `iteratee` is called with an item from the list, and a callback for when | |
* it has finished. If the `iteratee` passes an error to its `callback`, the | |
* main `callback` (for the `each` function) is immediately called with the | |
* error. | |
* | |
* Note, that since this function applies `iteratee` to each item in parallel, | |
* there is no guarantee that the iteratee functions will complete in order. | |
* | |
* @name each | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @alias forEach | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async function to apply to | |
* each item in `coll`. Invoked with (item, callback). | |
* The array index is not passed to the iteratee. | |
* If you need the index, use `eachOf`. | |
* @param {Function} [callback] - A callback which is called when all | |
* `iteratee` functions have finished, or an error occurs. Invoked with (err). | |
* @example | |
* | |
* // assuming openFiles is an array of file names and saveFile is a function | |
* // to save the modified contents of that file: | |
* | |
* async.each(openFiles, saveFile, function(err){ | |
* // if any of the saves produced an error, err would equal that error | |
* }); | |
* | |
* // assuming openFiles is an array of file names | |
* async.each(openFiles, function(file, callback) { | |
* | |
* // Perform operation on file here. | |
* console.log('Processing file ' + file); | |
* | |
* if( file.length > 32 ) { | |
* console.log('This file name is too long'); | |
* callback('File name too long'); | |
* } else { | |
* // Do work to process file here | |
* console.log('File processed'); | |
* callback(); | |
* } | |
* }, function(err) { | |
* // if any of the file processing produced an error, err would equal that error | |
* if( err ) { | |
* // One of the iterations produced an error. | |
* // All processing will now stop. | |
* console.log('A file failed to process'); | |
* } else { | |
* console.log('All files have been processed successfully'); | |
* } | |
* }); | |
*/ | |
function eachLimit(coll, iteratee, callback) { | |
eachOf(coll, _withoutIndex(wrapAsync(iteratee)), callback); | |
} | |
/** | |
* The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. | |
* | |
* @name eachLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.each]{@link module:Collections.each} | |
* @alias forEachLimit | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - An async function to apply to each item in | |
* `coll`. | |
* The array index is not passed to the iteratee. | |
* If you need the index, use `eachOfLimit`. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called when all | |
* `iteratee` functions have finished, or an error occurs. Invoked with (err). | |
*/ | |
function eachLimit$1(coll, limit, iteratee, callback) { | |
_eachOfLimit(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback); | |
} | |
/** | |
* The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. | |
* | |
* @name eachSeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.each]{@link module:Collections.each} | |
* @alias forEachSeries | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async function to apply to each | |
* item in `coll`. | |
* The array index is not passed to the iteratee. | |
* If you need the index, use `eachOfSeries`. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called when all | |
* `iteratee` functions have finished, or an error occurs. Invoked with (err). | |
*/ | |
var eachSeries = doLimit(eachLimit$1, 1); | |
/** | |
* Wrap an async function and ensure it calls its callback on a later tick of | |
* the event loop. If the function already calls its callback on a next tick, | |
* no extra deferral is added. This is useful for preventing stack overflows | |
* (`RangeError: Maximum call stack size exceeded`) and generally keeping | |
* [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) | |
* contained. ES2017 `async` functions are returned as-is -- they are immune | |
* to Zalgo's corrupting influences, as they always resolve on a later tick. | |
* | |
* @name ensureAsync | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @category Util | |
* @param {AsyncFunction} fn - an async function, one that expects a node-style | |
* callback as its last argument. | |
* @returns {AsyncFunction} Returns a wrapped function with the exact same call | |
* signature as the function passed in. | |
* @example | |
* | |
* function sometimesAsync(arg, callback) { | |
* if (cache[arg]) { | |
* return callback(null, cache[arg]); // this would be synchronous!! | |
* } else { | |
* doSomeIO(arg, callback); // this IO would be asynchronous | |
* } | |
* } | |
* | |
* // this has a risk of stack overflows if many results are cached in a row | |
* async.mapSeries(args, sometimesAsync, done); | |
* | |
* // this will defer sometimesAsync's callback if necessary, | |
* // preventing stack overflows | |
* async.mapSeries(args, async.ensureAsync(sometimesAsync), done); | |
*/ | |
function ensureAsync(fn) { | |
if (isAsync(fn)) return fn; | |
return initialParams(function (args, callback) { | |
var sync = true; | |
args.push(function () { | |
var innerArgs = arguments; | |
if (sync) { | |
setImmediate$1(function () { | |
callback.apply(null, innerArgs); | |
}); | |
} else { | |
callback.apply(null, innerArgs); | |
} | |
}); | |
fn.apply(this, args); | |
sync = false; | |
}); | |
} | |
function notId(v) { | |
return !v; | |
} | |
/** | |
* Returns `true` if every element in `coll` satisfies an async test. If any | |
* iteratee call returns `false`, the main `callback` is immediately called. | |
* | |
* @name every | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @alias all | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async truth test to apply to each item | |
* in the collection in parallel. | |
* The iteratee must complete with a boolean result value. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Result will be either `true` or `false` | |
* depending on the values of the async tests. Invoked with (err, result). | |
* @example | |
* | |
* async.every(['file1','file2','file3'], function(filePath, callback) { | |
* fs.access(filePath, function(err) { | |
* callback(null, !err) | |
* }); | |
* }, function(err, result) { | |
* // if result is true then every file exists | |
* }); | |
*/ | |
var every = doParallel(_createTester(notId, notId)); | |
/** | |
* The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. | |
* | |
* @name everyLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.every]{@link module:Collections.every} | |
* @alias allLimit | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - An async truth test to apply to each item | |
* in the collection in parallel. | |
* The iteratee must complete with a boolean result value. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Result will be either `true` or `false` | |
* depending on the values of the async tests. Invoked with (err, result). | |
*/ | |
var everyLimit = doParallelLimit(_createTester(notId, notId)); | |
/** | |
* The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. | |
* | |
* @name everySeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.every]{@link module:Collections.every} | |
* @alias allSeries | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async truth test to apply to each item | |
* in the collection in series. | |
* The iteratee must complete with a boolean result value. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Result will be either `true` or `false` | |
* depending on the values of the async tests. Invoked with (err, result). | |
*/ | |
var everySeries = doLimit(everyLimit, 1); | |
/** | |
* The base implementation of `_.property` without support for deep paths. | |
* | |
* @private | |
* @param {string} key The key of the property to get. | |
* @returns {Function} Returns the new accessor function. | |
*/ | |
function baseProperty(key) { | |
return function(object) { | |
return object == null ? undefined : object[key]; | |
}; | |
} | |
function filterArray(eachfn, arr, iteratee, callback) { | |
var truthValues = new Array(arr.length); | |
eachfn(arr, function (x, index, callback) { | |
iteratee(x, function (err, v) { | |
truthValues[index] = !!v; | |
callback(err); | |
}); | |
}, function (err) { | |
if (err) return callback(err); | |
var results = []; | |
for (var i = 0; i < arr.length; i++) { | |
if (truthValues[i]) results.push(arr[i]); | |
} | |
callback(null, results); | |
}); | |
} | |
function filterGeneric(eachfn, coll, iteratee, callback) { | |
var results = []; | |
eachfn(coll, function (x, index, callback) { | |
iteratee(x, function (err, v) { | |
if (err) { | |
callback(err); | |
} else { | |
if (v) { | |
results.push({index: index, value: x}); | |
} | |
callback(); | |
} | |
}); | |
}, function (err) { | |
if (err) { | |
callback(err); | |
} else { | |
callback(null, arrayMap(results.sort(function (a, b) { | |
return a.index - b.index; | |
}), baseProperty('value'))); | |
} | |
}); | |
} | |
function _filter(eachfn, coll, iteratee, callback) { | |
var filter = isArrayLike(coll) ? filterArray : filterGeneric; | |
filter(eachfn, coll, wrapAsync(iteratee), callback || noop); | |
} | |
/** | |
* Returns a new array of all the values in `coll` which pass an async truth | |
* test. This operation is performed in parallel, but the results array will be | |
* in the same order as the original. | |
* | |
* @name filter | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @alias select | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {Function} iteratee - A truth test to apply to each item in `coll`. | |
* The `iteratee` is passed a `callback(err, truthValue)`, which must be called | |
* with a boolean argument once it has completed. Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Invoked with (err, results). | |
* @example | |
* | |
* async.filter(['file1','file2','file3'], function(filePath, callback) { | |
* fs.access(filePath, function(err) { | |
* callback(null, !err) | |
* }); | |
* }, function(err, results) { | |
* // results now equals an array of the existing files | |
* }); | |
*/ | |
var filter = doParallel(_filter); | |
/** | |
* The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a | |
* time. | |
* | |
* @name filterLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.filter]{@link module:Collections.filter} | |
* @alias selectLimit | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {Function} iteratee - A truth test to apply to each item in `coll`. | |
* The `iteratee` is passed a `callback(err, truthValue)`, which must be called | |
* with a boolean argument once it has completed. Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Invoked with (err, results). | |
*/ | |
var filterLimit = doParallelLimit(_filter); | |
/** | |
* The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. | |
* | |
* @name filterSeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.filter]{@link module:Collections.filter} | |
* @alias selectSeries | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {Function} iteratee - A truth test to apply to each item in `coll`. | |
* The `iteratee` is passed a `callback(err, truthValue)`, which must be called | |
* with a boolean argument once it has completed. Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Invoked with (err, results) | |
*/ | |
var filterSeries = doLimit(filterLimit, 1); | |
/** | |
* Calls the asynchronous function `fn` with a callback parameter that allows it | |
* to call itself again, in series, indefinitely. | |
* If an error is passed to the callback then `errback` is called with the | |
* error, and execution stops, otherwise it will never be called. | |
* | |
* @name forever | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {AsyncFunction} fn - an async function to call repeatedly. | |
* Invoked with (next). | |
* @param {Function} [errback] - when `fn` passes an error to it's callback, | |
* this function will be called, and execution stops. Invoked with (err). | |
* @example | |
* | |
* async.forever( | |
* function(next) { | |
* // next is suitable for passing to things that need a callback(err [, whatever]); | |
* // it will result in this function being called again. | |
* }, | |
* function(err) { | |
* // if next is called with a value in its first parameter, it will appear | |
* // in here as 'err', and execution will stop. | |
* } | |
* ); | |
*/ | |
function forever(fn, errback) { | |
var done = onlyOnce(errback || noop); | |
var task = wrapAsync(ensureAsync(fn)); | |
function next(err) { | |
if (err) return done(err); | |
task(next); | |
} | |
next(); | |
} | |
/** | |
* The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. | |
* | |
* @name groupByLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.groupBy]{@link module:Collections.groupBy} | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - An async function to apply to each item in | |
* `coll`. | |
* The iteratee should complete with a `key` to group the value under. | |
* Invoked with (value, callback). | |
* @param {Function} [callback] - A callback which is called when all `iteratee` | |
* functions have finished, or an error occurs. Result is an `Object` whoses | |
* properties are arrays of values which returned the corresponding key. | |
*/ | |
var groupByLimit = function(coll, limit, iteratee, callback) { | |
callback = callback || noop; | |
var _iteratee = wrapAsync(iteratee); | |
mapLimit(coll, limit, function(val, callback) { | |
_iteratee(val, function(err, key) { | |
if (err) return callback(err); | |
return callback(null, {key: key, val: val}); | |
}); | |
}, function(err, mapResults) { | |
var result = {}; | |
// from MDN, handle object having an `hasOwnProperty` prop | |
var hasOwnProperty = Object.prototype.hasOwnProperty; | |
for (var i = 0; i < mapResults.length; i++) { | |
if (mapResults[i]) { | |
var key = mapResults[i].key; | |
var val = mapResults[i].val; | |
if (hasOwnProperty.call(result, key)) { | |
result[key].push(val); | |
} else { | |
result[key] = [val]; | |
} | |
} | |
} | |
return callback(err, result); | |
}); | |
}; | |
/** | |
* Returns a new object, where each value corresponds to an array of items, from | |
* `coll`, that returned the corresponding key. That is, the keys of the object | |
* correspond to the values passed to the `iteratee` callback. | |
* | |
* Note: Since this function applies the `iteratee` to each item in parallel, | |
* there is no guarantee that the `iteratee` functions will complete in order. | |
* However, the values for each key in the `result` will be in the same order as | |
* the original `coll`. For Objects, the values will roughly be in the order of | |
* the original Objects' keys (but this can vary across JavaScript engines). | |
* | |
* @name groupBy | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async function to apply to each item in | |
* `coll`. | |
* The iteratee should complete with a `key` to group the value under. | |
* Invoked with (value, callback). | |
* @param {Function} [callback] - A callback which is called when all `iteratee` | |
* functions have finished, or an error occurs. Result is an `Object` whoses | |
* properties are arrays of values which returned the corresponding key. | |
* @example | |
* | |
* async.groupBy(['userId1', 'userId2', 'userId3'], function(userId, callback) { | |
* db.findById(userId, function(err, user) { | |
* if (err) return callback(err); | |
* return callback(null, user.age); | |
* }); | |
* }, function(err, result) { | |
* // result is object containing the userIds grouped by age | |
* // e.g. { 30: ['userId1', 'userId3'], 42: ['userId2']}; | |
* }); | |
*/ | |
var groupBy = doLimit(groupByLimit, Infinity); | |
/** | |
* The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. | |
* | |
* @name groupBySeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.groupBy]{@link module:Collections.groupBy} | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - An async function to apply to each item in | |
* `coll`. | |
* The iteratee should complete with a `key` to group the value under. | |
* Invoked with (value, callback). | |
* @param {Function} [callback] - A callback which is called when all `iteratee` | |
* functions have finished, or an error occurs. Result is an `Object` whoses | |
* properties are arrays of values which returned the corresponding key. | |
*/ | |
var groupBySeries = doLimit(groupByLimit, 1); | |
/** | |
* Logs the result of an `async` function to the `console`. Only works in | |
* Node.js or in browsers that support `console.log` and `console.error` (such | |
* as FF and Chrome). If multiple arguments are returned from the async | |
* function, `console.log` is called on each argument in order. | |
* | |
* @name log | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @category Util | |
* @param {AsyncFunction} function - The function you want to eventually apply | |
* all arguments to. | |
* @param {...*} arguments... - Any number of arguments to apply to the function. | |
* @example | |
* | |
* // in a module | |
* var hello = function(name, callback) { | |
* setTimeout(function() { | |
* callback(null, 'hello ' + name); | |
* }, 1000); | |
* }; | |
* | |
* // in the node repl | |
* node> async.log(hello, 'world'); | |
* 'hello world' | |
*/ | |
var log = consoleFunc('log'); | |
/** | |
* The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a | |
* time. | |
* | |
* @name mapValuesLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.mapValues]{@link module:Collections.mapValues} | |
* @category Collection | |
* @param {Object} obj - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - A function to apply to each value and key | |
* in `coll`. | |
* The iteratee should complete with the transformed value as its result. | |
* Invoked with (value, key, callback). | |
* @param {Function} [callback] - A callback which is called when all `iteratee` | |
* functions have finished, or an error occurs. `result` is a new object consisting | |
* of each key from `obj`, with each transformed value on the right-hand side. | |
* Invoked with (err, result). | |
*/ | |
function mapValuesLimit(obj, limit, iteratee, callback) { | |
callback = once(callback || noop); | |
var newObj = {}; | |
var _iteratee = wrapAsync(iteratee); | |
eachOfLimit(obj, limit, function(val, key, next) { | |
_iteratee(val, key, function (err, result) { | |
if (err) return next(err); | |
newObj[key] = result; | |
next(); | |
}); | |
}, function (err) { | |
callback(err, newObj); | |
}); | |
} | |
/** | |
* A relative of [`map`]{@link module:Collections.map}, designed for use with objects. | |
* | |
* Produces a new Object by mapping each value of `obj` through the `iteratee` | |
* function. The `iteratee` is called each `value` and `key` from `obj` and a | |
* callback for when it has finished processing. Each of these callbacks takes | |
* two arguments: an `error`, and the transformed item from `obj`. If `iteratee` | |
* passes an error to its callback, the main `callback` (for the `mapValues` | |
* function) is immediately called with the error. | |
* | |
* Note, the order of the keys in the result is not guaranteed. The keys will | |
* be roughly in the order they complete, (but this is very engine-specific) | |
* | |
* @name mapValues | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @category Collection | |
* @param {Object} obj - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - A function to apply to each value and key | |
* in `coll`. | |
* The iteratee should complete with the transformed value as its result. | |
* Invoked with (value, key, callback). | |
* @param {Function} [callback] - A callback which is called when all `iteratee` | |
* functions have finished, or an error occurs. `result` is a new object consisting | |
* of each key from `obj`, with each transformed value on the right-hand side. | |
* Invoked with (err, result). | |
* @example | |
* | |
* async.mapValues({ | |
* f1: 'file1', | |
* f2: 'file2', | |
* f3: 'file3' | |
* }, function (file, key, callback) { | |
* fs.stat(file, callback); | |
* }, function(err, result) { | |
* // result is now a map of stats for each file, e.g. | |
* // { | |
* // f1: [stats for file1], | |
* // f2: [stats for file2], | |
* // f3: [stats for file3] | |
* // } | |
* }); | |
*/ | |
var mapValues = doLimit(mapValuesLimit, Infinity); | |
/** | |
* The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time. | |
* | |
* @name mapValuesSeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.mapValues]{@link module:Collections.mapValues} | |
* @category Collection | |
* @param {Object} obj - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - A function to apply to each value and key | |
* in `coll`. | |
* The iteratee should complete with the transformed value as its result. | |
* Invoked with (value, key, callback). | |
* @param {Function} [callback] - A callback which is called when all `iteratee` | |
* functions have finished, or an error occurs. `result` is a new object consisting | |
* of each key from `obj`, with each transformed value on the right-hand side. | |
* Invoked with (err, result). | |
*/ | |
var mapValuesSeries = doLimit(mapValuesLimit, 1); | |
function has(obj, key) { | |
return key in obj; | |
} | |
/** | |
* Caches the results of an async function. When creating a hash to store | |
* function results against, the callback is omitted from the hash and an | |
* optional hash function can be used. | |
* | |
* If no hash function is specified, the first argument is used as a hash key, | |
* which may work reasonably if it is a string or a data type that converts to a | |
* distinct string. Note that objects and arrays will not behave reasonably. | |
* Neither will cases where the other arguments are significant. In such cases, | |
* specify your own hash function. | |
* | |
* The cache of results is exposed as the `memo` property of the function | |
* returned by `memoize`. | |
* | |
* @name memoize | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @category Util | |
* @param {AsyncFunction} fn - The async function to proxy and cache results from. | |
* @param {Function} hasher - An optional function for generating a custom hash | |
* for storing results. It has all the arguments applied to it apart from the | |
* callback, and must be synchronous. | |
* @returns {AsyncFunction} a memoized version of `fn` | |
* @example | |
* | |
* var slow_fn = function(name, callback) { | |
* // do something | |
* callback(null, result); | |
* }; | |
* var fn = async.memoize(slow_fn); | |
* | |
* // fn can now be used as if it were slow_fn | |
* fn('some name', function() { | |
* // callback | |
* }); | |
*/ | |
function memoize(fn, hasher) { | |
var memo = Object.create(null); | |
var queues = Object.create(null); | |
hasher = hasher || identity; | |
var _fn = wrapAsync(fn); | |
var memoized = initialParams(function memoized(args, callback) { | |
var key = hasher.apply(null, args); | |
if (has(memo, key)) { | |
setImmediate$1(function() { | |
callback.apply(null, memo[key]); | |
}); | |
} else if (has(queues, key)) { | |
queues[key].push(callback); | |
} else { | |
queues[key] = [callback]; | |
_fn.apply(null, args.concat(function(/*args*/) { | |
var args = slice(arguments); | |
memo[key] = args; | |
var q = queues[key]; | |
delete queues[key]; | |
for (var i = 0, l = q.length; i < l; i++) { | |
q[i].apply(null, args); | |
} | |
})); | |
} | |
}); | |
memoized.memo = memo; | |
memoized.unmemoized = fn; | |
return memoized; | |
} | |
/** | |
* Calls `callback` on a later loop around the event loop. In Node.js this just | |
* calls `process.nextTicl`. In the browser it will use `setImmediate` if | |
* available, otherwise `setTimeout(callback, 0)`, which means other higher | |
* priority events may precede the execution of `callback`. | |
* | |
* This is used internally for browser-compatibility purposes. | |
* | |
* @name nextTick | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @see [async.setImmediate]{@link module:Utils.setImmediate} | |
* @category Util | |
* @param {Function} callback - The function to call on a later loop around | |
* the event loop. Invoked with (args...). | |
* @param {...*} args... - any number of additional arguments to pass to the | |
* callback on the next tick. | |
* @example | |
* | |
* var call_order = []; | |
* async.nextTick(function() { | |
* call_order.push('two'); | |
* // call_order now equals ['one','two'] | |
* }); | |
* call_order.push('one'); | |
* | |
* async.setImmediate(function (a, b, c) { | |
* // a, b, and c equal 1, 2, and 3 | |
* }, 1, 2, 3); | |
*/ | |
var _defer$1; | |
if (hasNextTick) { | |
_defer$1 = process.nextTick; | |
} else if (hasSetImmediate) { | |
_defer$1 = setImmediate; | |
} else { | |
_defer$1 = fallback; | |
} | |
var nextTick = wrap(_defer$1); | |
function _parallel(eachfn, tasks, callback) { | |
callback = callback || noop; | |
var results = isArrayLike(tasks) ? [] : {}; | |
eachfn(tasks, function (task, key, callback) { | |
wrapAsync(task)(function (err, result) { | |
if (arguments.length > 2) { | |
result = slice(arguments, 1); | |
} | |
results[key] = result; | |
callback(err); | |
}); | |
}, function (err) { | |
callback(err, results); | |
}); | |
} | |
/** | |
* Run the `tasks` collection of functions in parallel, without waiting until | |
* the previous function has completed. If any of the functions pass an error to | |
* its callback, the main `callback` is immediately called with the value of the | |
* error. Once the `tasks` have completed, the results are passed to the final | |
* `callback` as an array. | |
* | |
* **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about | |
* parallel execution of code. If your tasks do not use any timers or perform | |
* any I/O, they will actually be executed in series. Any synchronous setup | |
* sections for each task will happen one after the other. JavaScript remains | |
* single-threaded. | |
* | |
* **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the | |
* execution of other tasks when a task fails. | |
* | |
* It is also possible to use an object instead of an array. Each property will | |
* be run as a function and the results will be passed to the final `callback` | |
* as an object instead of an array. This can be a more readable way of handling | |
* results from {@link async.parallel}. | |
* | |
* @name parallel | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {Array|Iterable|Object} tasks - A collection of | |
* [async functions]{@link AsyncFunction} to run. | |
* Each async function can complete with any number of optional `result` values. | |
* @param {Function} [callback] - An optional callback to run once all the | |
* functions have completed successfully. This function gets a results array | |
* (or object) containing all the result arguments passed to the task callbacks. | |
* Invoked with (err, results). | |
* | |
* @example | |
* async.parallel([ | |
* function(callback) { | |
* setTimeout(function() { | |
* callback(null, 'one'); | |
* }, 200); | |
* }, | |
* function(callback) { | |
* setTimeout(function() { | |
* callback(null, 'two'); | |
* }, 100); | |
* } | |
* ], | |
* // optional callback | |
* function(err, results) { | |
* // the results array will equal ['one','two'] even though | |
* // the second function had a shorter timeout. | |
* }); | |
* | |
* // an example using an object instead of an array | |
* async.parallel({ | |
* one: function(callback) { | |
* setTimeout(function() { | |
* callback(null, 1); | |
* }, 200); | |
* }, | |
* two: function(callback) { | |
* setTimeout(function() { | |
* callback(null, 2); | |
* }, 100); | |
* } | |
* }, function(err, results) { | |
* // results is now equals to: {one: 1, two: 2} | |
* }); | |
*/ | |
function parallelLimit(tasks, callback) { | |
_parallel(eachOf, tasks, callback); | |
} | |
/** | |
* The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a | |
* time. | |
* | |
* @name parallelLimit | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.parallel]{@link module:ControlFlow.parallel} | |
* @category Control Flow | |
* @param {Array|Iterable|Object} tasks - A collection of | |
* [async functions]{@link AsyncFunction} to run. | |
* Each async function can complete with any number of optional `result` values. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {Function} [callback] - An optional callback to run once all the | |
* functions have completed successfully. This function gets a results array | |
* (or object) containing all the result arguments passed to the task callbacks. | |
* Invoked with (err, results). | |
*/ | |
function parallelLimit$1(tasks, limit, callback) { | |
_parallel(_eachOfLimit(limit), tasks, callback); | |
} | |
/** | |
* A queue of tasks for the worker function to complete. | |
* @typedef {Object} QueueObject | |
* @memberOf module:ControlFlow | |
* @property {Function} length - a function returning the number of items | |
* waiting to be processed. Invoke with `queue.length()`. | |
* @property {boolean} started - a boolean indicating whether or not any | |
* items have been pushed and processed by the queue. | |
* @property {Function} running - a function returning the number of items | |
* currently being processed. Invoke with `queue.running()`. | |
* @property {Function} workersList - a function returning the array of items | |
* currently being processed. Invoke with `queue.workersList()`. | |
* @property {Function} idle - a function returning false if there are items | |
* waiting or being processed, or true if not. Invoke with `queue.idle()`. | |
* @property {number} concurrency - an integer for determining how many `worker` | |
* functions should be run in parallel. This property can be changed after a | |
* `queue` is created to alter the concurrency on-the-fly. | |
* @property {Function} push - add a new task to the `queue`. Calls `callback` | |
* once the `worker` has finished processing the task. Instead of a single task, | |
* a `tasks` array can be submitted. The respective callback is used for every | |
* task in the list. Invoke with `queue.push(task, [callback])`, | |
* @property {Function} unshift - add a new task to the front of the `queue`. | |
* Invoke with `queue.unshift(task, [callback])`. | |
* @property {Function} remove - remove items from the queue that match a test | |
* function. The test function will be passed an object with a `data` property, | |
* and a `priority` property, if this is a | |
* [priorityQueue]{@link module:ControlFlow.priorityQueue} object. | |
* Invoked with `queue.remove(testFn)`, where `testFn` is of the form | |
* `function ({data, priority}) {}` and returns a Boolean. | |
* @property {Function} saturated - a callback that is called when the number of | |
* running workers hits the `concurrency` limit, and further tasks will be | |
* queued. | |
* @property {Function} unsaturated - a callback that is called when the number | |
* of running workers is less than the `concurrency` & `buffer` limits, and | |
* further tasks will not be queued. | |
* @property {number} buffer - A minimum threshold buffer in order to say that | |
* the `queue` is `unsaturated`. | |
* @property {Function} empty - a callback that is called when the last item | |
* from the `queue` is given to a `worker`. | |
* @property {Function} drain - a callback that is called when the last item | |
* from the `queue` has returned from the `worker`. | |
* @property {Function} error - a callback that is called when a task errors. | |
* Has the signature `function(error, task)`. | |
* @property {boolean} paused - a boolean for determining whether the queue is | |
* in a paused state. | |
* @property {Function} pause - a function that pauses the processing of tasks | |
* until `resume()` is called. Invoke with `queue.pause()`. | |
* @property {Function} resume - a function that resumes the processing of | |
* queued tasks when the queue is paused. Invoke with `queue.resume()`. | |
* @property {Function} kill - a function that removes the `drain` callback and | |
* empties remaining tasks from the queue forcing it to go idle. No more tasks | |
* should be pushed to the queue after calling this function. Invoke with `queue.kill()`. | |
*/ | |
/** | |
* Creates a `queue` object with the specified `concurrency`. Tasks added to the | |
* `queue` are processed in parallel (up to the `concurrency` limit). If all | |
* `worker`s are in progress, the task is queued until one becomes available. | |
* Once a `worker` completes a `task`, that `task`'s callback is called. | |
* | |
* @name queue | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {AsyncFunction} worker - An async function for processing a queued task. | |
* If you want to handle errors from an individual task, pass a callback to | |
* `q.push()`. Invoked with (task, callback). | |
* @param {number} [concurrency=1] - An `integer` for determining how many | |
* `worker` functions should be run in parallel. If omitted, the concurrency | |
* defaults to `1`. If the concurrency is `0`, an error is thrown. | |
* @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can | |
* attached as certain properties to listen for specific events during the | |
* lifecycle of the queue. | |
* @example | |
* | |
* // create a queue object with concurrency 2 | |
* var q = async.queue(function(task, callback) { | |
* console.log('hello ' + task.name); | |
* callback(); | |
* }, 2); | |
* | |
* // assign a callback | |
* q.drain = function() { | |
* console.log('all items have been processed'); | |
* }; | |
* | |
* // add some items to the queue | |
* q.push({name: 'foo'}, function(err) { | |
* console.log('finished processing foo'); | |
* }); | |
* q.push({name: 'bar'}, function (err) { | |
* console.log('finished processing bar'); | |
* }); | |
* | |
* // add some items to the queue (batch-wise) | |
* q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) { | |
* console.log('finished processing item'); | |
* }); | |
* | |
* // add some items to the front of the queue | |
* q.unshift({name: 'bar'}, function (err) { | |
* console.log('finished processing bar'); | |
* }); | |
*/ | |
var queue$1 = function (worker, concurrency) { | |
var _worker = wrapAsync(worker); | |
return queue(function (items, cb) { | |
_worker(items[0], cb); | |
}, concurrency, 1); | |
}; | |
/** | |
* The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and | |
* completed in ascending priority order. | |
* | |
* @name priorityQueue | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.queue]{@link module:ControlFlow.queue} | |
* @category Control Flow | |
* @param {AsyncFunction} worker - An async function for processing a queued task. | |
* If you want to handle errors from an individual task, pass a callback to | |
* `q.push()`. | |
* Invoked with (task, callback). | |
* @param {number} concurrency - An `integer` for determining how many `worker` | |
* functions should be run in parallel. If omitted, the concurrency defaults to | |
* `1`. If the concurrency is `0`, an error is thrown. | |
* @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are two | |
* differences between `queue` and `priorityQueue` objects: | |
* * `push(task, priority, [callback])` - `priority` should be a number. If an | |
* array of `tasks` is given, all tasks will be assigned the same priority. | |
* * The `unshift` method was removed. | |
*/ | |
var priorityQueue = function(worker, concurrency) { | |
// Start with a normal queue | |
var q = queue$1(worker, concurrency); | |
// Override push to accept second parameter representing priority | |
q.push = function(data, priority, callback) { | |
if (callback == null) callback = noop; | |
if (typeof callback !== 'function') { | |
throw new Error('task callback must be a function'); | |
} | |
q.started = true; | |
if (!isArray(data)) { | |
data = [data]; | |
} | |
if (data.length === 0) { | |
// call drain immediately if there are no tasks | |
return setImmediate$1(function() { | |
q.drain(); | |
}); | |
} | |
priority = priority || 0; | |
var nextNode = q._tasks.head; | |
while (nextNode && priority >= nextNode.priority) { | |
nextNode = nextNode.next; | |
} | |
for (var i = 0, l = data.length; i < l; i++) { | |
var item = { | |
data: data[i], | |
priority: priority, | |
callback: callback | |
}; | |
if (nextNode) { | |
q._tasks.insertBefore(nextNode, item); | |
} else { | |
q._tasks.push(item); | |
} | |
} | |
setImmediate$1(q.process); | |
}; | |
// Remove unshift function | |
delete q.unshift; | |
return q; | |
}; | |
/** | |
* Runs the `tasks` array of functions in parallel, without waiting until the | |
* previous function has completed. Once any of the `tasks` complete or pass an | |
* error to its callback, the main `callback` is immediately called. It's | |
* equivalent to `Promise.race()`. | |
* | |
* @name race | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} | |
* to run. Each function can complete with an optional `result` value. | |
* @param {Function} callback - A callback to run once any of the functions have | |
* completed. This function gets an error or result from the first function that | |
* completed. Invoked with (err, result). | |
* @returns undefined | |
* @example | |
* | |
* async.race([ | |
* function(callback) { | |
* setTimeout(function() { | |
* callback(null, 'one'); | |
* }, 200); | |
* }, | |
* function(callback) { | |
* setTimeout(function() { | |
* callback(null, 'two'); | |
* }, 100); | |
* } | |
* ], | |
* // main callback | |
* function(err, result) { | |
* // the result will be equal to 'two' as it finishes earlier | |
* }); | |
*/ | |
function race(tasks, callback) { | |
callback = once(callback || noop); | |
if (!isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); | |
if (!tasks.length) return callback(); | |
for (var i = 0, l = tasks.length; i < l; i++) { | |
wrapAsync(tasks[i])(callback); | |
} | |
} | |
/** | |
* Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. | |
* | |
* @name reduceRight | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.reduce]{@link module:Collections.reduce} | |
* @alias foldr | |
* @category Collection | |
* @param {Array} array - A collection to iterate over. | |
* @param {*} memo - The initial state of the reduction. | |
* @param {AsyncFunction} iteratee - A function applied to each item in the | |
* array to produce the next step in the reduction. | |
* The `iteratee` should complete with the next state of the reduction. | |
* If the iteratee complete with an error, the reduction is stopped and the | |
* main `callback` is immediately called with the error. | |
* Invoked with (memo, item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Result is the reduced value. Invoked with | |
* (err, result). | |
*/ | |
function reduceRight (array, memo, iteratee, callback) { | |
var reversed = slice(array).reverse(); | |
reduce(reversed, memo, iteratee, callback); | |
} | |
/** | |
* Wraps the async function in another function that always completes with a | |
* result object, even when it errors. | |
* | |
* The result object has either the property `error` or `value`. | |
* | |
* @name reflect | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @category Util | |
* @param {AsyncFunction} fn - The async function you want to wrap | |
* @returns {Function} - A function that always passes null to it's callback as | |
* the error. The second argument to the callback will be an `object` with | |
* either an `error` or a `value` property. | |
* @example | |
* | |
* async.parallel([ | |
* async.reflect(function(callback) { | |
* // do some stuff ... | |
* callback(null, 'one'); | |
* }), | |
* async.reflect(function(callback) { | |
* // do some more stuff but error ... | |
* callback('bad stuff happened'); | |
* }), | |
* async.reflect(function(callback) { | |
* // do some more stuff ... | |
* callback(null, 'two'); | |
* }) | |
* ], | |
* // optional callback | |
* function(err, results) { | |
* // values | |
* // results[0].value = 'one' | |
* // results[1].error = 'bad stuff happened' | |
* // results[2].value = 'two' | |
* }); | |
*/ | |
function reflect(fn) { | |
var _fn = wrapAsync(fn); | |
return initialParams(function reflectOn(args, reflectCallback) { | |
args.push(function callback(error, cbArg) { | |
if (error) { | |
reflectCallback(null, { error: error }); | |
} else { | |
var value; | |
if (arguments.length <= 2) { | |
value = cbArg; | |
} else { | |
value = slice(arguments, 1); | |
} | |
reflectCallback(null, { value: value }); | |
} | |
}); | |
return _fn.apply(this, args); | |
}); | |
} | |
/** | |
* A helper function that wraps an array or an object of functions with `reflect`. | |
* | |
* @name reflectAll | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @see [async.reflect]{@link module:Utils.reflect} | |
* @category Util | |
* @param {Array|Object|Iterable} tasks - The collection of | |
* [async functions]{@link AsyncFunction} to wrap in `async.reflect`. | |
* @returns {Array} Returns an array of async functions, each wrapped in | |
* `async.reflect` | |
* @example | |
* | |
* let tasks = [ | |
* function(callback) { | |
* setTimeout(function() { | |
* callback(null, 'one'); | |
* }, 200); | |
* }, | |
* function(callback) { | |
* // do some more stuff but error ... | |
* callback(new Error('bad stuff happened')); | |
* }, | |
* function(callback) { | |
* setTimeout(function() { | |
* callback(null, 'two'); | |
* }, 100); | |
* } | |
* ]; | |
* | |
* async.parallel(async.reflectAll(tasks), | |
* // optional callback | |
* function(err, results) { | |
* // values | |
* // results[0].value = 'one' | |
* // results[1].error = Error('bad stuff happened') | |
* // results[2].value = 'two' | |
* }); | |
* | |
* // an example using an object instead of an array | |
* let tasks = { | |
* one: function(callback) { | |
* setTimeout(function() { | |
* callback(null, 'one'); | |
* }, 200); | |
* }, | |
* two: function(callback) { | |
* callback('two'); | |
* }, | |
* three: function(callback) { | |
* setTimeout(function() { | |
* callback(null, 'three'); | |
* }, 100); | |
* } | |
* }; | |
* | |
* async.parallel(async.reflectAll(tasks), | |
* // optional callback | |
* function(err, results) { | |
* // values | |
* // results.one.value = 'one' | |
* // results.two.error = 'two' | |
* // results.three.value = 'three' | |
* }); | |
*/ | |
function reflectAll(tasks) { | |
var results; | |
if (isArray(tasks)) { | |
results = arrayMap(tasks, reflect); | |
} else { | |
results = {}; | |
baseForOwn(tasks, function(task, key) { | |
results[key] = reflect.call(this, task); | |
}); | |
} | |
return results; | |
} | |
function reject$1(eachfn, arr, iteratee, callback) { | |
_filter(eachfn, arr, function(value, cb) { | |
iteratee(value, function(err, v) { | |
cb(err, !v); | |
}); | |
}, callback); | |
} | |
/** | |
* The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test. | |
* | |
* @name reject | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.filter]{@link module:Collections.filter} | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {Function} iteratee - An async truth test to apply to each item in | |
* `coll`. | |
* The should complete with a boolean value as its `result`. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Invoked with (err, results). | |
* @example | |
* | |
* async.reject(['file1','file2','file3'], function(filePath, callback) { | |
* fs.access(filePath, function(err) { | |
* callback(null, !err) | |
* }); | |
* }, function(err, results) { | |
* // results now equals an array of missing files | |
* createFiles(results); | |
* }); | |
*/ | |
var reject = doParallel(reject$1); | |
/** | |
* The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a | |
* time. | |
* | |
* @name rejectLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.reject]{@link module:Collections.reject} | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {Function} iteratee - An async truth test to apply to each item in | |
* `coll`. | |
* The should complete with a boolean value as its `result`. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Invoked with (err, results). | |
*/ | |
var rejectLimit = doParallelLimit(reject$1); | |
/** | |
* The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time. | |
* | |
* @name rejectSeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.reject]{@link module:Collections.reject} | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {Function} iteratee - An async truth test to apply to each item in | |
* `coll`. | |
* The should complete with a boolean value as its `result`. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Invoked with (err, results). | |
*/ | |
var rejectSeries = doLimit(rejectLimit, 1); | |
/** | |
* Creates a function that returns `value`. | |
* | |
* @static | |
* @memberOf _ | |
* @since 2.4.0 | |
* @category Util | |
* @param {*} value The value to return from the new function. | |
* @returns {Function} Returns the new constant function. | |
* @example | |
* | |
* var objects = _.times(2, _.constant({ 'a': 1 })); | |
* | |
* console.log(objects); | |
* // => [{ 'a': 1 }, { 'a': 1 }] | |
* | |
* console.log(objects[0] === objects[1]); | |
* // => true | |
*/ | |
function constant$1(value) { | |
return function() { | |
return value; | |
}; | |
} | |
/** | |
* Attempts to get a successful response from `task` no more than `times` times | |
* before returning an error. If the task is successful, the `callback` will be | |
* passed the result of the successful task. If all attempts fail, the callback | |
* will be passed the error and result (if any) of the final attempt. | |
* | |
* @name retry | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @see [async.retryable]{@link module:ControlFlow.retryable} | |
* @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an | |
* object with `times` and `interval` or a number. | |
* * `times` - The number of attempts to make before giving up. The default | |
* is `5`. | |
* * `interval` - The time to wait between retries, in milliseconds. The | |
* default is `0`. The interval may also be specified as a function of the | |
* retry count (see example). | |
* * `errorFilter` - An optional synchronous function that is invoked on | |
* erroneous result. If it returns `true` the retry attempts will continue; | |
* if the function returns `false` the retry flow is aborted with the current | |
* attempt's error and result being returned to the final callback. | |
* Invoked with (err). | |
* * If `opts` is a number, the number specifies the number of times to retry, | |
* with the default interval of `0`. | |
* @param {AsyncFunction} task - An async function to retry. | |
* Invoked with (callback). | |
* @param {Function} [callback] - An optional callback which is called when the | |
* task has succeeded, or after the final failed attempt. It receives the `err` | |
* and `result` arguments of the last attempt at completing the `task`. Invoked | |
* with (err, results). | |
* | |
* @example | |
* | |
* // The `retry` function can be used as a stand-alone control flow by passing | |
* // a callback, as shown below: | |
* | |
* // try calling apiMethod 3 times | |
* async.retry(3, apiMethod, function(err, result) { | |
* // do something with the result | |
* }); | |
* | |
* // try calling apiMethod 3 times, waiting 200 ms between each retry | |
* async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { | |
* // do something with the result | |
* }); | |
* | |
* // try calling apiMethod 10 times with exponential backoff | |
* // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds) | |
* async.retry({ | |
* times: 10, | |
* interval: function(retryCount) { | |
* return 50 * Math.pow(2, retryCount); | |
* } | |
* }, apiMethod, function(err, result) { | |
* // do something with the result | |
* }); | |
* | |
* // try calling apiMethod the default 5 times no delay between each retry | |
* async.retry(apiMethod, function(err, result) { | |
* // do something with the result | |
* }); | |
* | |
* // try calling apiMethod only when error condition satisfies, all other | |
* // errors will abort the retry control flow and return to final callback | |
* async.retry({ | |
* errorFilter: function(err) { | |
* return err.message === 'Temporary error'; // only retry on a specific error | |
* } | |
* }, apiMethod, function(err, result) { | |
* // do something with the result | |
* }); | |
* | |
* // to retry individual methods that are not as reliable within other | |
* // control flow functions, use the `retryable` wrapper: | |
* async.auto({ | |
* users: api.getUsers.bind(api), | |
* payments: async.retryable(3, api.getPayments.bind(api)) | |
* }, function(err, results) { | |
* // do something with the results | |
* }); | |
* | |
*/ | |
function retry(opts, task, callback) { | |
var DEFAULT_TIMES = 5; | |
var DEFAULT_INTERVAL = 0; | |
var options = { | |
times: DEFAULT_TIMES, | |
intervalFunc: constant$1(DEFAULT_INTERVAL) | |
}; | |
function parseTimes(acc, t) { | |
if (typeof t === 'object') { | |
acc.times = +t.times || DEFAULT_TIMES; | |
acc.intervalFunc = typeof t.interval === 'function' ? | |
t.interval : | |
constant$1(+t.interval || DEFAULT_INTERVAL); | |
acc.errorFilter = t.errorFilter; | |
} else if (typeof t === 'number' || typeof t === 'string') { | |
acc.times = +t || DEFAULT_TIMES; | |
} else { | |
throw new Error("Invalid arguments for async.retry"); | |
} | |
} | |
if (arguments.length < 3 && typeof opts === 'function') { | |
callback = task || noop; | |
task = opts; | |
} else { | |
parseTimes(options, opts); | |
callback = callback || noop; | |
} | |
if (typeof task !== 'function') { | |
throw new Error("Invalid arguments for async.retry"); | |
} | |
var _task = wrapAsync(task); | |
var attempt = 1; | |
function retryAttempt() { | |
_task(function(err) { | |
if (err && attempt++ < options.times && | |
(typeof options.errorFilter != 'function' || | |
options.errorFilter(err))) { | |
setTimeout(retryAttempt, options.intervalFunc(attempt)); | |
} else { | |
callback.apply(null, arguments); | |
} | |
}); | |
} | |
retryAttempt(); | |
} | |
/** | |
* A close relative of [`retry`]{@link module:ControlFlow.retry}. This method | |
* wraps a task and makes it retryable, rather than immediately calling it | |
* with retries. | |
* | |
* @name retryable | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.retry]{@link module:ControlFlow.retry} | |
* @category Control Flow | |
* @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional | |
* options, exactly the same as from `retry` | |
* @param {AsyncFunction} task - the asynchronous function to wrap. | |
* This function will be passed any arguments passed to the returned wrapper. | |
* Invoked with (...args, callback). | |
* @returns {AsyncFunction} The wrapped function, which when invoked, will | |
* retry on an error, based on the parameters specified in `opts`. | |
* This function will accept the same parameters as `task`. | |
* @example | |
* | |
* async.auto({ | |
* dep1: async.retryable(3, getFromFlakyService), | |
* process: ["dep1", async.retryable(3, function (results, cb) { | |
* maybeProcessData(results.dep1, cb); | |
* })] | |
* }, callback); | |
*/ | |
var retryable = function (opts, task) { | |
if (!task) { | |
task = opts; | |
opts = null; | |
} | |
var _task = wrapAsync(task); | |
return initialParams(function (args, callback) { | |
function taskFn(cb) { | |
_task.apply(null, args.concat(cb)); | |
} | |
if (opts) retry(opts, taskFn, callback); | |
else retry(taskFn, callback); | |
}); | |
}; | |
/** | |
* Run the functions in the `tasks` collection in series, each one running once | |
* the previous function has completed. If any functions in the series pass an | |
* error to its callback, no more functions are run, and `callback` is | |
* immediately called with the value of the error. Otherwise, `callback` | |
* receives an array of results when `tasks` have completed. | |
* | |
* It is also possible to use an object instead of an array. Each property will | |
* be run as a function, and the results will be passed to the final `callback` | |
* as an object instead of an array. This can be a more readable way of handling | |
* results from {@link async.series}. | |
* | |
* **Note** that while many implementations preserve the order of object | |
* properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) | |
* explicitly states that | |
* | |
* > The mechanics and order of enumerating the properties is not specified. | |
* | |
* So if you rely on the order in which your series of functions are executed, | |
* and want this to work on all platforms, consider using an array. | |
* | |
* @name series | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {Array|Iterable|Object} tasks - A collection containing | |
* [async functions]{@link AsyncFunction} to run in series. | |
* Each function can complete with any number of optional `result` values. | |
* @param {Function} [callback] - An optional callback to run once all the | |
* functions have completed. This function gets a results array (or object) | |
* containing all the result arguments passed to the `task` callbacks. Invoked | |
* with (err, result). | |
* @example | |
* async.series([ | |
* function(callback) { | |
* // do some stuff ... | |
* callback(null, 'one'); | |
* }, | |
* function(callback) { | |
* // do some more stuff ... | |
* callback(null, 'two'); | |
* } | |
* ], | |
* // optional callback | |
* function(err, results) { | |
* // results is now equal to ['one', 'two'] | |
* }); | |
* | |
* async.series({ | |
* one: function(callback) { | |
* setTimeout(function() { | |
* callback(null, 1); | |
* }, 200); | |
* }, | |
* two: function(callback){ | |
* setTimeout(function() { | |
* callback(null, 2); | |
* }, 100); | |
* } | |
* }, function(err, results) { | |
* // results is now equal to: {one: 1, two: 2} | |
* }); | |
*/ | |
function series(tasks, callback) { | |
_parallel(eachOfSeries, tasks, callback); | |
} | |
/** | |
* Returns `true` if at least one element in the `coll` satisfies an async test. | |
* If any iteratee call returns `true`, the main `callback` is immediately | |
* called. | |
* | |
* @name some | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @alias any | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async truth test to apply to each item | |
* in the collections in parallel. | |
* The iteratee should complete with a boolean `result` value. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called as soon as any | |
* iteratee returns `true`, or after all the iteratee functions have finished. | |
* Result will be either `true` or `false` depending on the values of the async | |
* tests. Invoked with (err, result). | |
* @example | |
* | |
* async.some(['file1','file2','file3'], function(filePath, callback) { | |
* fs.access(filePath, function(err) { | |
* callback(null, !err) | |
* }); | |
* }, function(err, result) { | |
* // if result is true then at least one of the files exists | |
* }); | |
*/ | |
var some = doParallel(_createTester(Boolean, identity)); | |
/** | |
* The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. | |
* | |
* @name someLimit | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.some]{@link module:Collections.some} | |
* @alias anyLimit | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - An async truth test to apply to each item | |
* in the collections in parallel. | |
* The iteratee should complete with a boolean `result` value. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called as soon as any | |
* iteratee returns `true`, or after all the iteratee functions have finished. | |
* Result will be either `true` or `false` depending on the values of the async | |
* tests. Invoked with (err, result). | |
*/ | |
var someLimit = doParallelLimit(_createTester(Boolean, identity)); | |
/** | |
* The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. | |
* | |
* @name someSeries | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @see [async.some]{@link module:Collections.some} | |
* @alias anySeries | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async truth test to apply to each item | |
* in the collections in series. | |
* The iteratee should complete with a boolean `result` value. | |
* Invoked with (item, callback). | |
* @param {Function} [callback] - A callback which is called as soon as any | |
* iteratee returns `true`, or after all the iteratee functions have finished. | |
* Result will be either `true` or `false` depending on the values of the async | |
* tests. Invoked with (err, result). | |
*/ | |
var someSeries = doLimit(someLimit, 1); | |
/** | |
* Sorts a list by the results of running each `coll` value through an async | |
* `iteratee`. | |
* | |
* @name sortBy | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {AsyncFunction} iteratee - An async function to apply to each item in | |
* `coll`. | |
* The iteratee should complete with a value to use as the sort criteria as | |
* its `result`. | |
* Invoked with (item, callback). | |
* @param {Function} callback - A callback which is called after all the | |
* `iteratee` functions have finished, or an error occurs. Results is the items | |
* from the original `coll` sorted by the values returned by the `iteratee` | |
* calls. Invoked with (err, results). | |
* @example | |
* | |
* async.sortBy(['file1','file2','file3'], function(file, callback) { | |
* fs.stat(file, function(err, stats) { | |
* callback(err, stats.mtime); | |
* }); | |
* }, function(err, results) { | |
* // results is now the original array of files sorted by | |
* // modified date | |
* }); | |
* | |
* // By modifying the callback parameter the | |
* // sorting order can be influenced: | |
* | |
* // ascending order | |
* async.sortBy([1,9,3,5], function(x, callback) { | |
* callback(null, x); | |
* }, function(err,result) { | |
* // result callback | |
* }); | |
* | |
* // descending order | |
* async.sortBy([1,9,3,5], function(x, callback) { | |
* callback(null, x*-1); //<- x*-1 instead of x, turns the order around | |
* }, function(err,result) { | |
* // result callback | |
* }); | |
*/ | |
function sortBy (coll, iteratee, callback) { | |
var _iteratee = wrapAsync(iteratee); | |
map(coll, function (x, callback) { | |
_iteratee(x, function (err, criteria) { | |
if (err) return callback(err); | |
callback(null, {value: x, criteria: criteria}); | |
}); | |
}, function (err, results) { | |
if (err) return callback(err); | |
callback(null, arrayMap(results.sort(comparator), baseProperty('value'))); | |
}); | |
function comparator(left, right) { | |
var a = left.criteria, b = right.criteria; | |
return a < b ? -1 : a > b ? 1 : 0; | |
} | |
} | |
/** | |
* Sets a time limit on an asynchronous function. If the function does not call | |
* its callback within the specified milliseconds, it will be called with a | |
* timeout error. The code property for the error object will be `'ETIMEDOUT'`. | |
* | |
* @name timeout | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @category Util | |
* @param {AsyncFunction} asyncFn - The async function to limit in time. | |
* @param {number} milliseconds - The specified time limit. | |
* @param {*} [info] - Any variable you want attached (`string`, `object`, etc) | |
* to timeout Error for more information.. | |
* @returns {AsyncFunction} Returns a wrapped function that can be used with any | |
* of the control flow functions. | |
* Invoke this function with the same parameters as you would `asyncFunc`. | |
* @example | |
* | |
* function myFunction(foo, callback) { | |
* doAsyncTask(foo, function(err, data) { | |
* // handle errors | |
* if (err) return callback(err); | |
* | |
* // do some stuff ... | |
* | |
* // return processed data | |
* return callback(null, data); | |
* }); | |
* } | |
* | |
* var wrapped = async.timeout(myFunction, 1000); | |
* | |
* // call `wrapped` as you would `myFunction` | |
* wrapped({ bar: 'bar' }, function(err, data) { | |
* // if `myFunction` takes < 1000 ms to execute, `err` | |
* // and `data` will have their expected values | |
* | |
* // else `err` will be an Error with the code 'ETIMEDOUT' | |
* }); | |
*/ | |
function timeout(asyncFn, milliseconds, info) { | |
var fn = wrapAsync(asyncFn); | |
return initialParams(function (args, callback) { | |
var timedOut = false; | |
var timer; | |
function timeoutCallback() { | |
var name = asyncFn.name || 'anonymous'; | |
var error = new Error('Callback function "' + name + '" timed out.'); | |
error.code = 'ETIMEDOUT'; | |
if (info) { | |
error.info = info; | |
} | |
timedOut = true; | |
callback(error); | |
} | |
args.push(function () { | |
if (!timedOut) { | |
callback.apply(null, arguments); | |
clearTimeout(timer); | |
} | |
}); | |
// setup timer and call original function | |
timer = setTimeout(timeoutCallback, milliseconds); | |
fn.apply(null, args); | |
}); | |
} | |
/* Built-in method references for those with the same name as other `lodash` methods. */ | |
var nativeCeil = Math.ceil; | |
var nativeMax = Math.max; | |
/** | |
* The base implementation of `_.range` and `_.rangeRight` which doesn't | |
* coerce arguments. | |
* | |
* @private | |
* @param {number} start The start of the range. | |
* @param {number} end The end of the range. | |
* @param {number} step The value to increment or decrement by. | |
* @param {boolean} [fromRight] Specify iterating from right to left. | |
* @returns {Array} Returns the range of numbers. | |
*/ | |
function baseRange(start, end, step, fromRight) { | |
var index = -1, | |
length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), | |
result = Array(length); | |
while (length--) { | |
result[fromRight ? length : ++index] = start; | |
start += step; | |
} | |
return result; | |
} | |
/** | |
* The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a | |
* time. | |
* | |
* @name timesLimit | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.times]{@link module:ControlFlow.times} | |
* @category Control Flow | |
* @param {number} count - The number of times to run the function. | |
* @param {number} limit - The maximum number of async operations at a time. | |
* @param {AsyncFunction} iteratee - The async function to call `n` times. | |
* Invoked with the iteration index and a callback: (n, next). | |
* @param {Function} callback - see [async.map]{@link module:Collections.map}. | |
*/ | |
function timeLimit(count, limit, iteratee, callback) { | |
var _iteratee = wrapAsync(iteratee); | |
mapLimit(baseRange(0, count, 1), limit, _iteratee, callback); | |
} | |
/** | |
* Calls the `iteratee` function `n` times, and accumulates results in the same | |
* manner you would use with [map]{@link module:Collections.map}. | |
* | |
* @name times | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.map]{@link module:Collections.map} | |
* @category Control Flow | |
* @param {number} n - The number of times to run the function. | |
* @param {AsyncFunction} iteratee - The async function to call `n` times. | |
* Invoked with the iteration index and a callback: (n, next). | |
* @param {Function} callback - see {@link module:Collections.map}. | |
* @example | |
* | |
* // Pretend this is some complicated async factory | |
* var createUser = function(id, callback) { | |
* callback(null, { | |
* id: 'user' + id | |
* }); | |
* }; | |
* | |
* // generate 5 users | |
* async.times(5, function(n, next) { | |
* createUser(n, function(err, user) { | |
* next(err, user); | |
* }); | |
* }, function(err, users) { | |
* // we should now have 5 users | |
* }); | |
*/ | |
var times = doLimit(timeLimit, Infinity); | |
/** | |
* The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time. | |
* | |
* @name timesSeries | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.times]{@link module:ControlFlow.times} | |
* @category Control Flow | |
* @param {number} n - The number of times to run the function. | |
* @param {AsyncFunction} iteratee - The async function to call `n` times. | |
* Invoked with the iteration index and a callback: (n, next). | |
* @param {Function} callback - see {@link module:Collections.map}. | |
*/ | |
var timesSeries = doLimit(timeLimit, 1); | |
/** | |
* A relative of `reduce`. Takes an Object or Array, and iterates over each | |
* element in series, each step potentially mutating an `accumulator` value. | |
* The type of the accumulator defaults to the type of collection passed in. | |
* | |
* @name transform | |
* @static | |
* @memberOf module:Collections | |
* @method | |
* @category Collection | |
* @param {Array|Iterable|Object} coll - A collection to iterate over. | |
* @param {*} [accumulator] - The initial state of the transform. If omitted, | |
* it will default to an empty Object or Array, depending on the type of `coll` | |
* @param {AsyncFunction} iteratee - A function applied to each item in the | |
* collection that potentially modifies the accumulator. | |
* Invoked with (accumulator, item, key, callback). | |
* @param {Function} [callback] - A callback which is called after all the | |
* `iteratee` functions have finished. Result is the transformed accumulator. | |
* Invoked with (err, result). | |
* @example | |
* | |
* async.transform([1,2,3], function(acc, item, index, callback) { | |
* // pointless async: | |
* process.nextTick(function() { | |
* acc.push(item * 2) | |
* callback(null) | |
* }); | |
* }, function(err, result) { | |
* // result is now equal to [2, 4, 6] | |
* }); | |
* | |
* @example | |
* | |
* async.transform({a: 1, b: 2, c: 3}, function (obj, val, key, callback) { | |
* setImmediate(function () { | |
* obj[key] = val * 2; | |
* callback(); | |
* }) | |
* }, function (err, result) { | |
* // result is equal to {a: 2, b: 4, c: 6} | |
* }) | |
*/ | |
function transform (coll, accumulator, iteratee, callback) { | |
if (arguments.length <= 3) { | |
callback = iteratee; | |
iteratee = accumulator; | |
accumulator = isArray(coll) ? [] : {}; | |
} | |
callback = once(callback || noop); | |
var _iteratee = wrapAsync(iteratee); | |
eachOf(coll, function(v, k, cb) { | |
_iteratee(accumulator, v, k, cb); | |
}, function(err) { | |
callback(err, accumulator); | |
}); | |
} | |
/** | |
* It runs each task in series but stops whenever any of the functions were | |
* successful. If one of the tasks were successful, the `callback` will be | |
* passed the result of the successful task. If all tasks fail, the callback | |
* will be passed the error and result (if any) of the final attempt. | |
* | |
* @name tryEach | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {Array|Iterable|Object} tasks - A collection containing functions to | |
* run, each function is passed a `callback(err, result)` it must call on | |
* completion with an error `err` (which can be `null`) and an optional `result` | |
* value. | |
* @param {Function} [callback] - An optional callback which is called when one | |
* of the tasks has succeeded, or all have failed. It receives the `err` and | |
* `result` arguments of the last attempt at completing the `task`. Invoked with | |
* (err, results). | |
* @example | |
* async.tryEach([ | |
* function getDataFromFirstWebsite(callback) { | |
* // Try getting the data from the first website | |
* callback(err, data); | |
* }, | |
* function getDataFromSecondWebsite(callback) { | |
* // First website failed, | |
* // Try getting the data from the backup website | |
* callback(err, data); | |
* } | |
* ], | |
* // optional callback | |
* function(err, results) { | |
* Now do something with the data. | |
* }); | |
* | |
*/ | |
function tryEach(tasks, callback) { | |
var error = null; | |
var result; | |
callback = callback || noop; | |
eachSeries(tasks, function(task, callback) { | |
wrapAsync(task)(function (err, res/*, ...args*/) { | |
if (arguments.length > 2) { | |
result = slice(arguments, 1); | |
} else { | |
result = res; | |
} | |
error = err; | |
callback(!err); | |
}); | |
}, function () { | |
callback(error, result); | |
}); | |
} | |
/** | |
* Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original, | |
* unmemoized form. Handy for testing. | |
* | |
* @name unmemoize | |
* @static | |
* @memberOf module:Utils | |
* @method | |
* @see [async.memoize]{@link module:Utils.memoize} | |
* @category Util | |
* @param {AsyncFunction} fn - the memoized function | |
* @returns {AsyncFunction} a function that calls the original unmemoized function | |
*/ | |
function unmemoize(fn) { | |
return function () { | |
return (fn.unmemoized || fn).apply(null, arguments); | |
}; | |
} | |
/** | |
* Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when | |
* stopped, or an error occurs. | |
* | |
* @name whilst | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {Function} test - synchronous truth test to perform before each | |
* execution of `iteratee`. Invoked with (). | |
* @param {AsyncFunction} iteratee - An async function which is called each time | |
* `test` passes. Invoked with (callback). | |
* @param {Function} [callback] - A callback which is called after the test | |
* function has failed and repeated execution of `iteratee` has stopped. `callback` | |
* will be passed an error and any arguments passed to the final `iteratee`'s | |
* callback. Invoked with (err, [results]); | |
* @returns undefined | |
* @example | |
* | |
* var count = 0; | |
* async.whilst( | |
* function() { return count < 5; }, | |
* function(callback) { | |
* count++; | |
* setTimeout(function() { | |
* callback(null, count); | |
* }, 1000); | |
* }, | |
* function (err, n) { | |
* // 5 seconds have passed, n = 5 | |
* } | |
* ); | |
*/ | |
function whilst(test, iteratee, callback) { | |
callback = onlyOnce(callback || noop); | |
var _iteratee = wrapAsync(iteratee); | |
if (!test()) return callback(null); | |
var next = function(err/*, ...args*/) { | |
if (err) return callback(err); | |
if (test()) return _iteratee(next); | |
var args = slice(arguments, 1); | |
callback.apply(null, [null].concat(args)); | |
}; | |
_iteratee(next); | |
} | |
/** | |
* Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when | |
* stopped, or an error occurs. `callback` will be passed an error and any | |
* arguments passed to the final `iteratee`'s callback. | |
* | |
* The inverse of [whilst]{@link module:ControlFlow.whilst}. | |
* | |
* @name until | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @see [async.whilst]{@link module:ControlFlow.whilst} | |
* @category Control Flow | |
* @param {Function} test - synchronous truth test to perform before each | |
* execution of `iteratee`. Invoked with (). | |
* @param {AsyncFunction} iteratee - An async function which is called each time | |
* `test` fails. Invoked with (callback). | |
* @param {Function} [callback] - A callback which is called after the test | |
* function has passed and repeated execution of `iteratee` has stopped. `callback` | |
* will be passed an error and any arguments passed to the final `iteratee`'s | |
* callback. Invoked with (err, [results]); | |
*/ | |
function until(test, iteratee, callback) { | |
whilst(function() { | |
return !test.apply(this, arguments); | |
}, iteratee, callback); | |
} | |
/** | |
* Runs the `tasks` array of functions in series, each passing their results to | |
* the next in the array. However, if any of the `tasks` pass an error to their | |
* own callback, the next function is not executed, and the main `callback` is | |
* immediately called with the error. | |
* | |
* @name waterfall | |
* @static | |
* @memberOf module:ControlFlow | |
* @method | |
* @category Control Flow | |
* @param {Array} tasks - An array of [async functions]{@link AsyncFunction} | |
* to run. | |
* Each function should complete with any number of `result` values. | |
* The `result` values will be passed as arguments, in order, to the next task. | |
* @param {Function} [callback] - An optional callback to run once all the | |
* functions have completed. This will be passed the results of the last task's | |
* callback. Invoked with (err, [results]). | |
* @returns undefined | |
* @example | |
* | |
* async.waterfall([ | |
* function(callback) { | |
* callback(null, 'one', 'two'); | |
* }, | |
* function(arg1, arg2, callback) { | |
* // arg1 now equals 'one' and arg2 now equals 'two' | |
* callback(null, 'three'); | |
* }, | |
* function(arg1, callback) { | |
* // arg1 now equals 'three' | |
* callback(null, 'done'); | |
* } | |
* ], function (err, result) { | |
* // result now equals 'done' | |
* }); | |
* | |
* // Or, with named functions: | |
* async.waterfall([ | |
* myFirstFunction, | |
* mySecondFunction, | |
* myLastFunction, | |
* ], function (err, result) { | |
* // result now equals 'done' | |
* }); | |
* function myFirstFunction(callback) { | |
* callback(null, 'one', 'two'); | |
* } | |
* function mySecondFunction(arg1, arg2, callback) { | |
* // arg1 now equals 'one' and arg2 now equals 'two' | |
* callback(null, 'three'); | |
* } | |
* function myLastFunction(arg1, callback) { | |
* // arg1 now equals 'three' | |
* callback(null, 'done'); | |
* } | |
*/ | |
var waterfall = function(tasks, callback) { | |
callback = once(callback || noop); | |
if (!isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions')); | |
if (!tasks.length) return callback(); | |
var taskIndex = 0; | |
function nextTask(args) { | |
var task = wrapAsync(tasks[taskIndex++]); | |
args.push(onlyOnce(next)); | |
task.apply(null, args); | |
} | |
function next(err/*, ...args*/) { | |
if (err || taskIndex === tasks.length) { | |
return callback.apply(null, arguments); | |
} | |
nextTask(slice(arguments, 1)); | |
} | |
nextTask([]); | |
}; | |
/** | |
* An "async function" in the context of Async is an asynchronous function with | |
* a variable number of parameters, with the final parameter being a callback. | |
* (`function (arg1, arg2, ..., callback) {}`) | |
* The final callback is of the form `callback(err, results...)`, which must be | |
* called once the function is completed. The callback should be called with a | |
* Error as its first argument to signal that an error occurred. | |
* Otherwise, if no error occurred, it should be called with `null` as the first | |
* argument, and any additional `result` arguments that may apply, to signal | |
* successful completion. | |
* The callback must be called exactly once, ideally on a later tick of the | |
* JavaScript event loop. | |
* | |
* This type of function is also referred to as a "Node-style async function", | |
* or a "continuation passing-style function" (CPS). Most of the methods of this | |
* library are themselves CPS/Node-style async functions, or functions that | |
* return CPS/Node-style async functions. | |
* | |
* Wherever we accept a Node-style async function, we also directly accept an | |
* [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. | |
* In this case, the `async` function will not be passed a final callback | |
* argument, and any thrown error will be used as the `err` argument of the | |
* implicit callback, and the return value will be used as the `result` value. | |
* (i.e. a `rejected` of the returned Promise becomes the `err` callback | |
* argument, and a `resolved` value becomes the `result`.) | |
* | |
* Note, due to JavaScript limitations, we can only detect native `async` | |
* functions and not transpilied implementations. | |
* Your environment must have `async`/`await` support for this to work. | |
* (e.g. Node > v7.6, or a recent version of a modern browser). | |
* If you are using `async` functions through a transpiler (e.g. Babel), you | |
* must still wrap the function with [asyncify]{@link module:Utils.asyncify}, | |
* because the `async function` will be compiled to an ordinary function that | |
* returns a promise. | |
* | |
* @typedef {Function} AsyncFunction | |
* @static | |
*/ | |
/** | |
* Async is a utility module which provides straight-forward, powerful functions | |
* for working with asynchronous JavaScript. Although originally designed for | |
* use with [Node.js](http://nodejs.org) and installable via | |
* `npm install --save async`, it can also be used directly in the browser. | |
* @module async | |
* @see AsyncFunction | |
*/ | |
/** | |
* A collection of `async` functions for manipulating collections, such as | |
* arrays and objects. | |
* @module Collections | |
*/ | |
/** | |
* A collection of `async` functions for controlling the flow through a script. | |
* @module ControlFlow | |
*/ | |
/** | |
* A collection of `async` utility functions. | |
* @module Utils | |
*/ | |
var index = { | |
apply: apply, | |
applyEach: applyEach, | |
applyEachSeries: applyEachSeries, | |
asyncify: asyncify, | |
auto: auto, | |
autoInject: autoInject, | |
cargo: cargo, | |
compose: compose, | |
concat: concat, | |
concatLimit: concatLimit, | |
concatSeries: concatSeries, | |
constant: constant, | |
detect: detect, | |
detectLimit: detectLimit, | |
detectSeries: detectSeries, | |
dir: dir, | |
doDuring: doDuring, | |
doUntil: doUntil, | |
doWhilst: doWhilst, | |
during: during, | |
each: eachLimit, | |
eachLimit: eachLimit$1, | |
eachOf: eachOf, | |
eachOfLimit: eachOfLimit, | |
eachOfSeries: eachOfSeries, | |
eachSeries: eachSeries, | |
ensureAsync: ensureAsync, | |
every: every, | |
everyLimit: everyLimit, | |
everySeries: everySeries, | |
filter: filter, | |
filterLimit: filterLimit, | |
filterSeries: filterSeries, | |
forever: forever, | |
groupBy: groupBy, | |
groupByLimit: groupByLimit, | |
groupBySeries: groupBySeries, | |
log: log, | |
map: map, | |
mapLimit: mapLimit, | |
mapSeries: mapSeries, | |
mapValues: mapValues, | |
mapValuesLimit: mapValuesLimit, | |
mapValuesSeries: mapValuesSeries, | |
memoize: memoize, | |
nextTick: nextTick, | |
parallel: parallelLimit, | |
parallelLimit: parallelLimit$1, | |
priorityQueue: priorityQueue, | |
queue: queue$1, | |
race: race, | |
reduce: reduce, | |
reduceRight: reduceRight, | |
reflect: reflect, | |
reflectAll: reflectAll, | |
reject: reject, | |
rejectLimit: rejectLimit, | |
rejectSeries: rejectSeries, | |
retry: retry, | |
retryable: retryable, | |
seq: seq, | |
series: series, | |
setImmediate: setImmediate$1, | |
some: some, | |
someLimit: someLimit, | |
someSeries: someSeries, | |
sortBy: sortBy, | |
timeout: timeout, | |
times: times, | |
timesLimit: timeLimit, | |
timesSeries: timesSeries, | |
transform: transform, | |
tryEach: tryEach, | |
unmemoize: unmemoize, | |
until: until, | |
waterfall: waterfall, | |
whilst: whilst, | |
// aliases | |
all: every, | |
allLimit: everyLimit, | |
allSeries: everySeries, | |
any: some, | |
anyLimit: someLimit, | |
anySeries: someSeries, | |
find: detect, | |
findLimit: detectLimit, | |
findSeries: detectSeries, | |
forEach: eachLimit, | |
forEachSeries: eachSeries, | |
forEachLimit: eachLimit$1, | |
forEachOf: eachOf, | |
forEachOfSeries: eachOfSeries, | |
forEachOfLimit: eachOfLimit, | |
inject: reduce, | |
foldl: reduce, | |
foldr: reduceRight, | |
select: filter, | |
selectLimit: filterLimit, | |
selectSeries: filterSeries, | |
wrapSync: asyncify | |
}; | |
exports['default'] = index; | |
exports.apply = apply; | |
exports.applyEach = applyEach; | |
exports.applyEachSeries = applyEachSeries; | |
exports.asyncify = asyncify; | |
exports.auto = auto; | |
exports.autoInject = autoInject; | |
exports.cargo = cargo; | |
exports.compose = compose; | |
exports.concat = concat; | |
exports.concatLimit = concatLimit; | |
exports.concatSeries = concatSeries; | |
exports.constant = constant; | |
exports.detect = detect; | |
exports.detectLimit = detectLimit; | |
exports.detectSeries = detectSeries; | |
exports.dir = dir; | |
exports.doDuring = doDuring; | |
exports.doUntil = doUntil; | |
exports.doWhilst = doWhilst; | |
exports.during = during; | |
exports.each = eachLimit; | |
exports.eachLimit = eachLimit$1; | |
exports.eachOf = eachOf; | |
exports.eachOfLimit = eachOfLimit; | |
exports.eachOfSeries = eachOfSeries; | |
exports.eachSeries = eachSeries; | |
exports.ensureAsync = ensureAsync; | |
exports.every = every; | |
exports.everyLimit = everyLimit; | |
exports.everySeries = everySeries; | |
exports.filter = filter; | |
exports.filterLimit = filterLimit; | |
exports.filterSeries = filterSeries; | |
exports.forever = forever; | |
exports.groupBy = groupBy; | |
exports.groupByLimit = groupByLimit; | |
exports.groupBySeries = groupBySeries; | |
exports.log = log; | |
exports.map = map; | |
exports.mapLimit = mapLimit; | |
exports.mapSeries = mapSeries; | |
exports.mapValues = mapValues; | |
exports.mapValuesLimit = mapValuesLimit; | |
exports.mapValuesSeries = mapValuesSeries; | |
exports.memoize = memoize; | |
exports.nextTick = nextTick; | |
exports.parallel = parallelLimit; | |
exports.parallelLimit = parallelLimit$1; | |
exports.priorityQueue = priorityQueue; | |
exports.queue = queue$1; | |
exports.race = race; | |
exports.reduce = reduce; | |
exports.reduceRight = reduceRight; | |
exports.reflect = reflect; | |
exports.reflectAll = reflectAll; | |
exports.reject = reject; | |
exports.rejectLimit = rejectLimit; | |
exports.rejectSeries = rejectSeries; | |
exports.retry = retry; | |
exports.retryable = retryable; | |
exports.seq = seq; | |
exports.series = series; | |
exports.setImmediate = setImmediate$1; | |
exports.some = some; | |
exports.someLimit = someLimit; | |
exports.someSeries = someSeries; | |
exports.sortBy = sortBy; | |
exports.timeout = timeout; | |
exports.times = times; | |
exports.timesLimit = timeLimit; | |
exports.timesSeries = timesSeries; | |
exports.transform = transform; | |
exports.tryEach = tryEach; | |
exports.unmemoize = unmemoize; | |
exports.until = until; | |
exports.waterfall = waterfall; | |
exports.whilst = whilst; | |
exports.all = every; | |
exports.allLimit = everyLimit; | |
exports.allSeries = everySeries; | |
exports.any = some; | |
exports.anyLimit = someLimit; | |
exports.anySeries = someSeries; | |
exports.find = detect; | |
exports.findLimit = detectLimit; | |
exports.findSeries = detectSeries; | |
exports.forEach = eachLimit; | |
exports.forEachSeries = eachSeries; | |
exports.forEachLimit = eachLimit$1; | |
exports.forEachOf = eachOf; | |
exports.forEachOfSeries = eachOfSeries; | |
exports.forEachOfLimit = eachOfLimit; | |
exports.inject = reduce; | |
exports.foldl = reduce; | |
exports.foldr = reduceRight; | |
exports.select = filter; | |
exports.selectLimit = filterLimit; | |
exports.selectSeries = filterSeries; | |
exports.wrapSync = asyncify; | |
Object.defineProperty(exports, '__esModule', { value: true }); | |
}))); | |
}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},_dereq_("timers").setImmediate) | |
},{"_process":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/process/browser.js","timers":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/timers-browserify/main.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/json/stringify.js":[function(_dereq_,module,exports){ | |
module.exports = { "default": _dereq_("core-js/library/fn/json/stringify"), __esModule: true }; | |
},{"core-js/library/fn/json/stringify":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/json/stringify.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/assign.js":[function(_dereq_,module,exports){ | |
module.exports = { "default": _dereq_("core-js/library/fn/object/assign"), __esModule: true }; | |
},{"core-js/library/fn/object/assign":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/assign.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/create.js":[function(_dereq_,module,exports){ | |
module.exports = { "default": _dereq_("core-js/library/fn/object/create"), __esModule: true }; | |
},{"core-js/library/fn/object/create":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/create.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/define-property.js":[function(_dereq_,module,exports){ | |
module.exports = { "default": _dereq_("core-js/library/fn/object/define-property"), __esModule: true }; | |
},{"core-js/library/fn/object/define-property":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/define-property.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js":[function(_dereq_,module,exports){ | |
module.exports = { "default": _dereq_("core-js/library/fn/object/get-own-property-descriptor"), __esModule: true }; | |
},{"core-js/library/fn/object/get-own-property-descriptor":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/get-own-property-descriptor.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/get-prototype-of.js":[function(_dereq_,module,exports){ | |
module.exports = { "default": _dereq_("core-js/library/fn/object/get-prototype-of"), __esModule: true }; | |
},{"core-js/library/fn/object/get-prototype-of":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/get-prototype-of.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/set-prototype-of.js":[function(_dereq_,module,exports){ | |
module.exports = { "default": _dereq_("core-js/library/fn/object/set-prototype-of"), __esModule: true }; | |
},{"core-js/library/fn/object/set-prototype-of":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/set-prototype-of.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/promise.js":[function(_dereq_,module,exports){ | |
module.exports = { "default": _dereq_("core-js/library/fn/promise"), __esModule: true }; | |
},{"core-js/library/fn/promise":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/promise.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/symbol.js":[function(_dereq_,module,exports){ | |
module.exports = { "default": _dereq_("core-js/library/fn/symbol"), __esModule: true }; | |
},{"core-js/library/fn/symbol":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/symbol/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/symbol/iterator.js":[function(_dereq_,module,exports){ | |
module.exports = { "default": _dereq_("core-js/library/fn/symbol/iterator"), __esModule: true }; | |
},{"core-js/library/fn/symbol/iterator":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/symbol/iterator.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/asyncToGenerator.js":[function(_dereq_,module,exports){ | |
"use strict"; | |
exports.__esModule = true; | |
var _promise = _dereq_("../core-js/promise"); | |
var _promise2 = _interopRequireDefault(_promise); | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
exports.default = function (fn) { | |
return function () { | |
var gen = fn.apply(this, arguments); | |
return new _promise2.default(function (resolve, reject) { | |
function step(key, arg) { | |
try { | |
var info = gen[key](arg); | |
var value = info.value; | |
} catch (error) { | |
reject(error); | |
return; | |
} | |
if (info.done) { | |
resolve(value); | |
} else { | |
return _promise2.default.resolve(value).then(function (value) { | |
step("next", value); | |
}, function (err) { | |
step("throw", err); | |
}); | |
} | |
} | |
return step("next"); | |
}); | |
}; | |
}; | |
},{"../core-js/promise":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/promise.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/classCallCheck.js":[function(_dereq_,module,exports){ | |
"use strict"; | |
exports.__esModule = true; | |
exports.default = function (instance, Constructor) { | |
if (!(instance instanceof Constructor)) { | |
throw new TypeError("Cannot call a class as a function"); | |
} | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/createClass.js":[function(_dereq_,module,exports){ | |
"use strict"; | |
exports.__esModule = true; | |
var _defineProperty = _dereq_("../core-js/object/define-property"); | |
var _defineProperty2 = _interopRequireDefault(_defineProperty); | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
exports.default = 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; | |
(0, _defineProperty2.default)(target, descriptor.key, descriptor); | |
} | |
} | |
return function (Constructor, protoProps, staticProps) { | |
if (protoProps) defineProperties(Constructor.prototype, protoProps); | |
if (staticProps) defineProperties(Constructor, staticProps); | |
return Constructor; | |
}; | |
}(); | |
},{"../core-js/object/define-property":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/define-property.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/get.js":[function(_dereq_,module,exports){ | |
"use strict"; | |
exports.__esModule = true; | |
var _getPrototypeOf = _dereq_("../core-js/object/get-prototype-of"); | |
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); | |
var _getOwnPropertyDescriptor = _dereq_("../core-js/object/get-own-property-descriptor"); | |
var _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor); | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
exports.default = function get(object, property, receiver) { | |
if (object === null) object = Function.prototype; | |
var desc = (0, _getOwnPropertyDescriptor2.default)(object, property); | |
if (desc === undefined) { | |
var parent = (0, _getPrototypeOf2.default)(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); | |
} | |
}; | |
},{"../core-js/object/get-own-property-descriptor":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","../core-js/object/get-prototype-of":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/get-prototype-of.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/inherits.js":[function(_dereq_,module,exports){ | |
"use strict"; | |
exports.__esModule = true; | |
var _setPrototypeOf = _dereq_("../core-js/object/set-prototype-of"); | |
var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf); | |
var _create = _dereq_("../core-js/object/create"); | |
var _create2 = _interopRequireDefault(_create); | |
var _typeof2 = _dereq_("../helpers/typeof"); | |
var _typeof3 = _interopRequireDefault(_typeof2); | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
exports.default = function (subClass, superClass) { | |
if (typeof superClass !== "function" && superClass !== null) { | |
throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass))); | |
} | |
subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, { | |
constructor: { | |
value: subClass, | |
enumerable: false, | |
writable: true, | |
configurable: true | |
} | |
}); | |
if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass; | |
}; | |
},{"../core-js/object/create":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/create.js","../core-js/object/set-prototype-of":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/set-prototype-of.js","../helpers/typeof":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/typeof.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/possibleConstructorReturn.js":[function(_dereq_,module,exports){ | |
"use strict"; | |
exports.__esModule = true; | |
var _typeof2 = _dereq_("../helpers/typeof"); | |
var _typeof3 = _interopRequireDefault(_typeof2); | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
exports.default = function (self, call) { | |
if (!self) { | |
throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); | |
} | |
return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self; | |
}; | |
},{"../helpers/typeof":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/typeof.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/typeof.js":[function(_dereq_,module,exports){ | |
"use strict"; | |
exports.__esModule = true; | |
var _iterator = _dereq_("../core-js/symbol/iterator"); | |
var _iterator2 = _interopRequireDefault(_iterator); | |
var _symbol = _dereq_("../core-js/symbol"); | |
var _symbol2 = _interopRequireDefault(_symbol); | |
var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { | |
return typeof obj === "undefined" ? "undefined" : _typeof(obj); | |
} : function (obj) { | |
return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); | |
}; | |
},{"../core-js/symbol":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/symbol.js","../core-js/symbol/iterator":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/symbol/iterator.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/regenerator/index.js":[function(_dereq_,module,exports){ | |
module.exports = _dereq_("regenerator-runtime"); | |
},{"regenerator-runtime":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/regenerator-runtime/runtime-module.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/base64-js/index.js":[function(_dereq_,module,exports){ | |
'use strict' | |
exports.byteLength = byteLength | |
exports.toByteArray = toByteArray | |
exports.fromByteArray = fromByteArray | |
var lookup = [] | |
var revLookup = [] | |
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array | |
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' | |
for (var i = 0, len = code.length; i < len; ++i) { | |
lookup[i] = code[i] | |
revLookup[code.charCodeAt(i)] = i | |
} | |
revLookup['-'.charCodeAt(0)] = 62 | |
revLookup['_'.charCodeAt(0)] = 63 | |
function placeHoldersCount (b64) { | |
var len = b64.length | |
if (len % 4 > 0) { | |
throw new Error('Invalid string. Length must be a multiple of 4') | |
} | |
// the number of equal signs (place holders) | |
// if there are two placeholders, than the two characters before it | |
// represent one byte | |
// if there is only one, then the three characters before it represent 2 bytes | |
// this is just a cheap hack to not do indexOf twice | |
return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 | |
} | |
function byteLength (b64) { | |
// base64 is 4/3 + up to two characters of the original data | |
return (b64.length * 3 / 4) - placeHoldersCount(b64) | |
} | |
function toByteArray (b64) { | |
var i, l, tmp, placeHolders, arr | |
var len = b64.length | |
placeHolders = placeHoldersCount(b64) | |
arr = new Arr((len * 3 / 4) - placeHolders) | |
// if there are placeholders, only get up to the last complete 4 chars | |
l = placeHolders > 0 ? len - 4 : len | |
var L = 0 | |
for (i = 0; i < l; i += 4) { | |
tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] | |
arr[L++] = (tmp >> 16) & 0xFF | |
arr[L++] = (tmp >> 8) & 0xFF | |
arr[L++] = tmp & 0xFF | |
} | |
if (placeHolders === 2) { | |
tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) | |
arr[L++] = tmp & 0xFF | |
} else if (placeHolders === 1) { | |
tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) | |
arr[L++] = (tmp >> 8) & 0xFF | |
arr[L++] = tmp & 0xFF | |
} | |
return arr | |
} | |
function tripletToBase64 (num) { | |
return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] | |
} | |
function encodeChunk (uint8, start, end) { | |
var tmp | |
var output = [] | |
for (var i = start; i < end; i += 3) { | |
tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) | |
output.push(tripletToBase64(tmp)) | |
} | |
return output.join('') | |
} | |
function fromByteArray (uint8) { | |
var tmp | |
var len = uint8.length | |
var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes | |
var output = '' | |
var parts = [] | |
var maxChunkLength = 16383 // must be multiple of 3 | |
// go through the array every three bytes, we'll deal with trailing stuff later | |
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { | |
parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) | |
} | |
// pad the end with zeros, but make sure to not forget the extra bytes | |
if (extraBytes === 1) { | |
tmp = uint8[len - 1] | |
output += lookup[tmp >> 2] | |
output += lookup[(tmp << 4) & 0x3F] | |
output += '==' | |
} else if (extraBytes === 2) { | |
tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) | |
output += lookup[tmp >> 10] | |
output += lookup[(tmp >> 4) & 0x3F] | |
output += lookup[(tmp << 2) & 0x3F] | |
output += '=' | |
} | |
parts.push(output) | |
return parts.join('') | |
} | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browser-resolve/empty.js":[function(_dereq_,module,exports){ | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/events/events.js":[function(_dereq_,module,exports){ | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
var objectCreate = Object.create || objectCreatePolyfill | |
var objectKeys = Object.keys || objectKeysPolyfill | |
var bind = Function.prototype.bind || functionBindPolyfill | |
function EventEmitter() { | |
if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) { | |
this._events = objectCreate(null); | |
this._eventsCount = 0; | |
} | |
this._maxListeners = this._maxListeners || undefined; | |
} | |
module.exports = EventEmitter; | |
// Backwards-compat with node 0.10.x | |
EventEmitter.EventEmitter = EventEmitter; | |
EventEmitter.prototype._events = undefined; | |
EventEmitter.prototype._maxListeners = undefined; | |
// By default EventEmitters will print a warning if more than 10 listeners are | |
// added to it. This is a useful default which helps finding memory leaks. | |
var defaultMaxListeners = 10; | |
var hasDefineProperty; | |
try { | |
var o = {}; | |
if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 }); | |
hasDefineProperty = o.x === 0; | |
} catch (err) { hasDefineProperty = false } | |
if (hasDefineProperty) { | |
Object.defineProperty(EventEmitter, 'defaultMaxListeners', { | |
enumerable: true, | |
get: function() { | |
return defaultMaxListeners; | |
}, | |
set: function(arg) { | |
// check whether the input is a positive number (whose value is zero or | |
// greater and not a NaN). | |
if (typeof arg !== 'number' || arg < 0 || arg !== arg) | |
throw new TypeError('"defaultMaxListeners" must be a positive number'); | |
defaultMaxListeners = arg; | |
} | |
}); | |
} else { | |
EventEmitter.defaultMaxListeners = defaultMaxListeners; | |
} | |
// Obviously not all Emitters should be limited to 10. This function allows | |
// that to be increased. Set to zero for unlimited. | |
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { | |
if (typeof n !== 'number' || n < 0 || isNaN(n)) | |
throw new TypeError('"n" argument must be a positive number'); | |
this._maxListeners = n; | |
return this; | |
}; | |
function $getMaxListeners(that) { | |
if (that._maxListeners === undefined) | |
return EventEmitter.defaultMaxListeners; | |
return that._maxListeners; | |
} | |
EventEmitter.prototype.getMaxListeners = function getMaxListeners() { | |
return $getMaxListeners(this); | |
}; | |
// These standalone emit* functions are used to optimize calling of event | |
// handlers for fast cases because emit() itself often has a variable number of | |
// arguments and can be deoptimized because of that. These functions always have | |
// the same number of arguments and thus do not get deoptimized, so the code | |
// inside them can execute faster. | |
function emitNone(handler, isFn, self) { | |
if (isFn) | |
handler.call(self); | |
else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) | |
listeners[i].call(self); | |
} | |
} | |
function emitOne(handler, isFn, self, arg1) { | |
if (isFn) | |
handler.call(self, arg1); | |
else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) | |
listeners[i].call(self, arg1); | |
} | |
} | |
function emitTwo(handler, isFn, self, arg1, arg2) { | |
if (isFn) | |
handler.call(self, arg1, arg2); | |
else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) | |
listeners[i].call(self, arg1, arg2); | |
} | |
} | |
function emitThree(handler, isFn, self, arg1, arg2, arg3) { | |
if (isFn) | |
handler.call(self, arg1, arg2, arg3); | |
else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) | |
listeners[i].call(self, arg1, arg2, arg3); | |
} | |
} | |
function emitMany(handler, isFn, self, args) { | |
if (isFn) | |
handler.apply(self, args); | |
else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) | |
listeners[i].apply(self, args); | |
} | |
} | |
EventEmitter.prototype.emit = function emit(type) { | |
var er, handler, len, args, i, events; | |
var doError = (type === 'error'); | |
events = this._events; | |
if (events) | |
doError = (doError && events.error == null); | |
else if (!doError) | |
return false; | |
// If there is no 'error' event listener then throw. | |
if (doError) { | |
if (arguments.length > 1) | |
er = arguments[1]; | |
if (er instanceof Error) { | |
throw er; // Unhandled 'error' event | |
} else { | |
// At least give some kind of context to the user | |
var err = new Error('Unhandled "error" event. (' + er + ')'); | |
err.context = er; | |
throw err; | |
} | |
return false; | |
} | |
handler = events[type]; | |
if (!handler) | |
return false; | |
var isFn = typeof handler === 'function'; | |
len = arguments.length; | |
switch (len) { | |
// fast cases | |
case 1: | |
emitNone(handler, isFn, this); | |
break; | |
case 2: | |
emitOne(handler, isFn, this, arguments[1]); | |
break; | |
case 3: | |
emitTwo(handler, isFn, this, arguments[1], arguments[2]); | |
break; | |
case 4: | |
emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); | |
break; | |
// slower | |
default: | |
args = new Array(len - 1); | |
for (i = 1; i < len; i++) | |
args[i - 1] = arguments[i]; | |
emitMany(handler, isFn, this, args); | |
} | |
return true; | |
}; | |
function _addListener(target, type, listener, prepend) { | |
var m; | |
var events; | |
var existing; | |
if (typeof listener !== 'function') | |
throw new TypeError('"listener" argument must be a function'); | |
events = target._events; | |
if (!events) { | |
events = target._events = objectCreate(null); | |
target._eventsCount = 0; | |
} else { | |
// To avoid recursion in the case that type === "newListener"! Before | |
// adding it to the listeners, first emit "newListener". | |
if (events.newListener) { | |
target.emit('newListener', type, | |
listener.listener ? listener.listener : listener); | |
// Re-assign `events` because a newListener handler could have caused the | |
// this._events to be assigned to a new object | |
events = target._events; | |
} | |
existing = events[type]; | |
} | |
if (!existing) { | |
// Optimize the case of one listener. Don't need the extra array object. | |
existing = events[type] = listener; | |
++target._eventsCount; | |
} else { | |
if (typeof existing === 'function') { | |
// Adding the second element, need to change to array. | |
existing = events[type] = | |
prepend ? [listener, existing] : [existing, listener]; | |
} else { | |
// If we've already got an array, just append. | |
if (prepend) { | |
existing.unshift(listener); | |
} else { | |
existing.push(listener); | |
} | |
} | |
// Check for listener leak | |
if (!existing.warned) { | |
m = $getMaxListeners(target); | |
if (m && m > 0 && existing.length > m) { | |
existing.warned = true; | |
var w = new Error('Possible EventEmitter memory leak detected. ' + | |
existing.length + ' "' + String(type) + '" listeners ' + | |
'added. Use emitter.setMaxListeners() to ' + | |
'increase limit.'); | |
w.name = 'MaxListenersExceededWarning'; | |
w.emitter = target; | |
w.type = type; | |
w.count = existing.length; | |
if (typeof console === 'object' && console.warn) { | |
console.warn('%s: %s', w.name, w.message); | |
} | |
} | |
} | |
} | |
return target; | |
} | |
EventEmitter.prototype.addListener = function addListener(type, listener) { | |
return _addListener(this, type, listener, false); | |
}; | |
EventEmitter.prototype.on = EventEmitter.prototype.addListener; | |
EventEmitter.prototype.prependListener = | |
function prependListener(type, listener) { | |
return _addListener(this, type, listener, true); | |
}; | |
function onceWrapper() { | |
if (!this.fired) { | |
this.target.removeListener(this.type, this.wrapFn); | |
this.fired = true; | |
switch (arguments.length) { | |
case 0: | |
return this.listener.call(this.target); | |
case 1: | |
return this.listener.call(this.target, arguments[0]); | |
case 2: | |
return this.listener.call(this.target, arguments[0], arguments[1]); | |
case 3: | |
return this.listener.call(this.target, arguments[0], arguments[1], | |
arguments[2]); | |
default: | |
var args = new Array(arguments.length); | |
for (var i = 0; i < args.length; ++i) | |
args[i] = arguments[i]; | |
this.listener.apply(this.target, args); | |
} | |
} | |
} | |
function _onceWrap(target, type, listener) { | |
var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; | |
var wrapped = bind.call(onceWrapper, state); | |
wrapped.listener = listener; | |
state.wrapFn = wrapped; | |
return wrapped; | |
} | |
EventEmitter.prototype.once = function once(type, listener) { | |
if (typeof listener !== 'function') | |
throw new TypeError('"listener" argument must be a function'); | |
this.on(type, _onceWrap(this, type, listener)); | |
return this; | |
}; | |
EventEmitter.prototype.prependOnceListener = | |
function prependOnceListener(type, listener) { | |
if (typeof listener !== 'function') | |
throw new TypeError('"listener" argument must be a function'); | |
this.prependListener(type, _onceWrap(this, type, listener)); | |
return this; | |
}; | |
// Emits a 'removeListener' event if and only if the listener was removed. | |
EventEmitter.prototype.removeListener = | |
function removeListener(type, listener) { | |
var list, events, position, i, originalListener; | |
if (typeof listener !== 'function') | |
throw new TypeError('"listener" argument must be a function'); | |
events = this._events; | |
if (!events) | |
return this; | |
list = events[type]; | |
if (!list) | |
return this; | |
if (list === listener || list.listener === listener) { | |
if (--this._eventsCount === 0) | |
this._events = objectCreate(null); | |
else { | |
delete events[type]; | |
if (events.removeListener) | |
this.emit('removeListener', type, list.listener || listener); | |
} | |
} else if (typeof list !== 'function') { | |
position = -1; | |
for (i = list.length - 1; i >= 0; i--) { | |
if (list[i] === listener || list[i].listener === listener) { | |
originalListener = list[i].listener; | |
position = i; | |
break; | |
} | |
} | |
if (position < 0) | |
return this; | |
if (position === 0) | |
list.shift(); | |
else | |
spliceOne(list, position); | |
if (list.length === 1) | |
events[type] = list[0]; | |
if (events.removeListener) | |
this.emit('removeListener', type, originalListener || listener); | |
} | |
return this; | |
}; | |
EventEmitter.prototype.removeAllListeners = | |
function removeAllListeners(type) { | |
var listeners, events, i; | |
events = this._events; | |
if (!events) | |
return this; | |
// not listening for removeListener, no need to emit | |
if (!events.removeListener) { | |
if (arguments.length === 0) { | |
this._events = objectCreate(null); | |
this._eventsCount = 0; | |
} else if (events[type]) { | |
if (--this._eventsCount === 0) | |
this._events = objectCreate(null); | |
else | |
delete events[type]; | |
} | |
return this; | |
} | |
// emit removeListener for all listeners on all events | |
if (arguments.length === 0) { | |
var keys = objectKeys(events); | |
var key; | |
for (i = 0; i < keys.length; ++i) { | |
key = keys[i]; | |
if (key === 'removeListener') continue; | |
this.removeAllListeners(key); | |
} | |
this.removeAllListeners('removeListener'); | |
this._events = objectCreate(null); | |
this._eventsCount = 0; | |
return this; | |
} | |
listeners = events[type]; | |
if (typeof listeners === 'function') { | |
this.removeListener(type, listeners); | |
} else if (listeners) { | |
// LIFO order | |
for (i = listeners.length - 1; i >= 0; i--) { | |
this.removeListener(type, listeners[i]); | |
} | |
} | |
return this; | |
}; | |
function _listeners(target, type, unwrap) { | |
var events = target._events; | |
if (!events) | |
return []; | |
var evlistener = events[type]; | |
if (!evlistener) | |
return []; | |
if (typeof evlistener === 'function') | |
return unwrap ? [evlistener.listener || evlistener] : [evlistener]; | |
return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); | |
} | |
EventEmitter.prototype.listeners = function listeners(type) { | |
return _listeners(this, type, true); | |
}; | |
EventEmitter.prototype.rawListeners = function rawListeners(type) { | |
return _listeners(this, type, false); | |
}; | |
EventEmitter.listenerCount = function(emitter, type) { | |
if (typeof emitter.listenerCount === 'function') { | |
return emitter.listenerCount(type); | |
} else { | |
return listenerCount.call(emitter, type); | |
} | |
}; | |
EventEmitter.prototype.listenerCount = listenerCount; | |
function listenerCount(type) { | |
var events = this._events; | |
if (events) { | |
var evlistener = events[type]; | |
if (typeof evlistener === 'function') { | |
return 1; | |
} else if (evlistener) { | |
return evlistener.length; | |
} | |
} | |
return 0; | |
} | |
EventEmitter.prototype.eventNames = function eventNames() { | |
return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; | |
}; | |
// About 1.5x faster than the two-arg version of Array#splice(). | |
function spliceOne(list, index) { | |
for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) | |
list[i] = list[k]; | |
list.pop(); | |
} | |
function arrayClone(arr, n) { | |
var copy = new Array(n); | |
for (var i = 0; i < n; ++i) | |
copy[i] = arr[i]; | |
return copy; | |
} | |
function unwrapListeners(arr) { | |
var ret = new Array(arr.length); | |
for (var i = 0; i < ret.length; ++i) { | |
ret[i] = arr[i].listener || arr[i]; | |
} | |
return ret; | |
} | |
function objectCreatePolyfill(proto) { | |
var F = function() {}; | |
F.prototype = proto; | |
return new F; | |
} | |
function objectKeysPolyfill(obj) { | |
var keys = []; | |
for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) { | |
keys.push(k); | |
} | |
return k; | |
} | |
function functionBindPolyfill(context) { | |
var fn = this; | |
return function () { | |
return fn.apply(context, arguments); | |
}; | |
} | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/process/browser.js":[function(_dereq_,module,exports){ | |
// shim for using process in browser | |
var process = module.exports = {}; | |
// cached from whatever global is present so that test runners that stub it | |
// don't break things. But we need to wrap it in a try catch in case it is | |
// wrapped in strict mode code which doesn't define any globals. It's inside a | |
// function because try/catches deoptimize in certain engines. | |
var cachedSetTimeout; | |
var cachedClearTimeout; | |
function defaultSetTimout() { | |
throw new Error('setTimeout has not been defined'); | |
} | |
function defaultClearTimeout () { | |
throw new Error('clearTimeout has not been defined'); | |
} | |
(function () { | |
try { | |
if (typeof setTimeout === 'function') { | |
cachedSetTimeout = setTimeout; | |
} else { | |
cachedSetTimeout = defaultSetTimout; | |
} | |
} catch (e) { | |
cachedSetTimeout = defaultSetTimout; | |
} | |
try { | |
if (typeof clearTimeout === 'function') { | |
cachedClearTimeout = clearTimeout; | |
} else { | |
cachedClearTimeout = defaultClearTimeout; | |
} | |
} catch (e) { | |
cachedClearTimeout = defaultClearTimeout; | |
} | |
} ()) | |
function runTimeout(fun) { | |
if (cachedSetTimeout === setTimeout) { | |
//normal enviroments in sane situations | |
return setTimeout(fun, 0); | |
} | |
// if setTimeout wasn't available but was latter defined | |
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { | |
cachedSetTimeout = setTimeout; | |
return setTimeout(fun, 0); | |
} | |
try { | |
// when when somebody has screwed with setTimeout but no I.E. maddness | |
return cachedSetTimeout(fun, 0); | |
} catch(e){ | |
try { | |
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally | |
return cachedSetTimeout.call(null, fun, 0); | |
} catch(e){ | |
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error | |
return cachedSetTimeout.call(this, fun, 0); | |
} | |
} | |
} | |
function runClearTimeout(marker) { | |
if (cachedClearTimeout === clearTimeout) { | |
//normal enviroments in sane situations | |
return clearTimeout(marker); | |
} | |
// if clearTimeout wasn't available but was latter defined | |
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { | |
cachedClearTimeout = clearTimeout; | |
return clearTimeout(marker); | |
} | |
try { | |
// when when somebody has screwed with setTimeout but no I.E. maddness | |
return cachedClearTimeout(marker); | |
} catch (e){ | |
try { | |
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally | |
return cachedClearTimeout.call(null, marker); | |
} catch (e){ | |
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. | |
// Some versions of I.E. have different rules for clearTimeout vs setTimeout | |
return cachedClearTimeout.call(this, marker); | |
} | |
} | |
} | |
var queue = []; | |
var draining = false; | |
var currentQueue; | |
var queueIndex = -1; | |
function cleanUpNextTick() { | |
if (!draining || !currentQueue) { | |
return; | |
} | |
draining = false; | |
if (currentQueue.length) { | |
queue = currentQueue.concat(queue); | |
} else { | |
queueIndex = -1; | |
} | |
if (queue.length) { | |
drainQueue(); | |
} | |
} | |
function drainQueue() { | |
if (draining) { | |
return; | |
} | |
var timeout = runTimeout(cleanUpNextTick); | |
draining = true; | |
var len = queue.length; | |
while(len) { | |
currentQueue = queue; | |
queue = []; | |
while (++queueIndex < len) { | |
if (currentQueue) { | |
currentQueue[queueIndex].run(); | |
} | |
} | |
queueIndex = -1; | |
len = queue.length; | |
} | |
currentQueue = null; | |
draining = false; | |
runClearTimeout(timeout); | |
} | |
process.nextTick = function (fun) { | |
var args = new Array(arguments.length - 1); | |
if (arguments.length > 1) { | |
for (var i = 1; i < arguments.length; i++) { | |
args[i - 1] = arguments[i]; | |
} | |
} | |
queue.push(new Item(fun, args)); | |
if (queue.length === 1 && !draining) { | |
runTimeout(drainQueue); | |
} | |
}; | |
// v8 likes predictible objects | |
function Item(fun, array) { | |
this.fun = fun; | |
this.array = array; | |
} | |
Item.prototype.run = function () { | |
this.fun.apply(null, this.array); | |
}; | |
process.title = 'browser'; | |
process.browser = true; | |
process.env = {}; | |
process.argv = []; | |
process.version = ''; // empty string to avoid regexp issues | |
process.versions = {}; | |
function noop() {} | |
process.on = noop; | |
process.addListener = noop; | |
process.once = noop; | |
process.off = noop; | |
process.removeListener = noop; | |
process.removeAllListeners = noop; | |
process.emit = noop; | |
process.prependListener = noop; | |
process.prependOnceListener = noop; | |
process.listeners = function (name) { return [] } | |
process.binding = function (name) { | |
throw new Error('process.binding is not supported'); | |
}; | |
process.cwd = function () { return '/' }; | |
process.chdir = function (dir) { | |
throw new Error('process.chdir is not supported'); | |
}; | |
process.umask = function() { return 0; }; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/buffer/index.js":[function(_dereq_,module,exports){ | |
/*! | |
* The buffer module from node.js, for the browser. | |
* | |
* @author Feross Aboukhadijeh <https://feross.org> | |
* @license MIT | |
*/ | |
/* eslint-disable no-proto */ | |
'use strict' | |
var base64 = _dereq_('base64-js') | |
var ieee754 = _dereq_('ieee754') | |
exports.Buffer = Buffer | |
exports.SlowBuffer = SlowBuffer | |
exports.INSPECT_MAX_BYTES = 50 | |
var K_MAX_LENGTH = 0x7fffffff | |
exports.kMaxLength = K_MAX_LENGTH | |
/** | |
* If `Buffer.TYPED_ARRAY_SUPPORT`: | |
* === true Use Uint8Array implementation (fastest) | |
* === false Print warning and recommend using `buffer` v4.x which has an Object | |
* implementation (most compatible, even IE6) | |
* | |
* Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, | |
* Opera 11.6+, iOS 4.2+. | |
* | |
* We report that the browser does not support typed arrays if the are not subclassable | |
* using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` | |
* (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support | |
* for __proto__ and has a buggy typed array implementation. | |
*/ | |
Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() | |
if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && | |
typeof console.error === 'function') { | |
console.error( | |
'This browser lacks typed array (Uint8Array) support which is required by ' + | |
'`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' | |
) | |
} | |
function typedArraySupport () { | |
// Can typed array instances can be augmented? | |
try { | |
var arr = new Uint8Array(1) | |
arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } | |
return arr.foo() === 42 | |
} catch (e) { | |
return false | |
} | |
} | |
Object.defineProperty(Buffer.prototype, 'parent', { | |
enumerable: true, | |
get: function () { | |
if (!Buffer.isBuffer(this)) return undefined | |
return this.buffer | |
} | |
}) | |
Object.defineProperty(Buffer.prototype, 'offset', { | |
enumerable: true, | |
get: function () { | |
if (!Buffer.isBuffer(this)) return undefined | |
return this.byteOffset | |
} | |
}) | |
function createBuffer (length) { | |
if (length > K_MAX_LENGTH) { | |
throw new RangeError('The value "' + length + '" is invalid for option "size"') | |
} | |
// Return an augmented `Uint8Array` instance | |
var buf = new Uint8Array(length) | |
buf.__proto__ = Buffer.prototype | |
return buf | |
} | |
/** | |
* The Buffer constructor returns instances of `Uint8Array` that have their | |
* prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of | |
* `Uint8Array`, so the returned instances will have all the node `Buffer` methods | |
* and the `Uint8Array` methods. Square bracket notation works as expected -- it | |
* returns a single octet. | |
* | |
* The `Uint8Array` prototype remains unmodified. | |
*/ | |
function Buffer (arg, encodingOrOffset, length) { | |
// Common case. | |
if (typeof arg === 'number') { | |
if (typeof encodingOrOffset === 'string') { | |
throw new TypeError( | |
'The "string" argument must be of type string. Received type number' | |
) | |
} | |
return allocUnsafe(arg) | |
} | |
return from(arg, encodingOrOffset, length) | |
} | |
// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 | |
if (typeof Symbol !== 'undefined' && Symbol.species != null && | |
Buffer[Symbol.species] === Buffer) { | |
Object.defineProperty(Buffer, Symbol.species, { | |
value: null, | |
configurable: true, | |
enumerable: false, | |
writable: false | |
}) | |
} | |
Buffer.poolSize = 8192 // not used by this implementation | |
function from (value, encodingOrOffset, length) { | |
if (typeof value === 'string') { | |
return fromString(value, encodingOrOffset) | |
} | |
if (ArrayBuffer.isView(value)) { | |
return fromArrayLike(value) | |
} | |
if (value == null) { | |
throw TypeError( | |
'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + | |
'or Array-like Object. Received type ' + (typeof value) | |
) | |
} | |
if (isInstance(value, ArrayBuffer) || | |
(value && isInstance(value.buffer, ArrayBuffer))) { | |
return fromArrayBuffer(value, encodingOrOffset, length) | |
} | |
if (typeof value === 'number') { | |
throw new TypeError( | |
'The "value" argument must not be of type number. Received type number' | |
) | |
} | |
var valueOf = value.valueOf && value.valueOf() | |
if (valueOf != null && valueOf !== value) { | |
return Buffer.from(valueOf, encodingOrOffset, length) | |
} | |
var b = fromObject(value) | |
if (b) return b | |
if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && | |
typeof value[Symbol.toPrimitive] === 'function') { | |
return Buffer.from( | |
value[Symbol.toPrimitive]('string'), encodingOrOffset, length | |
) | |
} | |
throw new TypeError( | |
'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + | |
'or Array-like Object. Received type ' + (typeof value) | |
) | |
} | |
/** | |
* Functionally equivalent to Buffer(arg, encoding) but throws a TypeError | |
* if value is a number. | |
* Buffer.from(str[, encoding]) | |
* Buffer.from(array) | |
* Buffer.from(buffer) | |
* Buffer.from(arrayBuffer[, byteOffset[, length]]) | |
**/ | |
Buffer.from = function (value, encodingOrOffset, length) { | |
return from(value, encodingOrOffset, length) | |
} | |
// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: | |
// https://github.com/feross/buffer/pull/148 | |
Buffer.prototype.__proto__ = Uint8Array.prototype | |
Buffer.__proto__ = Uint8Array | |
function assertSize (size) { | |
if (typeof size !== 'number') { | |
throw new TypeError('"size" argument must be of type number') | |
} else if (size < 0) { | |
throw new RangeError('The value "' + size + '" is invalid for option "size"') | |
} | |
} | |
function alloc (size, fill, encoding) { | |
assertSize(size) | |
if (size <= 0) { | |
return createBuffer(size) | |
} | |
if (fill !== undefined) { | |
// Only pay attention to encoding if it's a string. This | |
// prevents accidentally sending in a number that would | |
// be interpretted as a start offset. | |
return typeof encoding === 'string' | |
? createBuffer(size).fill(fill, encoding) | |
: createBuffer(size).fill(fill) | |
} | |
return createBuffer(size) | |
} | |
/** | |
* Creates a new filled Buffer instance. | |
* alloc(size[, fill[, encoding]]) | |
**/ | |
Buffer.alloc = function (size, fill, encoding) { | |
return alloc(size, fill, encoding) | |
} | |
function allocUnsafe (size) { | |
assertSize(size) | |
return createBuffer(size < 0 ? 0 : checked(size) | 0) | |
} | |
/** | |
* Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. | |
* */ | |
Buffer.allocUnsafe = function (size) { | |
return allocUnsafe(size) | |
} | |
/** | |
* Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. | |
*/ | |
Buffer.allocUnsafeSlow = function (size) { | |
return allocUnsafe(size) | |
} | |
function fromString (string, encoding) { | |
if (typeof encoding !== 'string' || encoding === '') { | |
encoding = 'utf8' | |
} | |
if (!Buffer.isEncoding(encoding)) { | |
throw new TypeError('Unknown encoding: ' + encoding) | |
} | |
var length = byteLength(string, encoding) | 0 | |
var buf = createBuffer(length) | |
var actual = buf.write(string, encoding) | |
if (actual !== length) { | |
// Writing a hex string, for example, that contains invalid characters will | |
// cause everything after the first invalid character to be ignored. (e.g. | |
// 'abxxcd' will be treated as 'ab') | |
buf = buf.slice(0, actual) | |
} | |
return buf | |
} | |
function fromArrayLike (array) { | |
var length = array.length < 0 ? 0 : checked(array.length) | 0 | |
var buf = createBuffer(length) | |
for (var i = 0; i < length; i += 1) { | |
buf[i] = array[i] & 255 | |
} | |
return buf | |
} | |
function fromArrayBuffer (array, byteOffset, length) { | |
if (byteOffset < 0 || array.byteLength < byteOffset) { | |
throw new RangeError('"offset" is outside of buffer bounds') | |
} | |
if (array.byteLength < byteOffset + (length || 0)) { | |
throw new RangeError('"length" is outside of buffer bounds') | |
} | |
var buf | |
if (byteOffset === undefined && length === undefined) { | |
buf = new Uint8Array(array) | |
} else if (length === undefined) { | |
buf = new Uint8Array(array, byteOffset) | |
} else { | |
buf = new Uint8Array(array, byteOffset, length) | |
} | |
// Return an augmented `Uint8Array` instance | |
buf.__proto__ = Buffer.prototype | |
return buf | |
} | |
function fromObject (obj) { | |
if (Buffer.isBuffer(obj)) { | |
var len = checked(obj.length) | 0 | |
var buf = createBuffer(len) | |
if (buf.length === 0) { | |
return buf | |
} | |
obj.copy(buf, 0, 0, len) | |
return buf | |
} | |
if (obj.length !== undefined) { | |
if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { | |
return createBuffer(0) | |
} | |
return fromArrayLike(obj) | |
} | |
if (obj.type === 'Buffer' && Array.isArray(obj.data)) { | |
return fromArrayLike(obj.data) | |
} | |
} | |
function checked (length) { | |
// Note: cannot use `length < K_MAX_LENGTH` here because that fails when | |
// length is NaN (which is otherwise coerced to zero.) | |
if (length >= K_MAX_LENGTH) { | |
throw new RangeError('Attempt to allocate Buffer larger than maximum ' + | |
'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') | |
} | |
return length | 0 | |
} | |
function SlowBuffer (length) { | |
if (+length != length) { // eslint-disable-line eqeqeq | |
length = 0 | |
} | |
return Buffer.alloc(+length) | |
} | |
Buffer.isBuffer = function isBuffer (b) { | |
return b != null && b._isBuffer === true && | |
b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false | |
} | |
Buffer.compare = function compare (a, b) { | |
if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) | |
if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) | |
if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { | |
throw new TypeError( | |
'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' | |
) | |
} | |
if (a === b) return 0 | |
var x = a.length | |
var y = b.length | |
for (var i = 0, len = Math.min(x, y); i < len; ++i) { | |
if (a[i] !== b[i]) { | |
x = a[i] | |
y = b[i] | |
break | |
} | |
} | |
if (x < y) return -1 | |
if (y < x) return 1 | |
return 0 | |
} | |
Buffer.isEncoding = function isEncoding (encoding) { | |
switch (String(encoding).toLowerCase()) { | |
case 'hex': | |
case 'utf8': | |
case 'utf-8': | |
case 'ascii': | |
case 'latin1': | |
case 'binary': | |
case 'base64': | |
case 'ucs2': | |
case 'ucs-2': | |
case 'utf16le': | |
case 'utf-16le': | |
return true | |
default: | |
return false | |
} | |
} | |
Buffer.concat = function concat (list, length) { | |
if (!Array.isArray(list)) { | |
throw new TypeError('"list" argument must be an Array of Buffers') | |
} | |
if (list.length === 0) { | |
return Buffer.alloc(0) | |
} | |
var i | |
if (length === undefined) { | |
length = 0 | |
for (i = 0; i < list.length; ++i) { | |
length += list[i].length | |
} | |
} | |
var buffer = Buffer.allocUnsafe(length) | |
var pos = 0 | |
for (i = 0; i < list.length; ++i) { | |
var buf = list[i] | |
if (isInstance(buf, Uint8Array)) { | |
buf = Buffer.from(buf) | |
} | |
if (!Buffer.isBuffer(buf)) { | |
throw new TypeError('"list" argument must be an Array of Buffers') | |
} | |
buf.copy(buffer, pos) | |
pos += buf.length | |
} | |
return buffer | |
} | |
function byteLength (string, encoding) { | |
if (Buffer.isBuffer(string)) { | |
return string.length | |
} | |
if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { | |
return string.byteLength | |
} | |
if (typeof string !== 'string') { | |
throw new TypeError( | |
'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + | |
'Received type ' + typeof string | |
) | |
} | |
var len = string.length | |
var mustMatch = (arguments.length > 2 && arguments[2] === true) | |
if (!mustMatch && len === 0) return 0 | |
// Use a for loop to avoid recursion | |
var loweredCase = false | |
for (;;) { | |
switch (encoding) { | |
case 'ascii': | |
case 'latin1': | |
case 'binary': | |
return len | |
case 'utf8': | |
case 'utf-8': | |
return utf8ToBytes(string).length | |
case 'ucs2': | |
case 'ucs-2': | |
case 'utf16le': | |
case 'utf-16le': | |
return len * 2 | |
case 'hex': | |
return len >>> 1 | |
case 'base64': | |
return base64ToBytes(string).length | |
default: | |
if (loweredCase) { | |
return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 | |
} | |
encoding = ('' + encoding).toLowerCase() | |
loweredCase = true | |
} | |
} | |
} | |
Buffer.byteLength = byteLength | |
function slowToString (encoding, start, end) { | |
var loweredCase = false | |
// No need to verify that "this.length <= MAX_UINT32" since it's a read-only | |
// property of a typed array. | |
// This behaves neither like String nor Uint8Array in that we set start/end | |
// to their upper/lower bounds if the value passed is out of range. | |
// undefined is handled specially as per ECMA-262 6th Edition, | |
// Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. | |
if (start === undefined || start < 0) { | |
start = 0 | |
} | |
// Return early if start > this.length. Done here to prevent potential uint32 | |
// coercion fail below. | |
if (start > this.length) { | |
return '' | |
} | |
if (end === undefined || end > this.length) { | |
end = this.length | |
} | |
if (end <= 0) { | |
return '' | |
} | |
// Force coersion to uint32. This will also coerce falsey/NaN values to 0. | |
end >>>= 0 | |
start >>>= 0 | |
if (end <= start) { | |
return '' | |
} | |
if (!encoding) encoding = 'utf8' | |
while (true) { | |
switch (encoding) { | |
case 'hex': | |
return hexSlice(this, start, end) | |
case 'utf8': | |
case 'utf-8': | |
return utf8Slice(this, start, end) | |
case 'ascii': | |
return asciiSlice(this, start, end) | |
case 'latin1': | |
case 'binary': | |
return latin1Slice(this, start, end) | |
case 'base64': | |
return base64Slice(this, start, end) | |
case 'ucs2': | |
case 'ucs-2': | |
case 'utf16le': | |
case 'utf-16le': | |
return utf16leSlice(this, start, end) | |
default: | |
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) | |
encoding = (encoding + '').toLowerCase() | |
loweredCase = true | |
} | |
} | |
} | |
// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) | |
// to detect a Buffer instance. It's not possible to use `instanceof Buffer` | |
// reliably in a browserify context because there could be multiple different | |
// copies of the 'buffer' package in use. This method works even for Buffer | |
// instances that were created from another copy of the `buffer` package. | |
// See: https://github.com/feross/buffer/issues/154 | |
Buffer.prototype._isBuffer = true | |
function swap (b, n, m) { | |
var i = b[n] | |
b[n] = b[m] | |
b[m] = i | |
} | |
Buffer.prototype.swap16 = function swap16 () { | |
var len = this.length | |
if (len % 2 !== 0) { | |
throw new RangeError('Buffer size must be a multiple of 16-bits') | |
} | |
for (var i = 0; i < len; i += 2) { | |
swap(this, i, i + 1) | |
} | |
return this | |
} | |
Buffer.prototype.swap32 = function swap32 () { | |
var len = this.length | |
if (len % 4 !== 0) { | |
throw new RangeError('Buffer size must be a multiple of 32-bits') | |
} | |
for (var i = 0; i < len; i += 4) { | |
swap(this, i, i + 3) | |
swap(this, i + 1, i + 2) | |
} | |
return this | |
} | |
Buffer.prototype.swap64 = function swap64 () { | |
var len = this.length | |
if (len % 8 !== 0) { | |
throw new RangeError('Buffer size must be a multiple of 64-bits') | |
} | |
for (var i = 0; i < len; i += 8) { | |
swap(this, i, i + 7) | |
swap(this, i + 1, i + 6) | |
swap(this, i + 2, i + 5) | |
swap(this, i + 3, i + 4) | |
} | |
return this | |
} | |
Buffer.prototype.toString = function toString () { | |
var length = this.length | |
if (length === 0) return '' | |
if (arguments.length === 0) return utf8Slice(this, 0, length) | |
return slowToString.apply(this, arguments) | |
} | |
Buffer.prototype.toLocaleString = Buffer.prototype.toString | |
Buffer.prototype.equals = function equals (b) { | |
if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') | |
if (this === b) return true | |
return Buffer.compare(this, b) === 0 | |
} | |
Buffer.prototype.inspect = function inspect () { | |
var str = '' | |
var max = exports.INSPECT_MAX_BYTES | |
str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() | |
if (this.length > max) str += ' ... ' | |
return '<Buffer ' + str + '>' | |
} | |
Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { | |
if (isInstance(target, Uint8Array)) { | |
target = Buffer.from(target, target.offset, target.byteLength) | |
} | |
if (!Buffer.isBuffer(target)) { | |
throw new TypeError( | |
'The "target" argument must be one of type Buffer or Uint8Array. ' + | |
'Received type ' + (typeof target) | |
) | |
} | |
if (start === undefined) { | |
start = 0 | |
} | |
if (end === undefined) { | |
end = target ? target.length : 0 | |
} | |
if (thisStart === undefined) { | |
thisStart = 0 | |
} | |
if (thisEnd === undefined) { | |
thisEnd = this.length | |
} | |
if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { | |
throw new RangeError('out of range index') | |
} | |
if (thisStart >= thisEnd && start >= end) { | |
return 0 | |
} | |
if (thisStart >= thisEnd) { | |
return -1 | |
} | |
if (start >= end) { | |
return 1 | |
} | |
start >>>= 0 | |
end >>>= 0 | |
thisStart >>>= 0 | |
thisEnd >>>= 0 | |
if (this === target) return 0 | |
var x = thisEnd - thisStart | |
var y = end - start | |
var len = Math.min(x, y) | |
var thisCopy = this.slice(thisStart, thisEnd) | |
var targetCopy = target.slice(start, end) | |
for (var i = 0; i < len; ++i) { | |
if (thisCopy[i] !== targetCopy[i]) { | |
x = thisCopy[i] | |
y = targetCopy[i] | |
break | |
} | |
} | |
if (x < y) return -1 | |
if (y < x) return 1 | |
return 0 | |
} | |
// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, | |
// OR the last index of `val` in `buffer` at offset <= `byteOffset`. | |
// | |
// Arguments: | |
// - buffer - a Buffer to search | |
// - val - a string, Buffer, or number | |
// - byteOffset - an index into `buffer`; will be clamped to an int32 | |
// - encoding - an optional encoding, relevant is val is a string | |
// - dir - true for indexOf, false for lastIndexOf | |
function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { | |
// Empty buffer means no match | |
if (buffer.length === 0) return -1 | |
// Normalize byteOffset | |
if (typeof byteOffset === 'string') { | |
encoding = byteOffset | |
byteOffset = 0 | |
} else if (byteOffset > 0x7fffffff) { | |
byteOffset = 0x7fffffff | |
} else if (byteOffset < -0x80000000) { | |
byteOffset = -0x80000000 | |
} | |
byteOffset = +byteOffset // Coerce to Number. | |
if (numberIsNaN(byteOffset)) { | |
// byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer | |
byteOffset = dir ? 0 : (buffer.length - 1) | |
} | |
// Normalize byteOffset: negative offsets start from the end of the buffer | |
if (byteOffset < 0) byteOffset = buffer.length + byteOffset | |
if (byteOffset >= buffer.length) { | |
if (dir) return -1 | |
else byteOffset = buffer.length - 1 | |
} else if (byteOffset < 0) { | |
if (dir) byteOffset = 0 | |
else return -1 | |
} | |
// Normalize val | |
if (typeof val === 'string') { | |
val = Buffer.from(val, encoding) | |
} | |
// Finally, search either indexOf (if dir is true) or lastIndexOf | |
if (Buffer.isBuffer(val)) { | |
// Special case: looking for empty string/buffer always fails | |
if (val.length === 0) { | |
return -1 | |
} | |
return arrayIndexOf(buffer, val, byteOffset, encoding, dir) | |
} else if (typeof val === 'number') { | |
val = val & 0xFF // Search for a byte value [0-255] | |
if (typeof Uint8Array.prototype.indexOf === 'function') { | |
if (dir) { | |
return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) | |
} else { | |
return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) | |
} | |
} | |
return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) | |
} | |
throw new TypeError('val must be string, number or Buffer') | |
} | |
function arrayIndexOf (arr, val, byteOffset, encoding, dir) { | |
var indexSize = 1 | |
var arrLength = arr.length | |
var valLength = val.length | |
if (encoding !== undefined) { | |
encoding = String(encoding).toLowerCase() | |
if (encoding === 'ucs2' || encoding === 'ucs-2' || | |
encoding === 'utf16le' || encoding === 'utf-16le') { | |
if (arr.length < 2 || val.length < 2) { | |
return -1 | |
} | |
indexSize = 2 | |
arrLength /= 2 | |
valLength /= 2 | |
byteOffset /= 2 | |
} | |
} | |
function read (buf, i) { | |
if (indexSize === 1) { | |
return buf[i] | |
} else { | |
return buf.readUInt16BE(i * indexSize) | |
} | |
} | |
var i | |
if (dir) { | |
var foundIndex = -1 | |
for (i = byteOffset; i < arrLength; i++) { | |
if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { | |
if (foundIndex === -1) foundIndex = i | |
if (i - foundIndex + 1 === valLength) return foundIndex * indexSize | |
} else { | |
if (foundIndex !== -1) i -= i - foundIndex | |
foundIndex = -1 | |
} | |
} | |
} else { | |
if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength | |
for (i = byteOffset; i >= 0; i--) { | |
var found = true | |
for (var j = 0; j < valLength; j++) { | |
if (read(arr, i + j) !== read(val, j)) { | |
found = false | |
break | |
} | |
} | |
if (found) return i | |
} | |
} | |
return -1 | |
} | |
Buffer.prototype.includes = function includes (val, byteOffset, encoding) { | |
return this.indexOf(val, byteOffset, encoding) !== -1 | |
} | |
Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { | |
return bidirectionalIndexOf(this, val, byteOffset, encoding, true) | |
} | |
Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { | |
return bidirectionalIndexOf(this, val, byteOffset, encoding, false) | |
} | |
function hexWrite (buf, string, offset, length) { | |
offset = Number(offset) || 0 | |
var remaining = buf.length - offset | |
if (!length) { | |
length = remaining | |
} else { | |
length = Number(length) | |
if (length > remaining) { | |
length = remaining | |
} | |
} | |
var strLen = string.length | |
if (length > strLen / 2) { | |
length = strLen / 2 | |
} | |
for (var i = 0; i < length; ++i) { | |
var parsed = parseInt(string.substr(i * 2, 2), 16) | |
if (numberIsNaN(parsed)) return i | |
buf[offset + i] = parsed | |
} | |
return i | |
} | |
function utf8Write (buf, string, offset, length) { | |
return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) | |
} | |
function asciiWrite (buf, string, offset, length) { | |
return blitBuffer(asciiToBytes(string), buf, offset, length) | |
} | |
function latin1Write (buf, string, offset, length) { | |
return asciiWrite(buf, string, offset, length) | |
} | |
function base64Write (buf, string, offset, length) { | |
return blitBuffer(base64ToBytes(string), buf, offset, length) | |
} | |
function ucs2Write (buf, string, offset, length) { | |
return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) | |
} | |
Buffer.prototype.write = function write (string, offset, length, encoding) { | |
// Buffer#write(string) | |
if (offset === undefined) { | |
encoding = 'utf8' | |
length = this.length | |
offset = 0 | |
// Buffer#write(string, encoding) | |
} else if (length === undefined && typeof offset === 'string') { | |
encoding = offset | |
length = this.length | |
offset = 0 | |
// Buffer#write(string, offset[, length][, encoding]) | |
} else if (isFinite(offset)) { | |
offset = offset >>> 0 | |
if (isFinite(length)) { | |
length = length >>> 0 | |
if (encoding === undefined) encoding = 'utf8' | |
} else { | |
encoding = length | |
length = undefined | |
} | |
} else { | |
throw new Error( | |
'Buffer.write(string, encoding, offset[, length]) is no longer supported' | |
) | |
} | |
var remaining = this.length - offset | |
if (length === undefined || length > remaining) length = remaining | |
if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { | |
throw new RangeError('Attempt to write outside buffer bounds') | |
} | |
if (!encoding) encoding = 'utf8' | |
var loweredCase = false | |
for (;;) { | |
switch (encoding) { | |
case 'hex': | |
return hexWrite(this, string, offset, length) | |
case 'utf8': | |
case 'utf-8': | |
return utf8Write(this, string, offset, length) | |
case 'ascii': | |
return asciiWrite(this, string, offset, length) | |
case 'latin1': | |
case 'binary': | |
return latin1Write(this, string, offset, length) | |
case 'base64': | |
// Warning: maxLength not taken into account in base64Write | |
return base64Write(this, string, offset, length) | |
case 'ucs2': | |
case 'ucs-2': | |
case 'utf16le': | |
case 'utf-16le': | |
return ucs2Write(this, string, offset, length) | |
default: | |
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) | |
encoding = ('' + encoding).toLowerCase() | |
loweredCase = true | |
} | |
} | |
} | |
Buffer.prototype.toJSON = function toJSON () { | |
return { | |
type: 'Buffer', | |
data: Array.prototype.slice.call(this._arr || this, 0) | |
} | |
} | |
function base64Slice (buf, start, end) { | |
if (start === 0 && end === buf.length) { | |
return base64.fromByteArray(buf) | |
} else { | |
return base64.fromByteArray(buf.slice(start, end)) | |
} | |
} | |
function utf8Slice (buf, start, end) { | |
end = Math.min(buf.length, end) | |
var res = [] | |
var i = start | |
while (i < end) { | |
var firstByte = buf[i] | |
var codePoint = null | |
var bytesPerSequence = (firstByte > 0xEF) ? 4 | |
: (firstByte > 0xDF) ? 3 | |
: (firstByte > 0xBF) ? 2 | |
: 1 | |
if (i + bytesPerSequence <= end) { | |
var secondByte, thirdByte, fourthByte, tempCodePoint | |
switch (bytesPerSequence) { | |
case 1: | |
if (firstByte < 0x80) { | |
codePoint = firstByte | |
} | |
break | |
case 2: | |
secondByte = buf[i + 1] | |
if ((secondByte & 0xC0) === 0x80) { | |
tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) | |
if (tempCodePoint > 0x7F) { | |
codePoint = tempCodePoint | |
} | |
} | |
break | |
case 3: | |
secondByte = buf[i + 1] | |
thirdByte = buf[i + 2] | |
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { | |
tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) | |
if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { | |
codePoint = tempCodePoint | |
} | |
} | |
break | |
case 4: | |
secondByte = buf[i + 1] | |
thirdByte = buf[i + 2] | |
fourthByte = buf[i + 3] | |
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { | |
tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) | |
if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { | |
codePoint = tempCodePoint | |
} | |
} | |
} | |
} | |
if (codePoint === null) { | |
// we did not generate a valid codePoint so insert a | |
// replacement char (U+FFFD) and advance only 1 byte | |
codePoint = 0xFFFD | |
bytesPerSequence = 1 | |
} else if (codePoint > 0xFFFF) { | |
// encode to utf16 (surrogate pair dance) | |
codePoint -= 0x10000 | |
res.push(codePoint >>> 10 & 0x3FF | 0xD800) | |
codePoint = 0xDC00 | codePoint & 0x3FF | |
} | |
res.push(codePoint) | |
i += bytesPerSequence | |
} | |
return decodeCodePointsArray(res) | |
} | |
// Based on http://stackoverflow.com/a/22747272/680742, the browser with | |
// the lowest limit is Chrome, with 0x10000 args. | |
// We go 1 magnitude less, for safety | |
var MAX_ARGUMENTS_LENGTH = 0x1000 | |
function decodeCodePointsArray (codePoints) { | |
var len = codePoints.length | |
if (len <= MAX_ARGUMENTS_LENGTH) { | |
return String.fromCharCode.apply(String, codePoints) // avoid extra slice() | |
} | |
// Decode in chunks to avoid "call stack size exceeded". | |
var res = '' | |
var i = 0 | |
while (i < len) { | |
res += String.fromCharCode.apply( | |
String, | |
codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) | |
) | |
} | |
return res | |
} | |
function asciiSlice (buf, start, end) { | |
var ret = '' | |
end = Math.min(buf.length, end) | |
for (var i = start; i < end; ++i) { | |
ret += String.fromCharCode(buf[i] & 0x7F) | |
} | |
return ret | |
} | |
function latin1Slice (buf, start, end) { | |
var ret = '' | |
end = Math.min(buf.length, end) | |
for (var i = start; i < end; ++i) { | |
ret += String.fromCharCode(buf[i]) | |
} | |
return ret | |
} | |
function hexSlice (buf, start, end) { | |
var len = buf.length | |
if (!start || start < 0) start = 0 | |
if (!end || end < 0 || end > len) end = len | |
var out = '' | |
for (var i = start; i < end; ++i) { | |
out += toHex(buf[i]) | |
} | |
return out | |
} | |
function utf16leSlice (buf, start, end) { | |
var bytes = buf.slice(start, end) | |
var res = '' | |
for (var i = 0; i < bytes.length; i += 2) { | |
res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) | |
} | |
return res | |
} | |
Buffer.prototype.slice = function slice (start, end) { | |
var len = this.length | |
start = ~~start | |
end = end === undefined ? len : ~~end | |
if (start < 0) { | |
start += len | |
if (start < 0) start = 0 | |
} else if (start > len) { | |
start = len | |
} | |
if (end < 0) { | |
end += len | |
if (end < 0) end = 0 | |
} else if (end > len) { | |
end = len | |
} | |
if (end < start) end = start | |
var newBuf = this.subarray(start, end) | |
// Return an augmented `Uint8Array` instance | |
newBuf.__proto__ = Buffer.prototype | |
return newBuf | |
} | |
/* | |
* Need to make sure that buffer isn't trying to write out of bounds. | |
*/ | |
function checkOffset (offset, ext, length) { | |
if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') | |
if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') | |
} | |
Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { | |
offset = offset >>> 0 | |
byteLength = byteLength >>> 0 | |
if (!noAssert) checkOffset(offset, byteLength, this.length) | |
var val = this[offset] | |
var mul = 1 | |
var i = 0 | |
while (++i < byteLength && (mul *= 0x100)) { | |
val += this[offset + i] * mul | |
} | |
return val | |
} | |
Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { | |
offset = offset >>> 0 | |
byteLength = byteLength >>> 0 | |
if (!noAssert) { | |
checkOffset(offset, byteLength, this.length) | |
} | |
var val = this[offset + --byteLength] | |
var mul = 1 | |
while (byteLength > 0 && (mul *= 0x100)) { | |
val += this[offset + --byteLength] * mul | |
} | |
return val | |
} | |
Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 1, this.length) | |
return this[offset] | |
} | |
Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 2, this.length) | |
return this[offset] | (this[offset + 1] << 8) | |
} | |
Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 2, this.length) | |
return (this[offset] << 8) | this[offset + 1] | |
} | |
Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 4, this.length) | |
return ((this[offset]) | | |
(this[offset + 1] << 8) | | |
(this[offset + 2] << 16)) + | |
(this[offset + 3] * 0x1000000) | |
} | |
Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 4, this.length) | |
return (this[offset] * 0x1000000) + | |
((this[offset + 1] << 16) | | |
(this[offset + 2] << 8) | | |
this[offset + 3]) | |
} | |
Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { | |
offset = offset >>> 0 | |
byteLength = byteLength >>> 0 | |
if (!noAssert) checkOffset(offset, byteLength, this.length) | |
var val = this[offset] | |
var mul = 1 | |
var i = 0 | |
while (++i < byteLength && (mul *= 0x100)) { | |
val += this[offset + i] * mul | |
} | |
mul *= 0x80 | |
if (val >= mul) val -= Math.pow(2, 8 * byteLength) | |
return val | |
} | |
Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { | |
offset = offset >>> 0 | |
byteLength = byteLength >>> 0 | |
if (!noAssert) checkOffset(offset, byteLength, this.length) | |
var i = byteLength | |
var mul = 1 | |
var val = this[offset + --i] | |
while (i > 0 && (mul *= 0x100)) { | |
val += this[offset + --i] * mul | |
} | |
mul *= 0x80 | |
if (val >= mul) val -= Math.pow(2, 8 * byteLength) | |
return val | |
} | |
Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 1, this.length) | |
if (!(this[offset] & 0x80)) return (this[offset]) | |
return ((0xff - this[offset] + 1) * -1) | |
} | |
Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 2, this.length) | |
var val = this[offset] | (this[offset + 1] << 8) | |
return (val & 0x8000) ? val | 0xFFFF0000 : val | |
} | |
Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 2, this.length) | |
var val = this[offset + 1] | (this[offset] << 8) | |
return (val & 0x8000) ? val | 0xFFFF0000 : val | |
} | |
Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 4, this.length) | |
return (this[offset]) | | |
(this[offset + 1] << 8) | | |
(this[offset + 2] << 16) | | |
(this[offset + 3] << 24) | |
} | |
Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 4, this.length) | |
return (this[offset] << 24) | | |
(this[offset + 1] << 16) | | |
(this[offset + 2] << 8) | | |
(this[offset + 3]) | |
} | |
Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 4, this.length) | |
return ieee754.read(this, offset, true, 23, 4) | |
} | |
Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 4, this.length) | |
return ieee754.read(this, offset, false, 23, 4) | |
} | |
Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 8, this.length) | |
return ieee754.read(this, offset, true, 52, 8) | |
} | |
Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { | |
offset = offset >>> 0 | |
if (!noAssert) checkOffset(offset, 8, this.length) | |
return ieee754.read(this, offset, false, 52, 8) | |
} | |
function checkInt (buf, value, offset, ext, max, min) { | |
if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') | |
if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') | |
if (offset + ext > buf.length) throw new RangeError('Index out of range') | |
} | |
Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
byteLength = byteLength >>> 0 | |
if (!noAssert) { | |
var maxBytes = Math.pow(2, 8 * byteLength) - 1 | |
checkInt(this, value, offset, byteLength, maxBytes, 0) | |
} | |
var mul = 1 | |
var i = 0 | |
this[offset] = value & 0xFF | |
while (++i < byteLength && (mul *= 0x100)) { | |
this[offset + i] = (value / mul) & 0xFF | |
} | |
return offset + byteLength | |
} | |
Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
byteLength = byteLength >>> 0 | |
if (!noAssert) { | |
var maxBytes = Math.pow(2, 8 * byteLength) - 1 | |
checkInt(this, value, offset, byteLength, maxBytes, 0) | |
} | |
var i = byteLength - 1 | |
var mul = 1 | |
this[offset + i] = value & 0xFF | |
while (--i >= 0 && (mul *= 0x100)) { | |
this[offset + i] = (value / mul) & 0xFF | |
} | |
return offset + byteLength | |
} | |
Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) | |
this[offset] = (value & 0xff) | |
return offset + 1 | |
} | |
Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) | |
this[offset] = (value & 0xff) | |
this[offset + 1] = (value >>> 8) | |
return offset + 2 | |
} | |
Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) | |
this[offset] = (value >>> 8) | |
this[offset + 1] = (value & 0xff) | |
return offset + 2 | |
} | |
Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) | |
this[offset + 3] = (value >>> 24) | |
this[offset + 2] = (value >>> 16) | |
this[offset + 1] = (value >>> 8) | |
this[offset] = (value & 0xff) | |
return offset + 4 | |
} | |
Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) | |
this[offset] = (value >>> 24) | |
this[offset + 1] = (value >>> 16) | |
this[offset + 2] = (value >>> 8) | |
this[offset + 3] = (value & 0xff) | |
return offset + 4 | |
} | |
Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) { | |
var limit = Math.pow(2, (8 * byteLength) - 1) | |
checkInt(this, value, offset, byteLength, limit - 1, -limit) | |
} | |
var i = 0 | |
var mul = 1 | |
var sub = 0 | |
this[offset] = value & 0xFF | |
while (++i < byteLength && (mul *= 0x100)) { | |
if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { | |
sub = 1 | |
} | |
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF | |
} | |
return offset + byteLength | |
} | |
Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) { | |
var limit = Math.pow(2, (8 * byteLength) - 1) | |
checkInt(this, value, offset, byteLength, limit - 1, -limit) | |
} | |
var i = byteLength - 1 | |
var mul = 1 | |
var sub = 0 | |
this[offset + i] = value & 0xFF | |
while (--i >= 0 && (mul *= 0x100)) { | |
if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { | |
sub = 1 | |
} | |
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF | |
} | |
return offset + byteLength | |
} | |
Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) | |
if (value < 0) value = 0xff + value + 1 | |
this[offset] = (value & 0xff) | |
return offset + 1 | |
} | |
Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) | |
this[offset] = (value & 0xff) | |
this[offset + 1] = (value >>> 8) | |
return offset + 2 | |
} | |
Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) | |
this[offset] = (value >>> 8) | |
this[offset + 1] = (value & 0xff) | |
return offset + 2 | |
} | |
Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) | |
this[offset] = (value & 0xff) | |
this[offset + 1] = (value >>> 8) | |
this[offset + 2] = (value >>> 16) | |
this[offset + 3] = (value >>> 24) | |
return offset + 4 | |
} | |
Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) | |
if (value < 0) value = 0xffffffff + value + 1 | |
this[offset] = (value >>> 24) | |
this[offset + 1] = (value >>> 16) | |
this[offset + 2] = (value >>> 8) | |
this[offset + 3] = (value & 0xff) | |
return offset + 4 | |
} | |
function checkIEEE754 (buf, value, offset, ext, max, min) { | |
if (offset + ext > buf.length) throw new RangeError('Index out of range') | |
if (offset < 0) throw new RangeError('Index out of range') | |
} | |
function writeFloat (buf, value, offset, littleEndian, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) { | |
checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) | |
} | |
ieee754.write(buf, value, offset, littleEndian, 23, 4) | |
return offset + 4 | |
} | |
Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { | |
return writeFloat(this, value, offset, true, noAssert) | |
} | |
Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { | |
return writeFloat(this, value, offset, false, noAssert) | |
} | |
function writeDouble (buf, value, offset, littleEndian, noAssert) { | |
value = +value | |
offset = offset >>> 0 | |
if (!noAssert) { | |
checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) | |
} | |
ieee754.write(buf, value, offset, littleEndian, 52, 8) | |
return offset + 8 | |
} | |
Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { | |
return writeDouble(this, value, offset, true, noAssert) | |
} | |
Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { | |
return writeDouble(this, value, offset, false, noAssert) | |
} | |
// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) | |
Buffer.prototype.copy = function copy (target, targetStart, start, end) { | |
if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') | |
if (!start) start = 0 | |
if (!end && end !== 0) end = this.length | |
if (targetStart >= target.length) targetStart = target.length | |
if (!targetStart) targetStart = 0 | |
if (end > 0 && end < start) end = start | |
// Copy 0 bytes; we're done | |
if (end === start) return 0 | |
if (target.length === 0 || this.length === 0) return 0 | |
// Fatal error conditions | |
if (targetStart < 0) { | |
throw new RangeError('targetStart out of bounds') | |
} | |
if (start < 0 || start >= this.length) throw new RangeError('Index out of range') | |
if (end < 0) throw new RangeError('sourceEnd out of bounds') | |
// Are we oob? | |
if (end > this.length) end = this.length | |
if (target.length - targetStart < end - start) { | |
end = target.length - targetStart + start | |
} | |
var len = end - start | |
if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { | |
// Use built-in when available, missing from IE11 | |
this.copyWithin(targetStart, start, end) | |
} else if (this === target && start < targetStart && targetStart < end) { | |
// descending copy from end | |
for (var i = len - 1; i >= 0; --i) { | |
target[i + targetStart] = this[i + start] | |
} | |
} else { | |
Uint8Array.prototype.set.call( | |
target, | |
this.subarray(start, end), | |
targetStart | |
) | |
} | |
return len | |
} | |
// Usage: | |
// buffer.fill(number[, offset[, end]]) | |
// buffer.fill(buffer[, offset[, end]]) | |
// buffer.fill(string[, offset[, end]][, encoding]) | |
Buffer.prototype.fill = function fill (val, start, end, encoding) { | |
// Handle string cases: | |
if (typeof val === 'string') { | |
if (typeof start === 'string') { | |
encoding = start | |
start = 0 | |
end = this.length | |
} else if (typeof end === 'string') { | |
encoding = end | |
end = this.length | |
} | |
if (encoding !== undefined && typeof encoding !== 'string') { | |
throw new TypeError('encoding must be a string') | |
} | |
if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { | |
throw new TypeError('Unknown encoding: ' + encoding) | |
} | |
if (val.length === 1) { | |
var code = val.charCodeAt(0) | |
if ((encoding === 'utf8' && code < 128) || | |
encoding === 'latin1') { | |
// Fast path: If `val` fits into a single byte, use that numeric value. | |
val = code | |
} | |
} | |
} else if (typeof val === 'number') { | |
val = val & 255 | |
} | |
// Invalid ranges are not set to a default, so can range check early. | |
if (start < 0 || this.length < start || this.length < end) { | |
throw new RangeError('Out of range index') | |
} | |
if (end <= start) { | |
return this | |
} | |
start = start >>> 0 | |
end = end === undefined ? this.length : end >>> 0 | |
if (!val) val = 0 | |
var i | |
if (typeof val === 'number') { | |
for (i = start; i < end; ++i) { | |
this[i] = val | |
} | |
} else { | |
var bytes = Buffer.isBuffer(val) | |
? val | |
: Buffer.from(val, encoding) | |
var len = bytes.length | |
if (len === 0) { | |
throw new TypeError('The value "' + val + | |
'" is invalid for argument "value"') | |
} | |
for (i = 0; i < end - start; ++i) { | |
this[i + start] = bytes[i % len] | |
} | |
} | |
return this | |
} | |
// HELPER FUNCTIONS | |
// ================ | |
var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g | |
function base64clean (str) { | |
// Node takes equal signs as end of the Base64 encoding | |
str = str.split('=')[0] | |
// Node strips out invalid characters like \n and \t from the string, base64-js does not | |
str = str.trim().replace(INVALID_BASE64_RE, '') | |
// Node converts strings with length < 2 to '' | |
if (str.length < 2) return '' | |
// Node allows for non-padded base64 strings (missing trailing ===), base64-js does not | |
while (str.length % 4 !== 0) { | |
str = str + '=' | |
} | |
return str | |
} | |
function toHex (n) { | |
if (n < 16) return '0' + n.toString(16) | |
return n.toString(16) | |
} | |
function utf8ToBytes (string, units) { | |
units = units || Infinity | |
var codePoint | |
var length = string.length | |
var leadSurrogate = null | |
var bytes = [] | |
for (var i = 0; i < length; ++i) { | |
codePoint = string.charCodeAt(i) | |
// is surrogate component | |
if (codePoint > 0xD7FF && codePoint < 0xE000) { | |
// last char was a lead | |
if (!leadSurrogate) { | |
// no lead yet | |
if (codePoint > 0xDBFF) { | |
// unexpected trail | |
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) | |
continue | |
} else if (i + 1 === length) { | |
// unpaired lead | |
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) | |
continue | |
} | |
// valid lead | |
leadSurrogate = codePoint | |
continue | |
} | |
// 2 leads in a row | |
if (codePoint < 0xDC00) { | |
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) | |
leadSurrogate = codePoint | |
continue | |
} | |
// valid surrogate pair | |
codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 | |
} else if (leadSurrogate) { | |
// valid bmp char, but last char was a lead | |
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) | |
} | |
leadSurrogate = null | |
// encode utf8 | |
if (codePoint < 0x80) { | |
if ((units -= 1) < 0) break | |
bytes.push(codePoint) | |
} else if (codePoint < 0x800) { | |
if ((units -= 2) < 0) break | |
bytes.push( | |
codePoint >> 0x6 | 0xC0, | |
codePoint & 0x3F | 0x80 | |
) | |
} else if (codePoint < 0x10000) { | |
if ((units -= 3) < 0) break | |
bytes.push( | |
codePoint >> 0xC | 0xE0, | |
codePoint >> 0x6 & 0x3F | 0x80, | |
codePoint & 0x3F | 0x80 | |
) | |
} else if (codePoint < 0x110000) { | |
if ((units -= 4) < 0) break | |
bytes.push( | |
codePoint >> 0x12 | 0xF0, | |
codePoint >> 0xC & 0x3F | 0x80, | |
codePoint >> 0x6 & 0x3F | 0x80, | |
codePoint & 0x3F | 0x80 | |
) | |
} else { | |
throw new Error('Invalid code point') | |
} | |
} | |
return bytes | |
} | |
function asciiToBytes (str) { | |
var byteArray = [] | |
for (var i = 0; i < str.length; ++i) { | |
// Node's code seems to be doing this and not & 0x7F.. | |
byteArray.push(str.charCodeAt(i) & 0xFF) | |
} | |
return byteArray | |
} | |
function utf16leToBytes (str, units) { | |
var c, hi, lo | |
var byteArray = [] | |
for (var i = 0; i < str.length; ++i) { | |
if ((units -= 2) < 0) break | |
c = str.charCodeAt(i) | |
hi = c >> 8 | |
lo = c % 256 | |
byteArray.push(lo) | |
byteArray.push(hi) | |
} | |
return byteArray | |
} | |
function base64ToBytes (str) { | |
return base64.toByteArray(base64clean(str)) | |
} | |
function blitBuffer (src, dst, offset, length) { | |
for (var i = 0; i < length; ++i) { | |
if ((i + offset >= dst.length) || (i >= src.length)) break | |
dst[i + offset] = src[i] | |
} | |
return i | |
} | |
// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass | |
// the `instanceof` check but they should be treated as of that type. | |
// See: https://github.com/feross/buffer/issues/166 | |
function isInstance (obj, type) { | |
return obj instanceof type || | |
(obj != null && obj.constructor != null && obj.constructor.name != null && | |
obj.constructor.name === type.name) | |
} | |
function numberIsNaN (obj) { | |
// For IE11 support | |
return obj !== obj // eslint-disable-line no-self-compare | |
} | |
},{"base64-js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/base64-js/index.js","ieee754":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/ieee754/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/json/stringify.js":[function(_dereq_,module,exports){ | |
var core = _dereq_('../../modules/_core'); | |
var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify }); | |
module.exports = function stringify(it) { // eslint-disable-line no-unused-vars | |
return $JSON.stringify.apply($JSON, arguments); | |
}; | |
},{"../../modules/_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/assign.js":[function(_dereq_,module,exports){ | |
_dereq_('../../modules/es6.object.assign'); | |
module.exports = _dereq_('../../modules/_core').Object.assign; | |
},{"../../modules/_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","../../modules/es6.object.assign":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.assign.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/create.js":[function(_dereq_,module,exports){ | |
_dereq_('../../modules/es6.object.create'); | |
var $Object = _dereq_('../../modules/_core').Object; | |
module.exports = function create(P, D) { | |
return $Object.create(P, D); | |
}; | |
},{"../../modules/_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","../../modules/es6.object.create":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.create.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/define-property.js":[function(_dereq_,module,exports){ | |
_dereq_('../../modules/es6.object.define-property'); | |
var $Object = _dereq_('../../modules/_core').Object; | |
module.exports = function defineProperty(it, key, desc) { | |
return $Object.defineProperty(it, key, desc); | |
}; | |
},{"../../modules/_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","../../modules/es6.object.define-property":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.define-property.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/get-own-property-descriptor.js":[function(_dereq_,module,exports){ | |
_dereq_('../../modules/es6.object.get-own-property-descriptor'); | |
var $Object = _dereq_('../../modules/_core').Object; | |
module.exports = function getOwnPropertyDescriptor(it, key) { | |
return $Object.getOwnPropertyDescriptor(it, key); | |
}; | |
},{"../../modules/_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","../../modules/es6.object.get-own-property-descriptor":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/get-prototype-of.js":[function(_dereq_,module,exports){ | |
_dereq_('../../modules/es6.object.get-prototype-of'); | |
module.exports = _dereq_('../../modules/_core').Object.getPrototypeOf; | |
},{"../../modules/_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","../../modules/es6.object.get-prototype-of":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.get-prototype-of.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/object/set-prototype-of.js":[function(_dereq_,module,exports){ | |
_dereq_('../../modules/es6.object.set-prototype-of'); | |
module.exports = _dereq_('../../modules/_core').Object.setPrototypeOf; | |
},{"../../modules/_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","../../modules/es6.object.set-prototype-of":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.set-prototype-of.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/promise.js":[function(_dereq_,module,exports){ | |
_dereq_('../modules/es6.object.to-string'); | |
_dereq_('../modules/es6.string.iterator'); | |
_dereq_('../modules/web.dom.iterable'); | |
_dereq_('../modules/es6.promise'); | |
_dereq_('../modules/es7.promise.finally'); | |
_dereq_('../modules/es7.promise.try'); | |
module.exports = _dereq_('../modules/_core').Promise; | |
},{"../modules/_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","../modules/es6.object.to-string":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.to-string.js","../modules/es6.promise":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.promise.js","../modules/es6.string.iterator":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.string.iterator.js","../modules/es7.promise.finally":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es7.promise.finally.js","../modules/es7.promise.try":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es7.promise.try.js","../modules/web.dom.iterable":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/web.dom.iterable.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/symbol/index.js":[function(_dereq_,module,exports){ | |
_dereq_('../../modules/es6.symbol'); | |
_dereq_('../../modules/es6.object.to-string'); | |
_dereq_('../../modules/es7.symbol.async-iterator'); | |
_dereq_('../../modules/es7.symbol.observable'); | |
module.exports = _dereq_('../../modules/_core').Symbol; | |
},{"../../modules/_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","../../modules/es6.object.to-string":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.to-string.js","../../modules/es6.symbol":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.symbol.js","../../modules/es7.symbol.async-iterator":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","../../modules/es7.symbol.observable":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es7.symbol.observable.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/fn/symbol/iterator.js":[function(_dereq_,module,exports){ | |
_dereq_('../../modules/es6.string.iterator'); | |
_dereq_('../../modules/web.dom.iterable'); | |
module.exports = _dereq_('../../modules/_wks-ext').f('iterator'); | |
},{"../../modules/_wks-ext":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks-ext.js","../../modules/es6.string.iterator":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.string.iterator.js","../../modules/web.dom.iterable":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/web.dom.iterable.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_a-function.js":[function(_dereq_,module,exports){ | |
module.exports = function (it) { | |
if (typeof it != 'function') throw TypeError(it + ' is not a function!'); | |
return it; | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_add-to-unscopables.js":[function(_dereq_,module,exports){ | |
module.exports = function () { /* empty */ }; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-instance.js":[function(_dereq_,module,exports){ | |
module.exports = function (it, Constructor, name, forbiddenField) { | |
if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) { | |
throw TypeError(name + ': incorrect invocation!'); | |
} return it; | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-object.js":[function(_dereq_,module,exports){ | |
var isObject = _dereq_('./_is-object'); | |
module.exports = function (it) { | |
if (!isObject(it)) throw TypeError(it + ' is not an object!'); | |
return it; | |
}; | |
},{"./_is-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-object.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_array-includes.js":[function(_dereq_,module,exports){ | |
// false -> Array#indexOf | |
// true -> Array#includes | |
var toIObject = _dereq_('./_to-iobject'); | |
var toLength = _dereq_('./_to-length'); | |
var toAbsoluteIndex = _dereq_('./_to-absolute-index'); | |
module.exports = function (IS_INCLUDES) { | |
return function ($this, el, fromIndex) { | |
var O = toIObject($this); | |
var length = toLength(O.length); | |
var index = toAbsoluteIndex(fromIndex, length); | |
var value; | |
// Array#includes uses SameValueZero equality algorithm | |
// eslint-disable-next-line no-self-compare | |
if (IS_INCLUDES && el != el) while (length > index) { | |
value = O[index++]; | |
// eslint-disable-next-line no-self-compare | |
if (value != value) return true; | |
// Array#indexOf ignores holes, Array#includes - not | |
} else for (;length > index; index++) if (IS_INCLUDES || index in O) { | |
if (O[index] === el) return IS_INCLUDES || index || 0; | |
} return !IS_INCLUDES && -1; | |
}; | |
}; | |
},{"./_to-absolute-index":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-absolute-index.js","./_to-iobject":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-iobject.js","./_to-length":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-length.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_classof.js":[function(_dereq_,module,exports){ | |
// getting tag from 19.1.3.6 Object.prototype.toString() | |
var cof = _dereq_('./_cof'); | |
var TAG = _dereq_('./_wks')('toStringTag'); | |
// ES3 wrong here | |
var ARG = cof(function () { return arguments; }()) == 'Arguments'; | |
// fallback for IE11 Script Access Denied error | |
var tryGet = function (it, key) { | |
try { | |
return it[key]; | |
} catch (e) { /* empty */ } | |
}; | |
module.exports = function (it) { | |
var O, T, B; | |
return it === undefined ? 'Undefined' : it === null ? 'Null' | |
// @@toStringTag case | |
: typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T | |
// builtinTag case | |
: ARG ? cof(O) | |
// ES3 arguments fallback | |
: (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; | |
}; | |
},{"./_cof":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_cof.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_cof.js":[function(_dereq_,module,exports){ | |
var toString = {}.toString; | |
module.exports = function (it) { | |
return toString.call(it).slice(8, -1); | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js":[function(_dereq_,module,exports){ | |
var core = module.exports = { version: '2.5.3' }; | |
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_ctx.js":[function(_dereq_,module,exports){ | |
// optional / simple context binding | |
var aFunction = _dereq_('./_a-function'); | |
module.exports = function (fn, that, length) { | |
aFunction(fn); | |
if (that === undefined) return fn; | |
switch (length) { | |
case 1: return function (a) { | |
return fn.call(that, a); | |
}; | |
case 2: return function (a, b) { | |
return fn.call(that, a, b); | |
}; | |
case 3: return function (a, b, c) { | |
return fn.call(that, a, b, c); | |
}; | |
} | |
return function (/* ...args */) { | |
return fn.apply(that, arguments); | |
}; | |
}; | |
},{"./_a-function":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_a-function.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_defined.js":[function(_dereq_,module,exports){ | |
// 7.2.1 RequireObjectCoercible(argument) | |
module.exports = function (it) { | |
if (it == undefined) throw TypeError("Can't call method on " + it); | |
return it; | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_descriptors.js":[function(_dereq_,module,exports){ | |
// Thank's IE8 for his funny defineProperty | |
module.exports = !_dereq_('./_fails')(function () { | |
return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; | |
}); | |
},{"./_fails":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_fails.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_dom-create.js":[function(_dereq_,module,exports){ | |
var isObject = _dereq_('./_is-object'); | |
var document = _dereq_('./_global').document; | |
// typeof document.createElement is 'object' in old IE | |
var is = isObject(document) && isObject(document.createElement); | |
module.exports = function (it) { | |
return is ? document.createElement(it) : {}; | |
}; | |
},{"./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_is-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-object.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_enum-bug-keys.js":[function(_dereq_,module,exports){ | |
// IE 8- don't enum bug keys | |
module.exports = ( | |
'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' | |
).split(','); | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_enum-keys.js":[function(_dereq_,module,exports){ | |
// all enumerable object keys, includes symbols | |
var getKeys = _dereq_('./_object-keys'); | |
var gOPS = _dereq_('./_object-gops'); | |
var pIE = _dereq_('./_object-pie'); | |
module.exports = function (it) { | |
var result = getKeys(it); | |
var getSymbols = gOPS.f; | |
if (getSymbols) { | |
var symbols = getSymbols(it); | |
var isEnum = pIE.f; | |
var i = 0; | |
var key; | |
while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); | |
} return result; | |
}; | |
},{"./_object-gops":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gops.js","./_object-keys":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-keys.js","./_object-pie":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-pie.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js":[function(_dereq_,module,exports){ | |
var global = _dereq_('./_global'); | |
var core = _dereq_('./_core'); | |
var ctx = _dereq_('./_ctx'); | |
var hide = _dereq_('./_hide'); | |
var PROTOTYPE = 'prototype'; | |
var $export = function (type, name, source) { | |
var IS_FORCED = type & $export.F; | |
var IS_GLOBAL = type & $export.G; | |
var IS_STATIC = type & $export.S; | |
var IS_PROTO = type & $export.P; | |
var IS_BIND = type & $export.B; | |
var IS_WRAP = type & $export.W; | |
var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); | |
var expProto = exports[PROTOTYPE]; | |
var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; | |
var key, own, out; | |
if (IS_GLOBAL) source = name; | |
for (key in source) { | |
// contains in native | |
own = !IS_FORCED && target && target[key] !== undefined; | |
if (own && key in exports) continue; | |
// export native or passed | |
out = own ? target[key] : source[key]; | |
// prevent global pollution for namespaces | |
exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] | |
// bind timers to global for call from export context | |
: IS_BIND && own ? ctx(out, global) | |
// wrap global constructors for prevent change them in library | |
: IS_WRAP && target[key] == out ? (function (C) { | |
var F = function (a, b, c) { | |
if (this instanceof C) { | |
switch (arguments.length) { | |
case 0: return new C(); | |
case 1: return new C(a); | |
case 2: return new C(a, b); | |
} return new C(a, b, c); | |
} return C.apply(this, arguments); | |
}; | |
F[PROTOTYPE] = C[PROTOTYPE]; | |
return F; | |
// make static versions for prototype methods | |
})(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; | |
// export proto methods to core.%CONSTRUCTOR%.methods.%NAME% | |
if (IS_PROTO) { | |
(exports.virtual || (exports.virtual = {}))[key] = out; | |
// export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% | |
if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); | |
} | |
} | |
}; | |
// type bitmap | |
$export.F = 1; // forced | |
$export.G = 2; // global | |
$export.S = 4; // static | |
$export.P = 8; // proto | |
$export.B = 16; // bind | |
$export.W = 32; // wrap | |
$export.U = 64; // safe | |
$export.R = 128; // real proto method for `library` | |
module.exports = $export; | |
},{"./_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","./_ctx":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_ctx.js","./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_hide":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_hide.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_fails.js":[function(_dereq_,module,exports){ | |
module.exports = function (exec) { | |
try { | |
return !!exec(); | |
} catch (e) { | |
return true; | |
} | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_for-of.js":[function(_dereq_,module,exports){ | |
var ctx = _dereq_('./_ctx'); | |
var call = _dereq_('./_iter-call'); | |
var isArrayIter = _dereq_('./_is-array-iter'); | |
var anObject = _dereq_('./_an-object'); | |
var toLength = _dereq_('./_to-length'); | |
var getIterFn = _dereq_('./core.get-iterator-method'); | |
var BREAK = {}; | |
var RETURN = {}; | |
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { | |
var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); | |
var f = ctx(fn, that, entries ? 2 : 1); | |
var index = 0; | |
var length, step, iterator, result; | |
if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); | |
// fast case for arrays with default iterator | |
if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { | |
result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); | |
if (result === BREAK || result === RETURN) return result; | |
} else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { | |
result = call(iterator, f, step.value, entries); | |
if (result === BREAK || result === RETURN) return result; | |
} | |
}; | |
exports.BREAK = BREAK; | |
exports.RETURN = RETURN; | |
},{"./_an-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-object.js","./_ctx":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_ctx.js","./_is-array-iter":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-array-iter.js","./_iter-call":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-call.js","./_to-length":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-length.js","./core.get-iterator-method":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/core.get-iterator-method.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js":[function(_dereq_,module,exports){ | |
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 | |
var global = module.exports = typeof window != 'undefined' && window.Math == Math | |
? window : typeof self != 'undefined' && self.Math == Math ? self | |
// eslint-disable-next-line no-new-func | |
: Function('return this')(); | |
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_has.js":[function(_dereq_,module,exports){ | |
var hasOwnProperty = {}.hasOwnProperty; | |
module.exports = function (it, key) { | |
return hasOwnProperty.call(it, key); | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_hide.js":[function(_dereq_,module,exports){ | |
var dP = _dereq_('./_object-dp'); | |
var createDesc = _dereq_('./_property-desc'); | |
module.exports = _dereq_('./_descriptors') ? function (object, key, value) { | |
return dP.f(object, key, createDesc(1, value)); | |
} : function (object, key, value) { | |
object[key] = value; | |
return object; | |
}; | |
},{"./_descriptors":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_descriptors.js","./_object-dp":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dp.js","./_property-desc":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_property-desc.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_html.js":[function(_dereq_,module,exports){ | |
var document = _dereq_('./_global').document; | |
module.exports = document && document.documentElement; | |
},{"./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_ie8-dom-define.js":[function(_dereq_,module,exports){ | |
module.exports = !_dereq_('./_descriptors') && !_dereq_('./_fails')(function () { | |
return Object.defineProperty(_dereq_('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7; | |
}); | |
},{"./_descriptors":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_descriptors.js","./_dom-create":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_dom-create.js","./_fails":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_fails.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_invoke.js":[function(_dereq_,module,exports){ | |
// fast apply, http://jsperf.lnkit.com/fast-apply/5 | |
module.exports = function (fn, args, that) { | |
var un = that === undefined; | |
switch (args.length) { | |
case 0: return un ? fn() | |
: fn.call(that); | |
case 1: return un ? fn(args[0]) | |
: fn.call(that, args[0]); | |
case 2: return un ? fn(args[0], args[1]) | |
: fn.call(that, args[0], args[1]); | |
case 3: return un ? fn(args[0], args[1], args[2]) | |
: fn.call(that, args[0], args[1], args[2]); | |
case 4: return un ? fn(args[0], args[1], args[2], args[3]) | |
: fn.call(that, args[0], args[1], args[2], args[3]); | |
} return fn.apply(that, args); | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iobject.js":[function(_dereq_,module,exports){ | |
// fallback for non-array-like ES3 and non-enumerable old V8 strings | |
var cof = _dereq_('./_cof'); | |
// eslint-disable-next-line no-prototype-builtins | |
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { | |
return cof(it) == 'String' ? it.split('') : Object(it); | |
}; | |
},{"./_cof":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_cof.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-array-iter.js":[function(_dereq_,module,exports){ | |
// check on default Array iterator | |
var Iterators = _dereq_('./_iterators'); | |
var ITERATOR = _dereq_('./_wks')('iterator'); | |
var ArrayProto = Array.prototype; | |
module.exports = function (it) { | |
return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); | |
}; | |
},{"./_iterators":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iterators.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-array.js":[function(_dereq_,module,exports){ | |
// 7.2.2 IsArray(argument) | |
var cof = _dereq_('./_cof'); | |
module.exports = Array.isArray || function isArray(arg) { | |
return cof(arg) == 'Array'; | |
}; | |
},{"./_cof":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_cof.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-object.js":[function(_dereq_,module,exports){ | |
module.exports = function (it) { | |
return typeof it === 'object' ? it !== null : typeof it === 'function'; | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-call.js":[function(_dereq_,module,exports){ | |
// call something on iterator step with safe closing on error | |
var anObject = _dereq_('./_an-object'); | |
module.exports = function (iterator, fn, value, entries) { | |
try { | |
return entries ? fn(anObject(value)[0], value[1]) : fn(value); | |
// 7.4.6 IteratorClose(iterator, completion) | |
} catch (e) { | |
var ret = iterator['return']; | |
if (ret !== undefined) anObject(ret.call(iterator)); | |
throw e; | |
} | |
}; | |
},{"./_an-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-object.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-create.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var create = _dereq_('./_object-create'); | |
var descriptor = _dereq_('./_property-desc'); | |
var setToStringTag = _dereq_('./_set-to-string-tag'); | |
var IteratorPrototype = {}; | |
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() | |
_dereq_('./_hide')(IteratorPrototype, _dereq_('./_wks')('iterator'), function () { return this; }); | |
module.exports = function (Constructor, NAME, next) { | |
Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); | |
setToStringTag(Constructor, NAME + ' Iterator'); | |
}; | |
},{"./_hide":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_hide.js","./_object-create":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-create.js","./_property-desc":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_property-desc.js","./_set-to-string-tag":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_set-to-string-tag.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-define.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var LIBRARY = _dereq_('./_library'); | |
var $export = _dereq_('./_export'); | |
var redefine = _dereq_('./_redefine'); | |
var hide = _dereq_('./_hide'); | |
var has = _dereq_('./_has'); | |
var Iterators = _dereq_('./_iterators'); | |
var $iterCreate = _dereq_('./_iter-create'); | |
var setToStringTag = _dereq_('./_set-to-string-tag'); | |
var getPrototypeOf = _dereq_('./_object-gpo'); | |
var ITERATOR = _dereq_('./_wks')('iterator'); | |
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` | |
var FF_ITERATOR = '@@iterator'; | |
var KEYS = 'keys'; | |
var VALUES = 'values'; | |
var returnThis = function () { return this; }; | |
module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { | |
$iterCreate(Constructor, NAME, next); | |
var getMethod = function (kind) { | |
if (!BUGGY && kind in proto) return proto[kind]; | |
switch (kind) { | |
case KEYS: return function keys() { return new Constructor(this, kind); }; | |
case VALUES: return function values() { return new Constructor(this, kind); }; | |
} return function entries() { return new Constructor(this, kind); }; | |
}; | |
var TAG = NAME + ' Iterator'; | |
var DEF_VALUES = DEFAULT == VALUES; | |
var VALUES_BUG = false; | |
var proto = Base.prototype; | |
var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; | |
var $default = (!BUGGY && $native) || getMethod(DEFAULT); | |
var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; | |
var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; | |
var methods, key, IteratorPrototype; | |
// Fix native | |
if ($anyNative) { | |
IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); | |
if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { | |
// Set @@toStringTag to native iterators | |
setToStringTag(IteratorPrototype, TAG, true); | |
// fix for some old engines | |
if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); | |
} | |
} | |
// fix Array#{values, @@iterator}.name in V8 / FF | |
if (DEF_VALUES && $native && $native.name !== VALUES) { | |
VALUES_BUG = true; | |
$default = function values() { return $native.call(this); }; | |
} | |
// Define iterator | |
if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { | |
hide(proto, ITERATOR, $default); | |
} | |
// Plug for library | |
Iterators[NAME] = $default; | |
Iterators[TAG] = returnThis; | |
if (DEFAULT) { | |
methods = { | |
values: DEF_VALUES ? $default : getMethod(VALUES), | |
keys: IS_SET ? $default : getMethod(KEYS), | |
entries: $entries | |
}; | |
if (FORCED) for (key in methods) { | |
if (!(key in proto)) redefine(proto, key, methods[key]); | |
} else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); | |
} | |
return methods; | |
}; | |
},{"./_export":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js","./_has":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_has.js","./_hide":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_hide.js","./_iter-create":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-create.js","./_iterators":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iterators.js","./_library":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_library.js","./_object-gpo":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gpo.js","./_redefine":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_redefine.js","./_set-to-string-tag":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_set-to-string-tag.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-detect.js":[function(_dereq_,module,exports){ | |
var ITERATOR = _dereq_('./_wks')('iterator'); | |
var SAFE_CLOSING = false; | |
try { | |
var riter = [7][ITERATOR](); | |
riter['return'] = function () { SAFE_CLOSING = true; }; | |
// eslint-disable-next-line no-throw-literal | |
Array.from(riter, function () { throw 2; }); | |
} catch (e) { /* empty */ } | |
module.exports = function (exec, skipClosing) { | |
if (!skipClosing && !SAFE_CLOSING) return false; | |
var safe = false; | |
try { | |
var arr = [7]; | |
var iter = arr[ITERATOR](); | |
iter.next = function () { return { done: safe = true }; }; | |
arr[ITERATOR] = function () { return iter; }; | |
exec(arr); | |
} catch (e) { /* empty */ } | |
return safe; | |
}; | |
},{"./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-step.js":[function(_dereq_,module,exports){ | |
module.exports = function (done, value) { | |
return { value: value, done: !!done }; | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iterators.js":[function(_dereq_,module,exports){ | |
module.exports = {}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_library.js":[function(_dereq_,module,exports){ | |
module.exports = true; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_meta.js":[function(_dereq_,module,exports){ | |
var META = _dereq_('./_uid')('meta'); | |
var isObject = _dereq_('./_is-object'); | |
var has = _dereq_('./_has'); | |
var setDesc = _dereq_('./_object-dp').f; | |
var id = 0; | |
var isExtensible = Object.isExtensible || function () { | |
return true; | |
}; | |
var FREEZE = !_dereq_('./_fails')(function () { | |
return isExtensible(Object.preventExtensions({})); | |
}); | |
var setMeta = function (it) { | |
setDesc(it, META, { value: { | |
i: 'O' + ++id, // object ID | |
w: {} // weak collections IDs | |
} }); | |
}; | |
var fastKey = function (it, create) { | |
// return primitive with prefix | |
if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; | |
if (!has(it, META)) { | |
// can't set metadata to uncaught frozen object | |
if (!isExtensible(it)) return 'F'; | |
// not necessary to add metadata | |
if (!create) return 'E'; | |
// add missing metadata | |
setMeta(it); | |
// return object ID | |
} return it[META].i; | |
}; | |
var getWeak = function (it, create) { | |
if (!has(it, META)) { | |
// can't set metadata to uncaught frozen object | |
if (!isExtensible(it)) return true; | |
// not necessary to add metadata | |
if (!create) return false; | |
// add missing metadata | |
setMeta(it); | |
// return hash weak collections IDs | |
} return it[META].w; | |
}; | |
// add metadata on freeze-family methods calling | |
var onFreeze = function (it) { | |
if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); | |
return it; | |
}; | |
var meta = module.exports = { | |
KEY: META, | |
NEED: false, | |
fastKey: fastKey, | |
getWeak: getWeak, | |
onFreeze: onFreeze | |
}; | |
},{"./_fails":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_fails.js","./_has":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_has.js","./_is-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-object.js","./_object-dp":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dp.js","./_uid":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_uid.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_microtask.js":[function(_dereq_,module,exports){ | |
var global = _dereq_('./_global'); | |
var macrotask = _dereq_('./_task').set; | |
var Observer = global.MutationObserver || global.WebKitMutationObserver; | |
var process = global.process; | |
var Promise = global.Promise; | |
var isNode = _dereq_('./_cof')(process) == 'process'; | |
module.exports = function () { | |
var head, last, notify; | |
var flush = function () { | |
var parent, fn; | |
if (isNode && (parent = process.domain)) parent.exit(); | |
while (head) { | |
fn = head.fn; | |
head = head.next; | |
try { | |
fn(); | |
} catch (e) { | |
if (head) notify(); | |
else last = undefined; | |
throw e; | |
} | |
} last = undefined; | |
if (parent) parent.enter(); | |
}; | |
// Node.js | |
if (isNode) { | |
notify = function () { | |
process.nextTick(flush); | |
}; | |
// browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 | |
} else if (Observer && !(global.navigator && global.navigator.standalone)) { | |
var toggle = true; | |
var node = document.createTextNode(''); | |
new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new | |
notify = function () { | |
node.data = toggle = !toggle; | |
}; | |
// environments with maybe non-completely correct, but existent Promise | |
} else if (Promise && Promise.resolve) { | |
var promise = Promise.resolve(); | |
notify = function () { | |
promise.then(flush); | |
}; | |
// for other environments - macrotask based on: | |
// - setImmediate | |
// - MessageChannel | |
// - window.postMessag | |
// - onreadystatechange | |
// - setTimeout | |
} else { | |
notify = function () { | |
// strange IE + webpack dev server bug - use .call(global) | |
macrotask.call(global, flush); | |
}; | |
} | |
return function (fn) { | |
var task = { fn: fn, next: undefined }; | |
if (last) last.next = task; | |
if (!head) { | |
head = task; | |
notify(); | |
} last = task; | |
}; | |
}; | |
},{"./_cof":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_cof.js","./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_task":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_task.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_new-promise-capability.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
// 25.4.1.5 NewPromiseCapability(C) | |
var aFunction = _dereq_('./_a-function'); | |
function PromiseCapability(C) { | |
var resolve, reject; | |
this.promise = new C(function ($$resolve, $$reject) { | |
if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); | |
resolve = $$resolve; | |
reject = $$reject; | |
}); | |
this.resolve = aFunction(resolve); | |
this.reject = aFunction(reject); | |
} | |
module.exports.f = function (C) { | |
return new PromiseCapability(C); | |
}; | |
},{"./_a-function":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_a-function.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-assign.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
// 19.1.2.1 Object.assign(target, source, ...) | |
var getKeys = _dereq_('./_object-keys'); | |
var gOPS = _dereq_('./_object-gops'); | |
var pIE = _dereq_('./_object-pie'); | |
var toObject = _dereq_('./_to-object'); | |
var IObject = _dereq_('./_iobject'); | |
var $assign = Object.assign; | |
// should work with symbols and should have deterministic property order (V8 bug) | |
module.exports = !$assign || _dereq_('./_fails')(function () { | |
var A = {}; | |
var B = {}; | |
// eslint-disable-next-line no-undef | |
var S = Symbol(); | |
var K = 'abcdefghijklmnopqrst'; | |
A[S] = 7; | |
K.split('').forEach(function (k) { B[k] = k; }); | |
return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; | |
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars | |
var T = toObject(target); | |
var aLen = arguments.length; | |
var index = 1; | |
var getSymbols = gOPS.f; | |
var isEnum = pIE.f; | |
while (aLen > index) { | |
var S = IObject(arguments[index++]); | |
var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); | |
var length = keys.length; | |
var j = 0; | |
var key; | |
while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key]; | |
} return T; | |
} : $assign; | |
},{"./_fails":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_fails.js","./_iobject":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iobject.js","./_object-gops":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gops.js","./_object-keys":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-keys.js","./_object-pie":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-pie.js","./_to-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-object.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-create.js":[function(_dereq_,module,exports){ | |
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) | |
var anObject = _dereq_('./_an-object'); | |
var dPs = _dereq_('./_object-dps'); | |
var enumBugKeys = _dereq_('./_enum-bug-keys'); | |
var IE_PROTO = _dereq_('./_shared-key')('IE_PROTO'); | |
var Empty = function () { /* empty */ }; | |
var PROTOTYPE = 'prototype'; | |
// Create object with fake `null` prototype: use iframe Object with cleared prototype | |
var createDict = function () { | |
// Thrash, waste and sodomy: IE GC bug | |
var iframe = _dereq_('./_dom-create')('iframe'); | |
var i = enumBugKeys.length; | |
var lt = '<'; | |
var gt = '>'; | |
var iframeDocument; | |
iframe.style.display = 'none'; | |
_dereq_('./_html').appendChild(iframe); | |
iframe.src = 'javascript:'; // eslint-disable-line no-script-url | |
// createDict = iframe.contentWindow.Object; | |
// html.removeChild(iframe); | |
iframeDocument = iframe.contentWindow.document; | |
iframeDocument.open(); | |
iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); | |
iframeDocument.close(); | |
createDict = iframeDocument.F; | |
while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; | |
return createDict(); | |
}; | |
module.exports = Object.create || function create(O, Properties) { | |
var result; | |
if (O !== null) { | |
Empty[PROTOTYPE] = anObject(O); | |
result = new Empty(); | |
Empty[PROTOTYPE] = null; | |
// add "__proto__" for Object.getPrototypeOf polyfill | |
result[IE_PROTO] = O; | |
} else result = createDict(); | |
return Properties === undefined ? result : dPs(result, Properties); | |
}; | |
},{"./_an-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-object.js","./_dom-create":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_dom-create.js","./_enum-bug-keys":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_enum-bug-keys.js","./_html":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_html.js","./_object-dps":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dps.js","./_shared-key":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_shared-key.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dp.js":[function(_dereq_,module,exports){ | |
var anObject = _dereq_('./_an-object'); | |
var IE8_DOM_DEFINE = _dereq_('./_ie8-dom-define'); | |
var toPrimitive = _dereq_('./_to-primitive'); | |
var dP = Object.defineProperty; | |
exports.f = _dereq_('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) { | |
anObject(O); | |
P = toPrimitive(P, true); | |
anObject(Attributes); | |
if (IE8_DOM_DEFINE) try { | |
return dP(O, P, Attributes); | |
} catch (e) { /* empty */ } | |
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); | |
if ('value' in Attributes) O[P] = Attributes.value; | |
return O; | |
}; | |
},{"./_an-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-object.js","./_descriptors":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_descriptors.js","./_ie8-dom-define":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_ie8-dom-define.js","./_to-primitive":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-primitive.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dps.js":[function(_dereq_,module,exports){ | |
var dP = _dereq_('./_object-dp'); | |
var anObject = _dereq_('./_an-object'); | |
var getKeys = _dereq_('./_object-keys'); | |
module.exports = _dereq_('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) { | |
anObject(O); | |
var keys = getKeys(Properties); | |
var length = keys.length; | |
var i = 0; | |
var P; | |
while (length > i) dP.f(O, P = keys[i++], Properties[P]); | |
return O; | |
}; | |
},{"./_an-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-object.js","./_descriptors":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_descriptors.js","./_object-dp":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dp.js","./_object-keys":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-keys.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gopd.js":[function(_dereq_,module,exports){ | |
var pIE = _dereq_('./_object-pie'); | |
var createDesc = _dereq_('./_property-desc'); | |
var toIObject = _dereq_('./_to-iobject'); | |
var toPrimitive = _dereq_('./_to-primitive'); | |
var has = _dereq_('./_has'); | |
var IE8_DOM_DEFINE = _dereq_('./_ie8-dom-define'); | |
var gOPD = Object.getOwnPropertyDescriptor; | |
exports.f = _dereq_('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) { | |
O = toIObject(O); | |
P = toPrimitive(P, true); | |
if (IE8_DOM_DEFINE) try { | |
return gOPD(O, P); | |
} catch (e) { /* empty */ } | |
if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); | |
}; | |
},{"./_descriptors":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_descriptors.js","./_has":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_has.js","./_ie8-dom-define":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_ie8-dom-define.js","./_object-pie":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-pie.js","./_property-desc":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_property-desc.js","./_to-iobject":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-iobject.js","./_to-primitive":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-primitive.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gopn-ext.js":[function(_dereq_,module,exports){ | |
// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window | |
var toIObject = _dereq_('./_to-iobject'); | |
var gOPN = _dereq_('./_object-gopn').f; | |
var toString = {}.toString; | |
var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames | |
? Object.getOwnPropertyNames(window) : []; | |
var getWindowNames = function (it) { | |
try { | |
return gOPN(it); | |
} catch (e) { | |
return windowNames.slice(); | |
} | |
}; | |
module.exports.f = function getOwnPropertyNames(it) { | |
return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); | |
}; | |
},{"./_object-gopn":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gopn.js","./_to-iobject":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-iobject.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gopn.js":[function(_dereq_,module,exports){ | |
// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) | |
var $keys = _dereq_('./_object-keys-internal'); | |
var hiddenKeys = _dereq_('./_enum-bug-keys').concat('length', 'prototype'); | |
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { | |
return $keys(O, hiddenKeys); | |
}; | |
},{"./_enum-bug-keys":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_enum-bug-keys.js","./_object-keys-internal":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-keys-internal.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gops.js":[function(_dereq_,module,exports){ | |
exports.f = Object.getOwnPropertySymbols; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gpo.js":[function(_dereq_,module,exports){ | |
// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) | |
var has = _dereq_('./_has'); | |
var toObject = _dereq_('./_to-object'); | |
var IE_PROTO = _dereq_('./_shared-key')('IE_PROTO'); | |
var ObjectProto = Object.prototype; | |
module.exports = Object.getPrototypeOf || function (O) { | |
O = toObject(O); | |
if (has(O, IE_PROTO)) return O[IE_PROTO]; | |
if (typeof O.constructor == 'function' && O instanceof O.constructor) { | |
return O.constructor.prototype; | |
} return O instanceof Object ? ObjectProto : null; | |
}; | |
},{"./_has":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_has.js","./_shared-key":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_shared-key.js","./_to-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-object.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-keys-internal.js":[function(_dereq_,module,exports){ | |
var has = _dereq_('./_has'); | |
var toIObject = _dereq_('./_to-iobject'); | |
var arrayIndexOf = _dereq_('./_array-includes')(false); | |
var IE_PROTO = _dereq_('./_shared-key')('IE_PROTO'); | |
module.exports = function (object, names) { | |
var O = toIObject(object); | |
var i = 0; | |
var result = []; | |
var key; | |
for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); | |
// Don't enum bug & hidden keys | |
while (names.length > i) if (has(O, key = names[i++])) { | |
~arrayIndexOf(result, key) || result.push(key); | |
} | |
return result; | |
}; | |
},{"./_array-includes":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_array-includes.js","./_has":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_has.js","./_shared-key":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_shared-key.js","./_to-iobject":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-iobject.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-keys.js":[function(_dereq_,module,exports){ | |
// 19.1.2.14 / 15.2.3.14 Object.keys(O) | |
var $keys = _dereq_('./_object-keys-internal'); | |
var enumBugKeys = _dereq_('./_enum-bug-keys'); | |
module.exports = Object.keys || function keys(O) { | |
return $keys(O, enumBugKeys); | |
}; | |
},{"./_enum-bug-keys":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_enum-bug-keys.js","./_object-keys-internal":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-keys-internal.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-pie.js":[function(_dereq_,module,exports){ | |
exports.f = {}.propertyIsEnumerable; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-sap.js":[function(_dereq_,module,exports){ | |
// most Object methods by ES6 should accept primitives | |
var $export = _dereq_('./_export'); | |
var core = _dereq_('./_core'); | |
var fails = _dereq_('./_fails'); | |
module.exports = function (KEY, exec) { | |
var fn = (core.Object || {})[KEY] || Object[KEY]; | |
var exp = {}; | |
exp[KEY] = exec(fn); | |
$export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); | |
}; | |
},{"./_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","./_export":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js","./_fails":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_fails.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_perform.js":[function(_dereq_,module,exports){ | |
module.exports = function (exec) { | |
try { | |
return { e: false, v: exec() }; | |
} catch (e) { | |
return { e: true, v: e }; | |
} | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_promise-resolve.js":[function(_dereq_,module,exports){ | |
var anObject = _dereq_('./_an-object'); | |
var isObject = _dereq_('./_is-object'); | |
var newPromiseCapability = _dereq_('./_new-promise-capability'); | |
module.exports = function (C, x) { | |
anObject(C); | |
if (isObject(x) && x.constructor === C) return x; | |
var promiseCapability = newPromiseCapability.f(C); | |
var resolve = promiseCapability.resolve; | |
resolve(x); | |
return promiseCapability.promise; | |
}; | |
},{"./_an-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-object.js","./_is-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-object.js","./_new-promise-capability":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_new-promise-capability.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_property-desc.js":[function(_dereq_,module,exports){ | |
module.exports = function (bitmap, value) { | |
return { | |
enumerable: !(bitmap & 1), | |
configurable: !(bitmap & 2), | |
writable: !(bitmap & 4), | |
value: value | |
}; | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_redefine-all.js":[function(_dereq_,module,exports){ | |
var hide = _dereq_('./_hide'); | |
module.exports = function (target, src, safe) { | |
for (var key in src) { | |
if (safe && target[key]) target[key] = src[key]; | |
else hide(target, key, src[key]); | |
} return target; | |
}; | |
},{"./_hide":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_hide.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_redefine.js":[function(_dereq_,module,exports){ | |
module.exports = _dereq_('./_hide'); | |
},{"./_hide":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_hide.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_set-proto.js":[function(_dereq_,module,exports){ | |
// Works with __proto__ only. Old v8 can't work with null proto objects. | |
/* eslint-disable no-proto */ | |
var isObject = _dereq_('./_is-object'); | |
var anObject = _dereq_('./_an-object'); | |
var check = function (O, proto) { | |
anObject(O); | |
if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); | |
}; | |
module.exports = { | |
set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line | |
function (test, buggy, set) { | |
try { | |
set = _dereq_('./_ctx')(Function.call, _dereq_('./_object-gopd').f(Object.prototype, '__proto__').set, 2); | |
set(test, []); | |
buggy = !(test instanceof Array); | |
} catch (e) { buggy = true; } | |
return function setPrototypeOf(O, proto) { | |
check(O, proto); | |
if (buggy) O.__proto__ = proto; | |
else set(O, proto); | |
return O; | |
}; | |
}({}, false) : undefined), | |
check: check | |
}; | |
},{"./_an-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-object.js","./_ctx":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_ctx.js","./_is-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-object.js","./_object-gopd":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gopd.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_set-species.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var global = _dereq_('./_global'); | |
var core = _dereq_('./_core'); | |
var dP = _dereq_('./_object-dp'); | |
var DESCRIPTORS = _dereq_('./_descriptors'); | |
var SPECIES = _dereq_('./_wks')('species'); | |
module.exports = function (KEY) { | |
var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY]; | |
if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { | |
configurable: true, | |
get: function () { return this; } | |
}); | |
}; | |
},{"./_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","./_descriptors":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_descriptors.js","./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_object-dp":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dp.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_set-to-string-tag.js":[function(_dereq_,module,exports){ | |
var def = _dereq_('./_object-dp').f; | |
var has = _dereq_('./_has'); | |
var TAG = _dereq_('./_wks')('toStringTag'); | |
module.exports = function (it, tag, stat) { | |
if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); | |
}; | |
},{"./_has":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_has.js","./_object-dp":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dp.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_shared-key.js":[function(_dereq_,module,exports){ | |
var shared = _dereq_('./_shared')('keys'); | |
var uid = _dereq_('./_uid'); | |
module.exports = function (key) { | |
return shared[key] || (shared[key] = uid(key)); | |
}; | |
},{"./_shared":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_shared.js","./_uid":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_uid.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_shared.js":[function(_dereq_,module,exports){ | |
var global = _dereq_('./_global'); | |
var SHARED = '__core-js_shared__'; | |
var store = global[SHARED] || (global[SHARED] = {}); | |
module.exports = function (key) { | |
return store[key] || (store[key] = {}); | |
}; | |
},{"./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_species-constructor.js":[function(_dereq_,module,exports){ | |
// 7.3.20 SpeciesConstructor(O, defaultConstructor) | |
var anObject = _dereq_('./_an-object'); | |
var aFunction = _dereq_('./_a-function'); | |
var SPECIES = _dereq_('./_wks')('species'); | |
module.exports = function (O, D) { | |
var C = anObject(O).constructor; | |
var S; | |
return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); | |
}; | |
},{"./_a-function":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_a-function.js","./_an-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-object.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_string-at.js":[function(_dereq_,module,exports){ | |
var toInteger = _dereq_('./_to-integer'); | |
var defined = _dereq_('./_defined'); | |
// true -> String#at | |
// false -> String#codePointAt | |
module.exports = function (TO_STRING) { | |
return function (that, pos) { | |
var s = String(defined(that)); | |
var i = toInteger(pos); | |
var l = s.length; | |
var a, b; | |
if (i < 0 || i >= l) return TO_STRING ? '' : undefined; | |
a = s.charCodeAt(i); | |
return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff | |
? TO_STRING ? s.charAt(i) : a | |
: TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; | |
}; | |
}; | |
},{"./_defined":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_defined.js","./_to-integer":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-integer.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_task.js":[function(_dereq_,module,exports){ | |
var ctx = _dereq_('./_ctx'); | |
var invoke = _dereq_('./_invoke'); | |
var html = _dereq_('./_html'); | |
var cel = _dereq_('./_dom-create'); | |
var global = _dereq_('./_global'); | |
var process = global.process; | |
var setTask = global.setImmediate; | |
var clearTask = global.clearImmediate; | |
var MessageChannel = global.MessageChannel; | |
var Dispatch = global.Dispatch; | |
var counter = 0; | |
var queue = {}; | |
var ONREADYSTATECHANGE = 'onreadystatechange'; | |
var defer, channel, port; | |
var run = function () { | |
var id = +this; | |
// eslint-disable-next-line no-prototype-builtins | |
if (queue.hasOwnProperty(id)) { | |
var fn = queue[id]; | |
delete queue[id]; | |
fn(); | |
} | |
}; | |
var listener = function (event) { | |
run.call(event.data); | |
}; | |
// Node.js 0.9+ & IE10+ has setImmediate, otherwise: | |
if (!setTask || !clearTask) { | |
setTask = function setImmediate(fn) { | |
var args = []; | |
var i = 1; | |
while (arguments.length > i) args.push(arguments[i++]); | |
queue[++counter] = function () { | |
// eslint-disable-next-line no-new-func | |
invoke(typeof fn == 'function' ? fn : Function(fn), args); | |
}; | |
defer(counter); | |
return counter; | |
}; | |
clearTask = function clearImmediate(id) { | |
delete queue[id]; | |
}; | |
// Node.js 0.8- | |
if (_dereq_('./_cof')(process) == 'process') { | |
defer = function (id) { | |
process.nextTick(ctx(run, id, 1)); | |
}; | |
// Sphere (JS game engine) Dispatch API | |
} else if (Dispatch && Dispatch.now) { | |
defer = function (id) { | |
Dispatch.now(ctx(run, id, 1)); | |
}; | |
// Browsers with MessageChannel, includes WebWorkers | |
} else if (MessageChannel) { | |
channel = new MessageChannel(); | |
port = channel.port2; | |
channel.port1.onmessage = listener; | |
defer = ctx(port.postMessage, port, 1); | |
// Browsers with postMessage, skip WebWorkers | |
// IE8 has postMessage, but it's sync & typeof its postMessage is 'object' | |
} else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { | |
defer = function (id) { | |
global.postMessage(id + '', '*'); | |
}; | |
global.addEventListener('message', listener, false); | |
// IE8- | |
} else if (ONREADYSTATECHANGE in cel('script')) { | |
defer = function (id) { | |
html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { | |
html.removeChild(this); | |
run.call(id); | |
}; | |
}; | |
// Rest old browsers | |
} else { | |
defer = function (id) { | |
setTimeout(ctx(run, id, 1), 0); | |
}; | |
} | |
} | |
module.exports = { | |
set: setTask, | |
clear: clearTask | |
}; | |
},{"./_cof":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_cof.js","./_ctx":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_ctx.js","./_dom-create":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_dom-create.js","./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_html":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_html.js","./_invoke":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_invoke.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-absolute-index.js":[function(_dereq_,module,exports){ | |
var toInteger = _dereq_('./_to-integer'); | |
var max = Math.max; | |
var min = Math.min; | |
module.exports = function (index, length) { | |
index = toInteger(index); | |
return index < 0 ? max(index + length, 0) : min(index, length); | |
}; | |
},{"./_to-integer":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-integer.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-integer.js":[function(_dereq_,module,exports){ | |
// 7.1.4 ToInteger | |
var ceil = Math.ceil; | |
var floor = Math.floor; | |
module.exports = function (it) { | |
return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-iobject.js":[function(_dereq_,module,exports){ | |
// to indexed object, toObject with fallback for non-array-like ES3 strings | |
var IObject = _dereq_('./_iobject'); | |
var defined = _dereq_('./_defined'); | |
module.exports = function (it) { | |
return IObject(defined(it)); | |
}; | |
},{"./_defined":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_defined.js","./_iobject":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iobject.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-length.js":[function(_dereq_,module,exports){ | |
// 7.1.15 ToLength | |
var toInteger = _dereq_('./_to-integer'); | |
var min = Math.min; | |
module.exports = function (it) { | |
return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 | |
}; | |
},{"./_to-integer":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-integer.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-object.js":[function(_dereq_,module,exports){ | |
// 7.1.13 ToObject(argument) | |
var defined = _dereq_('./_defined'); | |
module.exports = function (it) { | |
return Object(defined(it)); | |
}; | |
},{"./_defined":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_defined.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-primitive.js":[function(_dereq_,module,exports){ | |
// 7.1.1 ToPrimitive(input [, PreferredType]) | |
var isObject = _dereq_('./_is-object'); | |
// instead of the ES6 spec version, we didn't implement @@toPrimitive case | |
// and the second argument - flag - preferred type is a string | |
module.exports = function (it, S) { | |
if (!isObject(it)) return it; | |
var fn, val; | |
if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; | |
if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; | |
if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; | |
throw TypeError("Can't convert object to primitive value"); | |
}; | |
},{"./_is-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-object.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_uid.js":[function(_dereq_,module,exports){ | |
var id = 0; | |
var px = Math.random(); | |
module.exports = function (key) { | |
return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks-define.js":[function(_dereq_,module,exports){ | |
var global = _dereq_('./_global'); | |
var core = _dereq_('./_core'); | |
var LIBRARY = _dereq_('./_library'); | |
var wksExt = _dereq_('./_wks-ext'); | |
var defineProperty = _dereq_('./_object-dp').f; | |
module.exports = function (name) { | |
var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); | |
if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); | |
}; | |
},{"./_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_library":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_library.js","./_object-dp":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dp.js","./_wks-ext":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks-ext.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks-ext.js":[function(_dereq_,module,exports){ | |
exports.f = _dereq_('./_wks'); | |
},{"./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js":[function(_dereq_,module,exports){ | |
var store = _dereq_('./_shared')('wks'); | |
var uid = _dereq_('./_uid'); | |
var Symbol = _dereq_('./_global').Symbol; | |
var USE_SYMBOL = typeof Symbol == 'function'; | |
var $exports = module.exports = function (name) { | |
return store[name] || (store[name] = | |
USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); | |
}; | |
$exports.store = store; | |
},{"./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_shared":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_shared.js","./_uid":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_uid.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/core.get-iterator-method.js":[function(_dereq_,module,exports){ | |
var classof = _dereq_('./_classof'); | |
var ITERATOR = _dereq_('./_wks')('iterator'); | |
var Iterators = _dereq_('./_iterators'); | |
module.exports = _dereq_('./_core').getIteratorMethod = function (it) { | |
if (it != undefined) return it[ITERATOR] | |
|| it['@@iterator'] | |
|| Iterators[classof(it)]; | |
}; | |
},{"./_classof":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_classof.js","./_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","./_iterators":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iterators.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.array.iterator.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var addToUnscopables = _dereq_('./_add-to-unscopables'); | |
var step = _dereq_('./_iter-step'); | |
var Iterators = _dereq_('./_iterators'); | |
var toIObject = _dereq_('./_to-iobject'); | |
// 22.1.3.4 Array.prototype.entries() | |
// 22.1.3.13 Array.prototype.keys() | |
// 22.1.3.29 Array.prototype.values() | |
// 22.1.3.30 Array.prototype[@@iterator]() | |
module.exports = _dereq_('./_iter-define')(Array, 'Array', function (iterated, kind) { | |
this._t = toIObject(iterated); // target | |
this._i = 0; // next index | |
this._k = kind; // kind | |
// 22.1.5.2.1 %ArrayIteratorPrototype%.next() | |
}, function () { | |
var O = this._t; | |
var kind = this._k; | |
var index = this._i++; | |
if (!O || index >= O.length) { | |
this._t = undefined; | |
return step(1); | |
} | |
if (kind == 'keys') return step(0, index); | |
if (kind == 'values') return step(0, O[index]); | |
return step(0, [index, O[index]]); | |
}, 'values'); | |
// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) | |
Iterators.Arguments = Iterators.Array; | |
addToUnscopables('keys'); | |
addToUnscopables('values'); | |
addToUnscopables('entries'); | |
},{"./_add-to-unscopables":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_add-to-unscopables.js","./_iter-define":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-define.js","./_iter-step":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-step.js","./_iterators":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iterators.js","./_to-iobject":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-iobject.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.assign.js":[function(_dereq_,module,exports){ | |
// 19.1.3.1 Object.assign(target, source) | |
var $export = _dereq_('./_export'); | |
$export($export.S + $export.F, 'Object', { assign: _dereq_('./_object-assign') }); | |
},{"./_export":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js","./_object-assign":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-assign.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.create.js":[function(_dereq_,module,exports){ | |
var $export = _dereq_('./_export'); | |
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) | |
$export($export.S, 'Object', { create: _dereq_('./_object-create') }); | |
},{"./_export":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js","./_object-create":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-create.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.define-property.js":[function(_dereq_,module,exports){ | |
var $export = _dereq_('./_export'); | |
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) | |
$export($export.S + $export.F * !_dereq_('./_descriptors'), 'Object', { defineProperty: _dereq_('./_object-dp').f }); | |
},{"./_descriptors":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_descriptors.js","./_export":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js","./_object-dp":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dp.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js":[function(_dereq_,module,exports){ | |
// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) | |
var toIObject = _dereq_('./_to-iobject'); | |
var $getOwnPropertyDescriptor = _dereq_('./_object-gopd').f; | |
_dereq_('./_object-sap')('getOwnPropertyDescriptor', function () { | |
return function getOwnPropertyDescriptor(it, key) { | |
return $getOwnPropertyDescriptor(toIObject(it), key); | |
}; | |
}); | |
},{"./_object-gopd":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gopd.js","./_object-sap":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-sap.js","./_to-iobject":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-iobject.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.get-prototype-of.js":[function(_dereq_,module,exports){ | |
// 19.1.2.9 Object.getPrototypeOf(O) | |
var toObject = _dereq_('./_to-object'); | |
var $getPrototypeOf = _dereq_('./_object-gpo'); | |
_dereq_('./_object-sap')('getPrototypeOf', function () { | |
return function getPrototypeOf(it) { | |
return $getPrototypeOf(toObject(it)); | |
}; | |
}); | |
},{"./_object-gpo":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gpo.js","./_object-sap":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-sap.js","./_to-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-object.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.set-prototype-of.js":[function(_dereq_,module,exports){ | |
// 19.1.3.19 Object.setPrototypeOf(O, proto) | |
var $export = _dereq_('./_export'); | |
$export($export.S, 'Object', { setPrototypeOf: _dereq_('./_set-proto').set }); | |
},{"./_export":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js","./_set-proto":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_set-proto.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.object.to-string.js":[function(_dereq_,module,exports){ | |
arguments[4]["/Users/chenwei/Desktop/github/metamask-extension/node_modules/browser-resolve/empty.js"][0].apply(exports,arguments) | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.promise.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var LIBRARY = _dereq_('./_library'); | |
var global = _dereq_('./_global'); | |
var ctx = _dereq_('./_ctx'); | |
var classof = _dereq_('./_classof'); | |
var $export = _dereq_('./_export'); | |
var isObject = _dereq_('./_is-object'); | |
var aFunction = _dereq_('./_a-function'); | |
var anInstance = _dereq_('./_an-instance'); | |
var forOf = _dereq_('./_for-of'); | |
var speciesConstructor = _dereq_('./_species-constructor'); | |
var task = _dereq_('./_task').set; | |
var microtask = _dereq_('./_microtask')(); | |
var newPromiseCapabilityModule = _dereq_('./_new-promise-capability'); | |
var perform = _dereq_('./_perform'); | |
var promiseResolve = _dereq_('./_promise-resolve'); | |
var PROMISE = 'Promise'; | |
var TypeError = global.TypeError; | |
var process = global.process; | |
var $Promise = global[PROMISE]; | |
var isNode = classof(process) == 'process'; | |
var empty = function () { /* empty */ }; | |
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; | |
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; | |
var USE_NATIVE = !!function () { | |
try { | |
// correct subclassing with @@species support | |
var promise = $Promise.resolve(1); | |
var FakePromise = (promise.constructor = {})[_dereq_('./_wks')('species')] = function (exec) { | |
exec(empty, empty); | |
}; | |
// unhandled rejections tracking support, NodeJS Promise without it fails @@species test | |
return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise; | |
} catch (e) { /* empty */ } | |
}(); | |
// helpers | |
var isThenable = function (it) { | |
var then; | |
return isObject(it) && typeof (then = it.then) == 'function' ? then : false; | |
}; | |
var notify = function (promise, isReject) { | |
if (promise._n) return; | |
promise._n = true; | |
var chain = promise._c; | |
microtask(function () { | |
var value = promise._v; | |
var ok = promise._s == 1; | |
var i = 0; | |
var run = function (reaction) { | |
var handler = ok ? reaction.ok : reaction.fail; | |
var resolve = reaction.resolve; | |
var reject = reaction.reject; | |
var domain = reaction.domain; | |
var result, then; | |
try { | |
if (handler) { | |
if (!ok) { | |
if (promise._h == 2) onHandleUnhandled(promise); | |
promise._h = 1; | |
} | |
if (handler === true) result = value; | |
else { | |
if (domain) domain.enter(); | |
result = handler(value); | |
if (domain) domain.exit(); | |
} | |
if (result === reaction.promise) { | |
reject(TypeError('Promise-chain cycle')); | |
} else if (then = isThenable(result)) { | |
then.call(result, resolve, reject); | |
} else resolve(result); | |
} else reject(value); | |
} catch (e) { | |
reject(e); | |
} | |
}; | |
while (chain.length > i) run(chain[i++]); // variable length - can't use forEach | |
promise._c = []; | |
promise._n = false; | |
if (isReject && !promise._h) onUnhandled(promise); | |
}); | |
}; | |
var onUnhandled = function (promise) { | |
task.call(global, function () { | |
var value = promise._v; | |
var unhandled = isUnhandled(promise); | |
var result, handler, console; | |
if (unhandled) { | |
result = perform(function () { | |
if (isNode) { | |
process.emit('unhandledRejection', value, promise); | |
} else if (handler = global.onunhandledrejection) { | |
handler({ promise: promise, reason: value }); | |
} else if ((console = global.console) && console.error) { | |
console.error('Unhandled promise rejection', value); | |
} | |
}); | |
// Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should | |
promise._h = isNode || isUnhandled(promise) ? 2 : 1; | |
} promise._a = undefined; | |
if (unhandled && result.e) throw result.v; | |
}); | |
}; | |
var isUnhandled = function (promise) { | |
return promise._h !== 1 && (promise._a || promise._c).length === 0; | |
}; | |
var onHandleUnhandled = function (promise) { | |
task.call(global, function () { | |
var handler; | |
if (isNode) { | |
process.emit('rejectionHandled', promise); | |
} else if (handler = global.onrejectionhandled) { | |
handler({ promise: promise, reason: promise._v }); | |
} | |
}); | |
}; | |
var $reject = function (value) { | |
var promise = this; | |
if (promise._d) return; | |
promise._d = true; | |
promise = promise._w || promise; // unwrap | |
promise._v = value; | |
promise._s = 2; | |
if (!promise._a) promise._a = promise._c.slice(); | |
notify(promise, true); | |
}; | |
var $resolve = function (value) { | |
var promise = this; | |
var then; | |
if (promise._d) return; | |
promise._d = true; | |
promise = promise._w || promise; // unwrap | |
try { | |
if (promise === value) throw TypeError("Promise can't be resolved itself"); | |
if (then = isThenable(value)) { | |
microtask(function () { | |
var wrapper = { _w: promise, _d: false }; // wrap | |
try { | |
then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); | |
} catch (e) { | |
$reject.call(wrapper, e); | |
} | |
}); | |
} else { | |
promise._v = value; | |
promise._s = 1; | |
notify(promise, false); | |
} | |
} catch (e) { | |
$reject.call({ _w: promise, _d: false }, e); // wrap | |
} | |
}; | |
// constructor polyfill | |
if (!USE_NATIVE) { | |
// 25.4.3.1 Promise(executor) | |
$Promise = function Promise(executor) { | |
anInstance(this, $Promise, PROMISE, '_h'); | |
aFunction(executor); | |
Internal.call(this); | |
try { | |
executor(ctx($resolve, this, 1), ctx($reject, this, 1)); | |
} catch (err) { | |
$reject.call(this, err); | |
} | |
}; | |
// eslint-disable-next-line no-unused-vars | |
Internal = function Promise(executor) { | |
this._c = []; // <- awaiting reactions | |
this._a = undefined; // <- checked in isUnhandled reactions | |
this._s = 0; // <- state | |
this._d = false; // <- done | |
this._v = undefined; // <- value | |
this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled | |
this._n = false; // <- notify | |
}; | |
Internal.prototype = _dereq_('./_redefine-all')($Promise.prototype, { | |
// 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) | |
then: function then(onFulfilled, onRejected) { | |
var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); | |
reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; | |
reaction.fail = typeof onRejected == 'function' && onRejected; | |
reaction.domain = isNode ? process.domain : undefined; | |
this._c.push(reaction); | |
if (this._a) this._a.push(reaction); | |
if (this._s) notify(this, false); | |
return reaction.promise; | |
}, | |
// 25.4.5.1 Promise.prototype.catch(onRejected) | |
'catch': function (onRejected) { | |
return this.then(undefined, onRejected); | |
} | |
}); | |
OwnPromiseCapability = function () { | |
var promise = new Internal(); | |
this.promise = promise; | |
this.resolve = ctx($resolve, promise, 1); | |
this.reject = ctx($reject, promise, 1); | |
}; | |
newPromiseCapabilityModule.f = newPromiseCapability = function (C) { | |
return C === $Promise || C === Wrapper | |
? new OwnPromiseCapability(C) | |
: newGenericPromiseCapability(C); | |
}; | |
} | |
$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise }); | |
_dereq_('./_set-to-string-tag')($Promise, PROMISE); | |
_dereq_('./_set-species')(PROMISE); | |
Wrapper = _dereq_('./_core')[PROMISE]; | |
// statics | |
$export($export.S + $export.F * !USE_NATIVE, PROMISE, { | |
// 25.4.4.5 Promise.reject(r) | |
reject: function reject(r) { | |
var capability = newPromiseCapability(this); | |
var $$reject = capability.reject; | |
$$reject(r); | |
return capability.promise; | |
} | |
}); | |
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { | |
// 25.4.4.6 Promise.resolve(x) | |
resolve: function resolve(x) { | |
return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); | |
} | |
}); | |
$export($export.S + $export.F * !(USE_NATIVE && _dereq_('./_iter-detect')(function (iter) { | |
$Promise.all(iter)['catch'](empty); | |
})), PROMISE, { | |
// 25.4.4.1 Promise.all(iterable) | |
all: function all(iterable) { | |
var C = this; | |
var capability = newPromiseCapability(C); | |
var resolve = capability.resolve; | |
var reject = capability.reject; | |
var result = perform(function () { | |
var values = []; | |
var index = 0; | |
var remaining = 1; | |
forOf(iterable, false, function (promise) { | |
var $index = index++; | |
var alreadyCalled = false; | |
values.push(undefined); | |
remaining++; | |
C.resolve(promise).then(function (value) { | |
if (alreadyCalled) return; | |
alreadyCalled = true; | |
values[$index] = value; | |
--remaining || resolve(values); | |
}, reject); | |
}); | |
--remaining || resolve(values); | |
}); | |
if (result.e) reject(result.v); | |
return capability.promise; | |
}, | |
// 25.4.4.4 Promise.race(iterable) | |
race: function race(iterable) { | |
var C = this; | |
var capability = newPromiseCapability(C); | |
var reject = capability.reject; | |
var result = perform(function () { | |
forOf(iterable, false, function (promise) { | |
C.resolve(promise).then(capability.resolve, reject); | |
}); | |
}); | |
if (result.e) reject(result.v); | |
return capability.promise; | |
} | |
}); | |
},{"./_a-function":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_a-function.js","./_an-instance":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-instance.js","./_classof":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_classof.js","./_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","./_ctx":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_ctx.js","./_export":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js","./_for-of":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_for-of.js","./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_is-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-object.js","./_iter-detect":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-detect.js","./_library":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_library.js","./_microtask":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_microtask.js","./_new-promise-capability":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_new-promise-capability.js","./_perform":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_perform.js","./_promise-resolve":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_promise-resolve.js","./_redefine-all":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_redefine-all.js","./_set-species":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_set-species.js","./_set-to-string-tag":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_set-to-string-tag.js","./_species-constructor":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_species-constructor.js","./_task":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_task.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.string.iterator.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var $at = _dereq_('./_string-at')(true); | |
// 21.1.3.27 String.prototype[@@iterator]() | |
_dereq_('./_iter-define')(String, 'String', function (iterated) { | |
this._t = String(iterated); // target | |
this._i = 0; // next index | |
// 21.1.5.2.1 %StringIteratorPrototype%.next() | |
}, function () { | |
var O = this._t; | |
var index = this._i; | |
var point; | |
if (index >= O.length) return { value: undefined, done: true }; | |
point = $at(O, index); | |
this._i += point.length; | |
return { value: point, done: false }; | |
}); | |
},{"./_iter-define":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iter-define.js","./_string-at":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_string-at.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.symbol.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
// ECMAScript 6 symbols shim | |
var global = _dereq_('./_global'); | |
var has = _dereq_('./_has'); | |
var DESCRIPTORS = _dereq_('./_descriptors'); | |
var $export = _dereq_('./_export'); | |
var redefine = _dereq_('./_redefine'); | |
var META = _dereq_('./_meta').KEY; | |
var $fails = _dereq_('./_fails'); | |
var shared = _dereq_('./_shared'); | |
var setToStringTag = _dereq_('./_set-to-string-tag'); | |
var uid = _dereq_('./_uid'); | |
var wks = _dereq_('./_wks'); | |
var wksExt = _dereq_('./_wks-ext'); | |
var wksDefine = _dereq_('./_wks-define'); | |
var enumKeys = _dereq_('./_enum-keys'); | |
var isArray = _dereq_('./_is-array'); | |
var anObject = _dereq_('./_an-object'); | |
var isObject = _dereq_('./_is-object'); | |
var toIObject = _dereq_('./_to-iobject'); | |
var toPrimitive = _dereq_('./_to-primitive'); | |
var createDesc = _dereq_('./_property-desc'); | |
var _create = _dereq_('./_object-create'); | |
var gOPNExt = _dereq_('./_object-gopn-ext'); | |
var $GOPD = _dereq_('./_object-gopd'); | |
var $DP = _dereq_('./_object-dp'); | |
var $keys = _dereq_('./_object-keys'); | |
var gOPD = $GOPD.f; | |
var dP = $DP.f; | |
var gOPN = gOPNExt.f; | |
var $Symbol = global.Symbol; | |
var $JSON = global.JSON; | |
var _stringify = $JSON && $JSON.stringify; | |
var PROTOTYPE = 'prototype'; | |
var HIDDEN = wks('_hidden'); | |
var TO_PRIMITIVE = wks('toPrimitive'); | |
var isEnum = {}.propertyIsEnumerable; | |
var SymbolRegistry = shared('symbol-registry'); | |
var AllSymbols = shared('symbols'); | |
var OPSymbols = shared('op-symbols'); | |
var ObjectProto = Object[PROTOTYPE]; | |
var USE_NATIVE = typeof $Symbol == 'function'; | |
var QObject = global.QObject; | |
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 | |
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; | |
// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 | |
var setSymbolDesc = DESCRIPTORS && $fails(function () { | |
return _create(dP({}, 'a', { | |
get: function () { return dP(this, 'a', { value: 7 }).a; } | |
})).a != 7; | |
}) ? function (it, key, D) { | |
var protoDesc = gOPD(ObjectProto, key); | |
if (protoDesc) delete ObjectProto[key]; | |
dP(it, key, D); | |
if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); | |
} : dP; | |
var wrap = function (tag) { | |
var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); | |
sym._k = tag; | |
return sym; | |
}; | |
var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { | |
return typeof it == 'symbol'; | |
} : function (it) { | |
return it instanceof $Symbol; | |
}; | |
var $defineProperty = function defineProperty(it, key, D) { | |
if (it === ObjectProto) $defineProperty(OPSymbols, key, D); | |
anObject(it); | |
key = toPrimitive(key, true); | |
anObject(D); | |
if (has(AllSymbols, key)) { | |
if (!D.enumerable) { | |
if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); | |
it[HIDDEN][key] = true; | |
} else { | |
if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; | |
D = _create(D, { enumerable: createDesc(0, false) }); | |
} return setSymbolDesc(it, key, D); | |
} return dP(it, key, D); | |
}; | |
var $defineProperties = function defineProperties(it, P) { | |
anObject(it); | |
var keys = enumKeys(P = toIObject(P)); | |
var i = 0; | |
var l = keys.length; | |
var key; | |
while (l > i) $defineProperty(it, key = keys[i++], P[key]); | |
return it; | |
}; | |
var $create = function create(it, P) { | |
return P === undefined ? _create(it) : $defineProperties(_create(it), P); | |
}; | |
var $propertyIsEnumerable = function propertyIsEnumerable(key) { | |
var E = isEnum.call(this, key = toPrimitive(key, true)); | |
if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; | |
return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; | |
}; | |
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { | |
it = toIObject(it); | |
key = toPrimitive(key, true); | |
if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; | |
var D = gOPD(it, key); | |
if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; | |
return D; | |
}; | |
var $getOwnPropertyNames = function getOwnPropertyNames(it) { | |
var names = gOPN(toIObject(it)); | |
var result = []; | |
var i = 0; | |
var key; | |
while (names.length > i) { | |
if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); | |
} return result; | |
}; | |
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { | |
var IS_OP = it === ObjectProto; | |
var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); | |
var result = []; | |
var i = 0; | |
var key; | |
while (names.length > i) { | |
if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); | |
} return result; | |
}; | |
// 19.4.1.1 Symbol([description]) | |
if (!USE_NATIVE) { | |
$Symbol = function Symbol() { | |
if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); | |
var tag = uid(arguments.length > 0 ? arguments[0] : undefined); | |
var $set = function (value) { | |
if (this === ObjectProto) $set.call(OPSymbols, value); | |
if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; | |
setSymbolDesc(this, tag, createDesc(1, value)); | |
}; | |
if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); | |
return wrap(tag); | |
}; | |
redefine($Symbol[PROTOTYPE], 'toString', function toString() { | |
return this._k; | |
}); | |
$GOPD.f = $getOwnPropertyDescriptor; | |
$DP.f = $defineProperty; | |
_dereq_('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames; | |
_dereq_('./_object-pie').f = $propertyIsEnumerable; | |
_dereq_('./_object-gops').f = $getOwnPropertySymbols; | |
if (DESCRIPTORS && !_dereq_('./_library')) { | |
redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); | |
} | |
wksExt.f = function (name) { | |
return wrap(wks(name)); | |
}; | |
} | |
$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); | |
for (var es6Symbols = ( | |
// 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 | |
'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' | |
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); | |
for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); | |
$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { | |
// 19.4.2.1 Symbol.for(key) | |
'for': function (key) { | |
return has(SymbolRegistry, key += '') | |
? SymbolRegistry[key] | |
: SymbolRegistry[key] = $Symbol(key); | |
}, | |
// 19.4.2.5 Symbol.keyFor(sym) | |
keyFor: function keyFor(sym) { | |
if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); | |
for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; | |
}, | |
useSetter: function () { setter = true; }, | |
useSimple: function () { setter = false; } | |
}); | |
$export($export.S + $export.F * !USE_NATIVE, 'Object', { | |
// 19.1.2.2 Object.create(O [, Properties]) | |
create: $create, | |
// 19.1.2.4 Object.defineProperty(O, P, Attributes) | |
defineProperty: $defineProperty, | |
// 19.1.2.3 Object.defineProperties(O, Properties) | |
defineProperties: $defineProperties, | |
// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) | |
getOwnPropertyDescriptor: $getOwnPropertyDescriptor, | |
// 19.1.2.7 Object.getOwnPropertyNames(O) | |
getOwnPropertyNames: $getOwnPropertyNames, | |
// 19.1.2.8 Object.getOwnPropertySymbols(O) | |
getOwnPropertySymbols: $getOwnPropertySymbols | |
}); | |
// 24.3.2 JSON.stringify(value [, replacer [, space]]) | |
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { | |
var S = $Symbol(); | |
// MS Edge converts symbol values to JSON as {} | |
// WebKit converts symbol values to JSON as null | |
// V8 throws on boxed symbols | |
return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; | |
})), 'JSON', { | |
stringify: function stringify(it) { | |
var args = [it]; | |
var i = 1; | |
var replacer, $replacer; | |
while (arguments.length > i) args.push(arguments[i++]); | |
$replacer = replacer = args[1]; | |
if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined | |
if (!isArray(replacer)) replacer = function (key, value) { | |
if (typeof $replacer == 'function') value = $replacer.call(this, key, value); | |
if (!isSymbol(value)) return value; | |
}; | |
args[1] = replacer; | |
return _stringify.apply($JSON, args); | |
} | |
}); | |
// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) | |
$Symbol[PROTOTYPE][TO_PRIMITIVE] || _dereq_('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); | |
// 19.4.3.5 Symbol.prototype[@@toStringTag] | |
setToStringTag($Symbol, 'Symbol'); | |
// 20.2.1.9 Math[@@toStringTag] | |
setToStringTag(Math, 'Math', true); | |
// 24.3.3 JSON[@@toStringTag] | |
setToStringTag(global.JSON, 'JSON', true); | |
},{"./_an-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_an-object.js","./_descriptors":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_descriptors.js","./_enum-keys":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_enum-keys.js","./_export":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js","./_fails":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_fails.js","./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_has":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_has.js","./_hide":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_hide.js","./_is-array":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-array.js","./_is-object":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_is-object.js","./_library":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_library.js","./_meta":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_meta.js","./_object-create":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-create.js","./_object-dp":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-dp.js","./_object-gopd":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gopd.js","./_object-gopn":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gopn.js","./_object-gopn-ext":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gopn-ext.js","./_object-gops":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-gops.js","./_object-keys":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-keys.js","./_object-pie":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_object-pie.js","./_property-desc":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_property-desc.js","./_redefine":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_redefine.js","./_set-to-string-tag":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_set-to-string-tag.js","./_shared":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_shared.js","./_to-iobject":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-iobject.js","./_to-primitive":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_to-primitive.js","./_uid":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_uid.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js","./_wks-define":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks-define.js","./_wks-ext":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks-ext.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es7.promise.finally.js":[function(_dereq_,module,exports){ | |
// https://github.com/tc39/proposal-promise-finally | |
'use strict'; | |
var $export = _dereq_('./_export'); | |
var core = _dereq_('./_core'); | |
var global = _dereq_('./_global'); | |
var speciesConstructor = _dereq_('./_species-constructor'); | |
var promiseResolve = _dereq_('./_promise-resolve'); | |
$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { | |
var C = speciesConstructor(this, core.Promise || global.Promise); | |
var isFunction = typeof onFinally == 'function'; | |
return this.then( | |
isFunction ? function (x) { | |
return promiseResolve(C, onFinally()).then(function () { return x; }); | |
} : onFinally, | |
isFunction ? function (e) { | |
return promiseResolve(C, onFinally()).then(function () { throw e; }); | |
} : onFinally | |
); | |
} }); | |
},{"./_core":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_core.js","./_export":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js","./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_promise-resolve":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_promise-resolve.js","./_species-constructor":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_species-constructor.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es7.promise.try.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
// https://github.com/tc39/proposal-promise-try | |
var $export = _dereq_('./_export'); | |
var newPromiseCapability = _dereq_('./_new-promise-capability'); | |
var perform = _dereq_('./_perform'); | |
$export($export.S, 'Promise', { 'try': function (callbackfn) { | |
var promiseCapability = newPromiseCapability.f(this); | |
var result = perform(callbackfn); | |
(result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v); | |
return promiseCapability.promise; | |
} }); | |
},{"./_export":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_export.js","./_new-promise-capability":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_new-promise-capability.js","./_perform":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_perform.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es7.symbol.async-iterator.js":[function(_dereq_,module,exports){ | |
_dereq_('./_wks-define')('asyncIterator'); | |
},{"./_wks-define":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks-define.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es7.symbol.observable.js":[function(_dereq_,module,exports){ | |
_dereq_('./_wks-define')('observable'); | |
},{"./_wks-define":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks-define.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/web.dom.iterable.js":[function(_dereq_,module,exports){ | |
_dereq_('./es6.array.iterator'); | |
var global = _dereq_('./_global'); | |
var hide = _dereq_('./_hide'); | |
var Iterators = _dereq_('./_iterators'); | |
var TO_STRING_TAG = _dereq_('./_wks')('toStringTag'); | |
var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + | |
'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + | |
'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + | |
'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + | |
'TextTrackList,TouchList').split(','); | |
for (var i = 0; i < DOMIterables.length; i++) { | |
var NAME = DOMIterables[i]; | |
var Collection = global[NAME]; | |
var proto = Collection && Collection.prototype; | |
if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); | |
Iterators[NAME] = Iterators.Array; | |
} | |
},{"./_global":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_global.js","./_hide":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_hide.js","./_iterators":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_iterators.js","./_wks":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/_wks.js","./es6.array.iterator":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-js/library/modules/es6.array.iterator.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-util-is/lib/util.js":[function(_dereq_,module,exports){ | |
(function (Buffer){ | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
// NOTE: These type checking functions intentionally don't use `instanceof` | |
// because it is fragile and can be easily faked with `Object.create()`. | |
function isArray(arg) { | |
if (Array.isArray) { | |
return Array.isArray(arg); | |
} | |
return objectToString(arg) === '[object Array]'; | |
} | |
exports.isArray = isArray; | |
function isBoolean(arg) { | |
return typeof arg === 'boolean'; | |
} | |
exports.isBoolean = isBoolean; | |
function isNull(arg) { | |
return arg === null; | |
} | |
exports.isNull = isNull; | |
function isNullOrUndefined(arg) { | |
return arg == null; | |
} | |
exports.isNullOrUndefined = isNullOrUndefined; | |
function isNumber(arg) { | |
return typeof arg === 'number'; | |
} | |
exports.isNumber = isNumber; | |
function isString(arg) { | |
return typeof arg === 'string'; | |
} | |
exports.isString = isString; | |
function isSymbol(arg) { | |
return typeof arg === 'symbol'; | |
} | |
exports.isSymbol = isSymbol; | |
function isUndefined(arg) { | |
return arg === void 0; | |
} | |
exports.isUndefined = isUndefined; | |
function isRegExp(re) { | |
return objectToString(re) === '[object RegExp]'; | |
} | |
exports.isRegExp = isRegExp; | |
function isObject(arg) { | |
return typeof arg === 'object' && arg !== null; | |
} | |
exports.isObject = isObject; | |
function isDate(d) { | |
return objectToString(d) === '[object Date]'; | |
} | |
exports.isDate = isDate; | |
function isError(e) { | |
return (objectToString(e) === '[object Error]' || e instanceof Error); | |
} | |
exports.isError = isError; | |
function isFunction(arg) { | |
return typeof arg === 'function'; | |
} | |
exports.isFunction = isFunction; | |
function isPrimitive(arg) { | |
return arg === null || | |
typeof arg === 'boolean' || | |
typeof arg === 'number' || | |
typeof arg === 'string' || | |
typeof arg === 'symbol' || // ES6 symbol | |
typeof arg === 'undefined'; | |
} | |
exports.isPrimitive = isPrimitive; | |
exports.isBuffer = Buffer.isBuffer; | |
function objectToString(o) { | |
return Object.prototype.toString.call(o); | |
} | |
}).call(this,{"isBuffer":_dereq_("../../is-buffer/index.js")}) | |
},{"../../is-buffer/index.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/is-buffer/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/end-of-stream/index.js":[function(_dereq_,module,exports){ | |
var once = _dereq_('once'); | |
var noop = function() {}; | |
var isRequest = function(stream) { | |
return stream.setHeader && typeof stream.abort === 'function'; | |
}; | |
var isChildProcess = function(stream) { | |
return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 | |
}; | |
var eos = function(stream, opts, callback) { | |
if (typeof opts === 'function') return eos(stream, null, opts); | |
if (!opts) opts = {}; | |
callback = once(callback || noop); | |
var ws = stream._writableState; | |
var rs = stream._readableState; | |
var readable = opts.readable || (opts.readable !== false && stream.readable); | |
var writable = opts.writable || (opts.writable !== false && stream.writable); | |
var onlegacyfinish = function() { | |
if (!stream.writable) onfinish(); | |
}; | |
var onfinish = function() { | |
writable = false; | |
if (!readable) callback.call(stream); | |
}; | |
var onend = function() { | |
readable = false; | |
if (!writable) callback.call(stream); | |
}; | |
var onexit = function(exitCode) { | |
callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); | |
}; | |
var onclose = function() { | |
if (readable && !(rs && rs.ended)) return callback.call(stream, new Error('premature close')); | |
if (writable && !(ws && ws.ended)) return callback.call(stream, new Error('premature close')); | |
}; | |
var onrequest = function() { | |
stream.req.on('finish', onfinish); | |
}; | |
if (isRequest(stream)) { | |
stream.on('complete', onfinish); | |
stream.on('abort', onclose); | |
if (stream.req) onrequest(); | |
else stream.on('request', onrequest); | |
} else if (writable && !ws) { // legacy streams | |
stream.on('end', onlegacyfinish); | |
stream.on('close', onlegacyfinish); | |
} | |
if (isChildProcess(stream)) stream.on('exit', onexit); | |
stream.on('end', onend); | |
stream.on('finish', onfinish); | |
if (opts.error !== false) stream.on('error', callback); | |
stream.on('close', onclose); | |
return function() { | |
stream.removeListener('complete', onfinish); | |
stream.removeListener('abort', onclose); | |
stream.removeListener('request', onrequest); | |
if (stream.req) stream.req.removeListener('finish', onfinish); | |
stream.removeListener('end', onlegacyfinish); | |
stream.removeListener('close', onlegacyfinish); | |
stream.removeListener('finish', onfinish); | |
stream.removeListener('exit', onexit); | |
stream.removeListener('end', onend); | |
stream.removeListener('error', callback); | |
stream.removeListener('close', onclose); | |
}; | |
}; | |
module.exports = eos; | |
},{"once":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/once/once.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/ieee754/index.js":[function(_dereq_,module,exports){ | |
exports.read = function (buffer, offset, isLE, mLen, nBytes) { | |
var e, m | |
var eLen = nBytes * 8 - mLen - 1 | |
var eMax = (1 << eLen) - 1 | |
var eBias = eMax >> 1 | |
var nBits = -7 | |
var i = isLE ? (nBytes - 1) : 0 | |
var d = isLE ? -1 : 1 | |
var s = buffer[offset + i] | |
i += d | |
e = s & ((1 << (-nBits)) - 1) | |
s >>= (-nBits) | |
nBits += eLen | |
for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} | |
m = e & ((1 << (-nBits)) - 1) | |
e >>= (-nBits) | |
nBits += mLen | |
for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} | |
if (e === 0) { | |
e = 1 - eBias | |
} else if (e === eMax) { | |
return m ? NaN : ((s ? -1 : 1) * Infinity) | |
} else { | |
m = m + Math.pow(2, mLen) | |
e = e - eBias | |
} | |
return (s ? -1 : 1) * m * Math.pow(2, e - mLen) | |
} | |
exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { | |
var e, m, c | |
var eLen = nBytes * 8 - mLen - 1 | |
var eMax = (1 << eLen) - 1 | |
var eBias = eMax >> 1 | |
var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) | |
var i = isLE ? 0 : (nBytes - 1) | |
var d = isLE ? 1 : -1 | |
var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 | |
value = Math.abs(value) | |
if (isNaN(value) || value === Infinity) { | |
m = isNaN(value) ? 1 : 0 | |
e = eMax | |
} else { | |
e = Math.floor(Math.log(value) / Math.LN2) | |
if (value * (c = Math.pow(2, -e)) < 1) { | |
e-- | |
c *= 2 | |
} | |
if (e + eBias >= 1) { | |
value += rt / c | |
} else { | |
value += rt * Math.pow(2, 1 - eBias) | |
} | |
if (value * c >= 2) { | |
e++ | |
c /= 2 | |
} | |
if (e + eBias >= eMax) { | |
m = 0 | |
e = eMax | |
} else if (e + eBias >= 1) { | |
m = (value * c - 1) * Math.pow(2, mLen) | |
e = e + eBias | |
} else { | |
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) | |
e = 0 | |
} | |
} | |
for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} | |
e = (e << mLen) | m | |
eLen += mLen | |
for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} | |
buffer[offset + i - d] |= s * 128 | |
} | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/inherits/inherits_browser.js":[function(_dereq_,module,exports){ | |
if (typeof Object.create === 'function') { | |
// implementation from standard node.js 'util' module | |
module.exports = function inherits(ctor, superCtor) { | |
ctor.super_ = superCtor | |
ctor.prototype = Object.create(superCtor.prototype, { | |
constructor: { | |
value: ctor, | |
enumerable: false, | |
writable: true, | |
configurable: true | |
} | |
}); | |
}; | |
} else { | |
// old school shim for old browsers | |
module.exports = function inherits(ctor, superCtor) { | |
ctor.super_ = superCtor | |
var TempCtor = function () {} | |
TempCtor.prototype = superCtor.prototype | |
ctor.prototype = new TempCtor() | |
ctor.prototype.constructor = ctor | |
} | |
} | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/is-buffer/index.js":[function(_dereq_,module,exports){ | |
/*! | |
* Determine if an object is a Buffer | |
* | |
* @author Feross Aboukhadijeh <https://feross.org> | |
* @license MIT | |
*/ | |
// The _isBuffer check is for Safari 5-7 support, because it's missing | |
// Object.prototype.constructor. Remove this eventually | |
module.exports = function (obj) { | |
return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) | |
} | |
function isBuffer (obj) { | |
return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) | |
} | |
// For Node v0.10 support. Remove this eventually. | |
function isSlowBuffer (obj) { | |
return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) | |
} | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/isarray/index.js":[function(_dereq_,module,exports){ | |
var toString = {}.toString; | |
module.exports = Array.isArray || function (arr) { | |
return toString.call(arr) == '[object Array]'; | |
}; | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/json-rpc-middleware-stream/index.js":[function(_dereq_,module,exports){ | |
const SafeEventEmitter = _dereq_('safe-event-emitter') | |
const DuplexStream = _dereq_('readable-stream').Duplex | |
module.exports = createStreamMiddleware | |
function createStreamMiddleware() { | |
const idMap = {} | |
const stream = new DuplexStream({ | |
objectMode: true, | |
read: readNoop, | |
write: processMessage, | |
}) | |
const events = new SafeEventEmitter() | |
const middleware = (req, res, next, end) => { | |
// write req to stream | |
stream.push(req) | |
// register request on id map | |
idMap[req.id] = { req, res, next, end } | |
} | |
return { events, middleware, stream } | |
function readNoop () { | |
return false | |
} | |
function processMessage (res, encoding, cb) { | |
let err | |
try { | |
const isNotification = !res.id | |
if (isNotification) { | |
processNotification(res) | |
} else { | |
processResponse(res) | |
} | |
} catch (_err) { | |
err = _err | |
} | |
// continue processing stream | |
cb(err) | |
} | |
function processResponse(res) { | |
const context = idMap[res.id] | |
if (!context) throw new Error(`StreamMiddleware - Unknown response id ${res.id}`) | |
delete idMap[res.id] | |
// copy whole res onto original res | |
Object.assign(context.res, res) | |
// run callback on empty stack, | |
// prevent internal stream-handler from catching errors | |
setTimeout(context.end) | |
} | |
function processNotification(res) { | |
events.emit('notification', res) | |
} | |
} | |
},{"readable-stream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/readable-browser.js","safe-event-emitter":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-event-emitter/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/loglevel/lib/loglevel.js":[function(_dereq_,module,exports){ | |
/* | |
* loglevel - https://github.com/pimterry/loglevel | |
* | |
* Copyright (c) 2013 Tim Perry | |
* Licensed under the MIT license. | |
*/ | |
(function (root, definition) { | |
"use strict"; | |
if (typeof define === 'function' && define.amd) { | |
define(definition); | |
} else if (typeof module === 'object' && module.exports) { | |
module.exports = definition(); | |
} else { | |
root.log = definition(); | |
} | |
}(this, function () { | |
"use strict"; | |
// Slightly dubious tricks to cut down minimized file size | |
var noop = function() {}; | |
var undefinedType = "undefined"; | |
var logMethods = [ | |
"trace", | |
"debug", | |
"info", | |
"warn", | |
"error" | |
]; | |
// Cross-browser bind equivalent that works at least back to IE6 | |
function bindMethod(obj, methodName) { | |
var method = obj[methodName]; | |
if (typeof method.bind === 'function') { | |
return method.bind(obj); | |
} else { | |
try { | |
return Function.prototype.bind.call(method, obj); | |
} catch (e) { | |
// Missing bind shim or IE8 + Modernizr, fallback to wrapping | |
return function() { | |
return Function.prototype.apply.apply(method, [obj, arguments]); | |
}; | |
} | |
} | |
} | |
// Build the best logging method possible for this env | |
// Wherever possible we want to bind, not wrap, to preserve stack traces | |
function realMethod(methodName) { | |
if (methodName === 'debug') { | |
methodName = 'log'; | |
} | |
if (typeof console === undefinedType) { | |
return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives | |
} else if (console[methodName] !== undefined) { | |
return bindMethod(console, methodName); | |
} else if (console.log !== undefined) { | |
return bindMethod(console, 'log'); | |
} else { | |
return noop; | |
} | |
} | |
// These private functions always need `this` to be set properly | |
function replaceLoggingMethods(level, loggerName) { | |
/*jshint validthis:true */ | |
for (var i = 0; i < logMethods.length; i++) { | |
var methodName = logMethods[i]; | |
this[methodName] = (i < level) ? | |
noop : | |
this.methodFactory(methodName, level, loggerName); | |
} | |
// Define log.log as an alias for log.debug | |
this.log = this.debug; | |
} | |
// In old IE versions, the console isn't present until you first open it. | |
// We build realMethod() replacements here that regenerate logging methods | |
function enableLoggingWhenConsoleArrives(methodName, level, loggerName) { | |
return function () { | |
if (typeof console !== undefinedType) { | |
replaceLoggingMethods.call(this, level, loggerName); | |
this[methodName].apply(this, arguments); | |
} | |
}; | |
} | |
// By default, we use closely bound real methods wherever possible, and | |
// otherwise we wait for a console to appear, and then try again. | |
function defaultMethodFactory(methodName, level, loggerName) { | |
/*jshint validthis:true */ | |
return realMethod(methodName) || | |
enableLoggingWhenConsoleArrives.apply(this, arguments); | |
} | |
function Logger(name, defaultLevel, factory) { | |
var self = this; | |
var currentLevel; | |
var storageKey = "loglevel"; | |
if (name) { | |
storageKey += ":" + name; | |
} | |
function persistLevelIfPossible(levelNum) { | |
var levelName = (logMethods[levelNum] || 'silent').toUpperCase(); | |
if (typeof window === undefinedType) return; | |
// Use localStorage if available | |
try { | |
window.localStorage[storageKey] = levelName; | |
return; | |
} catch (ignore) {} | |
// Use session cookie as fallback | |
try { | |
window.document.cookie = | |
encodeURIComponent(storageKey) + "=" + levelName + ";"; | |
} catch (ignore) {} | |
} | |
function getPersistedLevel() { | |
var storedLevel; | |
if (typeof window === undefinedType) return; | |
try { | |
storedLevel = window.localStorage[storageKey]; | |
} catch (ignore) {} | |
// Fallback to cookies if local storage gives us nothing | |
if (typeof storedLevel === undefinedType) { | |
try { | |
var cookie = window.document.cookie; | |
var location = cookie.indexOf( | |
encodeURIComponent(storageKey) + "="); | |
if (location !== -1) { | |
storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1]; | |
} | |
} catch (ignore) {} | |
} | |
// If the stored level is not valid, treat it as if nothing was stored. | |
if (self.levels[storedLevel] === undefined) { | |
storedLevel = undefined; | |
} | |
return storedLevel; | |
} | |
/* | |
* | |
* Public logger API - see https://github.com/pimterry/loglevel for details | |
* | |
*/ | |
self.name = name; | |
self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3, | |
"ERROR": 4, "SILENT": 5}; | |
self.methodFactory = factory || defaultMethodFactory; | |
self.getLevel = function () { | |
return currentLevel; | |
}; | |
self.setLevel = function (level, persist) { | |
if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) { | |
level = self.levels[level.toUpperCase()]; | |
} | |
if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) { | |
currentLevel = level; | |
if (persist !== false) { // defaults to true | |
persistLevelIfPossible(level); | |
} | |
replaceLoggingMethods.call(self, level, name); | |
if (typeof console === undefinedType && level < self.levels.SILENT) { | |
return "No console available for logging"; | |
} | |
} else { | |
throw "log.setLevel() called with invalid level: " + level; | |
} | |
}; | |
self.setDefaultLevel = function (level) { | |
if (!getPersistedLevel()) { | |
self.setLevel(level, false); | |
} | |
}; | |
self.enableAll = function(persist) { | |
self.setLevel(self.levels.TRACE, persist); | |
}; | |
self.disableAll = function(persist) { | |
self.setLevel(self.levels.SILENT, persist); | |
}; | |
// Initialize with the right level | |
var initialLevel = getPersistedLevel(); | |
if (initialLevel == null) { | |
initialLevel = defaultLevel == null ? "WARN" : defaultLevel; | |
} | |
self.setLevel(initialLevel, false); | |
} | |
/* | |
* | |
* Top-level API | |
* | |
*/ | |
var defaultLogger = new Logger(); | |
var _loggersByName = {}; | |
defaultLogger.getLogger = function getLogger(name) { | |
if (typeof name !== "string" || name === "") { | |
throw new TypeError("You must supply a name when creating a logger."); | |
} | |
var logger = _loggersByName[name]; | |
if (!logger) { | |
logger = _loggersByName[name] = new Logger( | |
name, defaultLogger.getLevel(), defaultLogger.methodFactory); | |
} | |
return logger; | |
}; | |
// Grab the current global log variable in case of overwrite | |
var _log = (typeof window !== undefinedType) ? window.log : undefined; | |
defaultLogger.noConflict = function() { | |
if (typeof window !== undefinedType && | |
window.log === defaultLogger) { | |
window.log = _log; | |
} | |
return defaultLogger; | |
}; | |
defaultLogger.getLoggers = function getLoggers() { | |
return _loggersByName; | |
}; | |
return defaultLogger; | |
})); | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/createErrorMiddleware.js":[function(_dereq_,module,exports){ | |
const log = _dereq_('loglevel') | |
/** | |
* JSON-RPC error object | |
* | |
* @typedef {Object} RpcError | |
* @property {number} code - Indicates the error type that occurred | |
* @property {Object} [data] - Contains additional information about the error | |
* @property {string} [message] - Short description of the error | |
*/ | |
/** | |
* Middleware configuration object | |
* | |
* @typedef {Object} MiddlewareConfig | |
* @property {boolean} [override] - Use RPC_ERRORS message in place of provider message | |
*/ | |
/** | |
* Map of standard and non-standard RPC error codes to messages | |
*/ | |
const RPC_ERRORS = { | |
1: 'An unauthorized action was attempted.', | |
2: 'A disallowed action was attempted.', | |
3: 'An execution error occurred.', | |
[-32600]: 'The JSON sent is not a valid Request object.', | |
[-32601]: 'The method does not exist / is not available.', | |
[-32602]: 'Invalid method parameter(s).', | |
[-32603]: 'Internal JSON-RPC error.', | |
[-32700]: 'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.', | |
internal: 'Internal server error.', | |
unknown: 'Unknown JSON-RPC error.', | |
} | |
/** | |
* Modifies a JSON-RPC error object in-place to add a human-readable message, | |
* optionally overriding any provider-supplied message | |
* | |
* @param {RpcError} error - JSON-RPC error object | |
* @param {boolean} override - Use RPC_ERRORS message in place of provider message | |
*/ | |
function sanitizeRPCError (error, override) { | |
if (error.message && !override) { return error } | |
const message = error.code > -31099 && error.code < -32100 ? RPC_ERRORS.internal : RPC_ERRORS[error.code] | |
error.message = message || RPC_ERRORS.unknown | |
} | |
/** | |
* json-rpc-engine middleware that both logs standard and non-standard error | |
* messages and ends middleware stack traversal if an error is encountered | |
* | |
* @param {MiddlewareConfig} [config={override:true}] - Middleware configuration | |
* @returns {Function} json-rpc-engine middleware function | |
*/ | |
function createErrorMiddleware ({ override = true } = {}) { | |
return (req, res, next) => { | |
next(done => { | |
const { error } = res | |
if (!error) { return done() } | |
sanitizeRPCError(error) | |
log.error(`MetaMask - RPC Error: ${error.message}`, error) | |
done() | |
}) | |
} | |
} | |
module.exports = createErrorMiddleware | |
},{"loglevel":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/node_modules/loglevel/lib/loglevel.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/index.js":[function(_dereq_,module,exports){ | |
const pump = _dereq_('pump') | |
const RpcEngine = _dereq_('json-rpc-engine') | |
const createErrorMiddleware = _dereq_('./createErrorMiddleware') | |
const createIdRemapMiddleware = _dereq_('json-rpc-engine/src/idRemapMiddleware') | |
const createJsonRpcStream = _dereq_('json-rpc-middleware-stream') | |
const LocalStorageStore = _dereq_('obs-store') | |
const asStream = _dereq_('obs-store/lib/asStream') | |
const ObjectMultiplex = _dereq_('obj-multiplex') | |
const util = _dereq_('util') | |
const SafeEventEmitter = _dereq_('safe-event-emitter') | |
module.exports = MetamaskInpageProvider | |
util.inherits(MetamaskInpageProvider, SafeEventEmitter) | |
function MetamaskInpageProvider (connectionStream) { | |
const self = this | |
self.selectedAddress = undefined | |
self.networkVersion = undefined | |
// super constructor | |
SafeEventEmitter.call(self) | |
// setup connectionStream multiplexing | |
const mux = self.mux = new ObjectMultiplex() | |
pump( | |
connectionStream, | |
mux, | |
connectionStream, | |
logStreamDisconnectWarning.bind(this, 'MetaMask') | |
) | |
// subscribe to metamask public config (one-way) | |
self.publicConfigStore = new LocalStorageStore({ storageKey: 'MetaMask-Config' }) | |
// Emit events for some state changes | |
self.publicConfigStore.subscribe(function (state) { | |
// Emit accountsChanged event on account change | |
if ('selectedAddress' in state && state.selectedAddress !== self.selectedAddress) { | |
self.selectedAddress = state.selectedAddress | |
self.emit('accountsChanged', [self.selectedAddress]) | |
} | |
// Emit networkChanged event on network change | |
if ('networkVersion' in state && state.networkVersion !== self.networkVersion) { | |
self.networkVersion = state.networkVersion | |
self.emit('networkChanged', state.networkVersion) | |
} | |
}) | |
pump( | |
mux.createStream('publicConfig'), | |
asStream(self.publicConfigStore), | |
logStreamDisconnectWarning.bind(this, 'MetaMask PublicConfigStore') | |
) | |
// ignore phishing warning message (handled elsewhere) | |
mux.ignoreStream('phishing') | |
// connect to async provider | |
const jsonRpcConnection = createJsonRpcStream() | |
pump( | |
jsonRpcConnection.stream, | |
mux.createStream('provider'), | |
jsonRpcConnection.stream, | |
logStreamDisconnectWarning.bind(this, 'MetaMask RpcProvider') | |
) | |
// handle sendAsync requests via dapp-side rpc engine | |
const rpcEngine = new RpcEngine() | |
rpcEngine.push(createIdRemapMiddleware()) | |
rpcEngine.push(createErrorMiddleware()) | |
rpcEngine.push(jsonRpcConnection.middleware) | |
self.rpcEngine = rpcEngine | |
// forward json rpc notifications | |
jsonRpcConnection.events.on('notification', function(payload) { | |
self.emit('data', null, payload) | |
}) | |
// Work around for https://github.com/metamask/metamask-extension/issues/5459 | |
// drizzle accidently breaking the `this` reference | |
self.send = self.send.bind(self) | |
self.sendAsync = self.sendAsync.bind(self) | |
} | |
// Web3 1.0 provider uses `send` with a callback for async queries | |
MetamaskInpageProvider.prototype.send = function (payload, callback) { | |
const self = this | |
if (callback) { | |
self.sendAsync(payload, callback) | |
} else { | |
return self._sendSync(payload) | |
} | |
} | |
// handle sendAsync requests via asyncProvider | |
// also remap ids inbound and outbound | |
MetamaskInpageProvider.prototype.sendAsync = function (payload, cb) { | |
const self = this | |
if (payload.method === 'eth_signTypedData') { | |
console.warn('MetaMask: This experimental version of eth_signTypedData will be deprecated in the next release in favor of the standard as defined in EIP-712. See https://git.io/fNzPl for more information on the new standard.') | |
} | |
self.rpcEngine.handle(payload, cb) | |
} | |
MetamaskInpageProvider.prototype._sendSync = function (payload) { | |
const self = this | |
let selectedAddress | |
let result = null | |
switch (payload.method) { | |
case 'eth_accounts': | |
// read from localStorage | |
selectedAddress = self.publicConfigStore.getState().selectedAddress | |
result = selectedAddress ? [selectedAddress] : [] | |
break | |
case 'eth_coinbase': | |
// read from localStorage | |
selectedAddress = self.publicConfigStore.getState().selectedAddress | |
result = selectedAddress || null | |
break | |
case 'eth_uninstallFilter': | |
self.sendAsync(payload, noop) | |
result = true | |
break | |
case 'net_version': | |
const networkVersion = self.publicConfigStore.getState().networkVersion | |
result = networkVersion || null | |
break | |
// throw not-supported Error | |
default: | |
var link = 'https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#dizzy-all-async---think-of-metamask-as-a-light-client' | |
var message = `The MetaMask Web3 object does not support synchronous methods like ${payload.method} without a callback parameter. See ${link} for details.` | |
throw new Error(message) | |
} | |
// return the result | |
return { | |
id: payload.id, | |
jsonrpc: payload.jsonrpc, | |
result: result, | |
} | |
} | |
MetamaskInpageProvider.prototype.isConnected = function () { | |
return true | |
} | |
MetamaskInpageProvider.prototype.isMetaMask = true | |
// util | |
function logStreamDisconnectWarning (remoteLabel, err) { | |
let warningMsg = `MetamaskInpageProvider - lost connection to ${remoteLabel}` | |
if (err) warningMsg += '\n' + err.stack | |
console.warn(warningMsg) | |
const listeners = this.listenerCount('error') | |
if (listeners > 0) { | |
this.emit('error', warningMsg) | |
} | |
} | |
function noop () {} | |
},{"./createErrorMiddleware":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/createErrorMiddleware.js","json-rpc-engine":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/node_modules/json-rpc-engine/src/index.js","json-rpc-engine/src/idRemapMiddleware":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/node_modules/json-rpc-engine/src/idRemapMiddleware.js","json-rpc-middleware-stream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/json-rpc-middleware-stream/index.js","obj-multiplex":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/obj-multiplex/index.js","obs-store":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/obs-store/index.js","obs-store/lib/asStream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/obs-store/lib/asStream.js","pump":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/pump/index.js","safe-event-emitter":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-event-emitter/index.js","util":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/util/util.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/node_modules/json-rpc-engine/src/getUniqueId.js":[function(_dereq_,module,exports){ | |
"use strict"; | |
// uint32 (two's complement) max | |
// more conservative than Number.MAX_SAFE_INTEGER | |
var MAX = 4294967295; | |
var idCounter = Math.floor(Math.random() * MAX); | |
module.exports = getUniqueId; | |
function getUniqueId() { | |
idCounter = (idCounter + 1) % MAX; | |
return idCounter; | |
} | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/node_modules/json-rpc-engine/src/idRemapMiddleware.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var getUniqueId = _dereq_('./getUniqueId'); | |
module.exports = createIdRemapMiddleware; | |
function createIdRemapMiddleware() { | |
return function (req, res, next, end) { | |
var originalId = req.id; | |
var newId = getUniqueId(); | |
req.id = newId; | |
res.id = newId; | |
next(function (done) { | |
req.id = originalId; | |
res.id = originalId; | |
done(); | |
}); | |
}; | |
} | |
},{"./getUniqueId":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/node_modules/json-rpc-engine/src/getUniqueId.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/node_modules/json-rpc-engine/src/index.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var _stringify = _dereq_('babel-runtime/core-js/json/stringify'); | |
var _stringify2 = _interopRequireDefault(_stringify); | |
var _assign = _dereq_('babel-runtime/core-js/object/assign'); | |
var _assign2 = _interopRequireDefault(_assign); | |
var _getPrototypeOf = _dereq_('babel-runtime/core-js/object/get-prototype-of'); | |
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); | |
var _classCallCheck2 = _dereq_('babel-runtime/helpers/classCallCheck'); | |
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | |
var _createClass2 = _dereq_('babel-runtime/helpers/createClass'); | |
var _createClass3 = _interopRequireDefault(_createClass2); | |
var _possibleConstructorReturn2 = _dereq_('babel-runtime/helpers/possibleConstructorReturn'); | |
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | |
var _inherits2 = _dereq_('babel-runtime/helpers/inherits'); | |
var _inherits3 = _interopRequireDefault(_inherits2); | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
var async = _dereq_('async'); | |
var SafeEventEmitter = _dereq_('safe-event-emitter'); | |
var RpcEngine = function (_SafeEventEmitter) { | |
(0, _inherits3.default)(RpcEngine, _SafeEventEmitter); | |
function RpcEngine() { | |
(0, _classCallCheck3.default)(this, RpcEngine); | |
var _this = (0, _possibleConstructorReturn3.default)(this, (RpcEngine.__proto__ || (0, _getPrototypeOf2.default)(RpcEngine)).call(this)); | |
_this._middleware = []; | |
return _this; | |
} | |
// | |
// Public | |
// | |
(0, _createClass3.default)(RpcEngine, [{ | |
key: 'push', | |
value: function push(middleware) { | |
this._middleware.push(middleware); | |
} | |
}, { | |
key: 'handle', | |
value: function handle(req, cb) { | |
// batch request support | |
if (Array.isArray(req)) { | |
async.map(req, this._handle.bind(this), cb); | |
} else { | |
this._handle(req, cb); | |
} | |
} | |
// | |
// Private | |
// | |
}, { | |
key: '_handle', | |
value: function _handle(_req, cb) { | |
// shallow clone request object | |
var req = (0, _assign2.default)({}, _req); | |
// create response obj | |
var res = { | |
id: req.id, | |
jsonrpc: req.jsonrpc | |
// process all middleware | |
};this._runMiddleware(req, res, function (err) { | |
// return response | |
cb(err, res); | |
}); | |
} | |
}, { | |
key: '_runMiddleware', | |
value: function _runMiddleware(req, res, onDone) { | |
var _this2 = this; | |
// flow | |
async.waterfall([function (cb) { | |
return _this2._runMiddlewareDown(req, res, cb); | |
}, checkForCompletion, function (returnHandlers, cb) { | |
return _this2._runReturnHandlersUp(returnHandlers, cb); | |
}], onDone); | |
function checkForCompletion(_ref, cb) { | |
var isComplete = _ref.isComplete, | |
returnHandlers = _ref.returnHandlers; | |
// fail if not completed | |
if (!('result' in res) && !('error' in res)) { | |
var requestBody = (0, _stringify2.default)(req, null, 2); | |
var message = 'JsonRpcEngine - response has no error or result for request:\n' + requestBody; | |
return cb(new Error(message)); | |
} | |
if (!isComplete) { | |
var _requestBody = (0, _stringify2.default)(req, null, 2); | |
var _message = 'JsonRpcEngine - nothing ended request:\n' + _requestBody; | |
return cb(new Error(_message)); | |
} | |
// continue | |
return cb(null, returnHandlers); | |
} | |
function runReturnHandlers(returnHandlers, cb) { | |
async.eachSeries(returnHandlers, function (handler, next) { | |
return handler(next); | |
}, onDone); | |
} | |
} | |
// walks down stack of middleware | |
}, { | |
key: '_runMiddlewareDown', | |
value: function _runMiddlewareDown(req, res, onDone) { | |
// for climbing back up the stack | |
var allReturnHandlers = []; | |
// flag for stack return | |
var isComplete = false; | |
// down stack of middleware, call and collect optional allReturnHandlers | |
async.mapSeries(this._middleware, eachMiddleware, completeRequest); | |
// runs an individual middleware | |
function eachMiddleware(middleware, cb) { | |
// skip middleware if completed | |
if (isComplete) return cb(); | |
// run individual middleware | |
middleware(req, res, next, end); | |
function next(returnHandler) { | |
// add return handler | |
allReturnHandlers.push(returnHandler); | |
cb(); | |
} | |
function end(err) { | |
if (err) return cb(err); | |
// mark as completed | |
isComplete = true; | |
cb(); | |
} | |
} | |
// returns, indicating whether or not it ended | |
function completeRequest(err) { | |
if (err) { | |
// prepare error message | |
res.error = { | |
code: err.code || -32603, | |
message: err.stack | |
// return error-first and res with err | |
};return onDone(err, res); | |
} | |
var returnHandlers = allReturnHandlers.filter(Boolean).reverse(); | |
onDone(null, { isComplete: isComplete, returnHandlers: returnHandlers }); | |
} | |
} | |
// climbs the stack calling return handlers | |
}, { | |
key: '_runReturnHandlersUp', | |
value: function _runReturnHandlersUp(returnHandlers, cb) { | |
async.eachSeries(returnHandlers, function (handler, next) { | |
return handler(next); | |
}, cb); | |
} | |
}]); | |
return RpcEngine; | |
}(SafeEventEmitter); | |
module.exports = RpcEngine; | |
},{"async":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/async/dist/async.js","babel-runtime/core-js/json/stringify":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/json/stringify.js","babel-runtime/core-js/object/assign":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/assign.js","babel-runtime/core-js/object/get-prototype-of":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/get-prototype-of.js","babel-runtime/helpers/classCallCheck":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/classCallCheck.js","babel-runtime/helpers/createClass":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/createClass.js","babel-runtime/helpers/inherits":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/inherits.js","babel-runtime/helpers/possibleConstructorReturn":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/possibleConstructorReturn.js","safe-event-emitter":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-event-emitter/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/metamask-inpage-provider/node_modules/loglevel/lib/loglevel.js":[function(_dereq_,module,exports){ | |
arguments[4]["/Users/chenwei/Desktop/github/metamask-extension/node_modules/loglevel/lib/loglevel.js"][0].apply(exports,arguments) | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/obj-multiplex/index.js":[function(_dereq_,module,exports){ | |
const { Duplex } = _dereq_('readable-stream') | |
const endOfStream = _dereq_('end-of-stream') | |
const once = _dereq_('once') | |
const noop = () => {} | |
const IGNORE_SUBSTREAM = {} | |
class ObjectMultiplex extends Duplex { | |
constructor(_opts = {}) { | |
const opts = Object.assign({}, _opts, { | |
objectMode: true, | |
}) | |
super(opts) | |
this._substreams = {} | |
} | |
createStream (name) { | |
// validate name | |
if (!name) throw new Error('ObjectMultiplex - name must not be empty') | |
if (this._substreams[name]) throw new Error('ObjectMultiplex - Substream for name "${name}" already exists') | |
// create substream | |
const substream = new Substream({ parent: this, name: name }) | |
this._substreams[name] = substream | |
// listen for parent stream to end | |
anyStreamEnd(this, (err) => { | |
substream.destroy(err) | |
}) | |
return substream | |
} | |
// ignore streams (dont display orphaned data warning) | |
ignoreStream (name) { | |
// validate name | |
if (!name) throw new Error('ObjectMultiplex - name must not be empty') | |
if (this._substreams[name]) throw new Error('ObjectMultiplex - Substream for name "${name}" already exists') | |
// set | |
this._substreams[name] = IGNORE_SUBSTREAM | |
} | |
// stream plumbing | |
_read () {} | |
_write(chunk, encoding, callback) { | |
// parse message | |
const name = chunk.name | |
const data = chunk.data | |
if (!name) { | |
console.warn(`ObjectMultiplex - malformed chunk without name "${chunk}"`) | |
return callback() | |
} | |
// get corresponding substream | |
const substream = this._substreams[name] | |
if (!substream) { | |
console.warn(`ObjectMultiplex - orphaned data for stream "${name}"`) | |
return callback() | |
} | |
// push data into substream | |
if (substream !== IGNORE_SUBSTREAM) { | |
substream.push(data) | |
} | |
callback() | |
} | |
} | |
class Substream extends Duplex { | |
constructor ({ parent, name }) { | |
super({ | |
objectMode: true, | |
}) | |
this._parent = parent | |
this._name = name | |
} | |
_read () {} | |
_write (chunk, enc, callback) { | |
this._parent.push({ | |
name: this._name, | |
data: chunk, | |
}) | |
callback() | |
} | |
} | |
module.exports = ObjectMultiplex | |
// util | |
function anyStreamEnd(stream, _cb) { | |
const cb = once(_cb) | |
endOfStream(stream, { readable: false }, cb) | |
endOfStream(stream, { writable: false }, cb) | |
} | |
},{"end-of-stream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/end-of-stream/index.js","once":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/once/once.js","readable-stream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/readable-browser.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/obs-store/index.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var _assign = _dereq_('babel-runtime/core-js/object/assign'); | |
var _assign2 = _interopRequireDefault(_assign); | |
var _typeof2 = _dereq_('babel-runtime/helpers/typeof'); | |
var _typeof3 = _interopRequireDefault(_typeof2); | |
var _getPrototypeOf = _dereq_('babel-runtime/core-js/object/get-prototype-of'); | |
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); | |
var _classCallCheck2 = _dereq_('babel-runtime/helpers/classCallCheck'); | |
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | |
var _createClass2 = _dereq_('babel-runtime/helpers/createClass'); | |
var _createClass3 = _interopRequireDefault(_createClass2); | |
var _possibleConstructorReturn2 = _dereq_('babel-runtime/helpers/possibleConstructorReturn'); | |
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | |
var _inherits2 = _dereq_('babel-runtime/helpers/inherits'); | |
var _inherits3 = _interopRequireDefault(_inherits2); | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
var extend = _dereq_('xtend'); | |
var EventEmitter = _dereq_('events'); | |
var ObservableStore = function (_EventEmitter) { | |
(0, _inherits3.default)(ObservableStore, _EventEmitter); | |
function ObservableStore() { | |
var initState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | |
(0, _classCallCheck3.default)(this, ObservableStore); | |
// set init state | |
var _this = (0, _possibleConstructorReturn3.default)(this, (ObservableStore.__proto__ || (0, _getPrototypeOf2.default)(ObservableStore)).call(this)); | |
_this._state = initState; | |
return _this; | |
} | |
// wrapper around internal getState | |
(0, _createClass3.default)(ObservableStore, [{ | |
key: 'getState', | |
value: function getState() { | |
return this._getState(); | |
} | |
// wrapper around internal putState | |
}, { | |
key: 'putState', | |
value: function putState(newState) { | |
this._putState(newState); | |
this.emit('update', newState); | |
} | |
}, { | |
key: 'updateState', | |
value: function updateState(partialState) { | |
// if non-null object, merge | |
if (partialState && (typeof partialState === 'undefined' ? 'undefined' : (0, _typeof3.default)(partialState)) === 'object') { | |
var state = this.getState(); | |
var newState = (0, _assign2.default)({}, state, partialState); | |
this.putState(newState); | |
// if not object, use new value | |
} else { | |
this.putState(partialState); | |
} | |
} | |
// subscribe to changes | |
}, { | |
key: 'subscribe', | |
value: function subscribe(handler) { | |
this.on('update', handler); | |
} | |
// unsubscribe to changes | |
}, { | |
key: 'unsubscribe', | |
value: function unsubscribe(handler) { | |
this.removeListener('update', handler); | |
} | |
// | |
// private | |
// | |
// read from persistence | |
}, { | |
key: '_getState', | |
value: function _getState() { | |
return this._state; | |
} | |
// write to persistence | |
}, { | |
key: '_putState', | |
value: function _putState(newState) { | |
this._state = newState; | |
} | |
}]); | |
return ObservableStore; | |
}(EventEmitter); | |
module.exports = ObservableStore; | |
},{"babel-runtime/core-js/object/assign":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/assign.js","babel-runtime/core-js/object/get-prototype-of":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/get-prototype-of.js","babel-runtime/helpers/classCallCheck":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/classCallCheck.js","babel-runtime/helpers/createClass":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/createClass.js","babel-runtime/helpers/inherits":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/inherits.js","babel-runtime/helpers/possibleConstructorReturn":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/possibleConstructorReturn.js","babel-runtime/helpers/typeof":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/typeof.js","events":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/events/events.js","xtend":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/xtend/immutable.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/obs-store/lib/asStream.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var _getPrototypeOf = _dereq_('babel-runtime/core-js/object/get-prototype-of'); | |
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); | |
var _classCallCheck2 = _dereq_('babel-runtime/helpers/classCallCheck'); | |
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | |
var _createClass2 = _dereq_('babel-runtime/helpers/createClass'); | |
var _createClass3 = _interopRequireDefault(_createClass2); | |
var _possibleConstructorReturn2 = _dereq_('babel-runtime/helpers/possibleConstructorReturn'); | |
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | |
var _get2 = _dereq_('babel-runtime/helpers/get'); | |
var _get3 = _interopRequireDefault(_get2); | |
var _inherits2 = _dereq_('babel-runtime/helpers/inherits'); | |
var _inherits3 = _interopRequireDefault(_inherits2); | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
var DuplexStream = _dereq_('stream').Duplex; | |
module.exports = asStream; | |
function asStream(obsStore) { | |
return new ObsStoreStream(obsStore); | |
} | |
// | |
// | |
// | |
// | |
var ObsStoreStream = function (_DuplexStream) { | |
(0, _inherits3.default)(ObsStoreStream, _DuplexStream); | |
function ObsStoreStream(obsStore) { | |
(0, _classCallCheck3.default)(this, ObsStoreStream); | |
// dont buffer outgoing updates | |
var _this = (0, _possibleConstructorReturn3.default)(this, (ObsStoreStream.__proto__ || (0, _getPrototypeOf2.default)(ObsStoreStream)).call(this, { | |
// pass values, not serializations | |
objectMode: true | |
})); | |
_this.resume(); | |
// save handler so we can unsubscribe later | |
_this.handler = function (state) { | |
return _this.push(state); | |
}; | |
// subscribe to obsStore changes | |
_this.obsStore = obsStore; | |
_this.obsStore.subscribe(_this.handler); | |
return _this; | |
} | |
// emit current state on new destination | |
(0, _createClass3.default)(ObsStoreStream, [{ | |
key: 'pipe', | |
value: function pipe(dest, options) { | |
var result = DuplexStream.prototype.pipe.call(this, dest, options); | |
dest.write(this.obsStore.getState()); | |
return result; | |
} | |
// write from incomming stream to state | |
}, { | |
key: '_write', | |
value: function _write(chunk, encoding, callback) { | |
this.obsStore.putState(chunk); | |
callback(); | |
} | |
// noop - outgoing stream is asking us if we have data we arent giving it | |
}, { | |
key: '_read', | |
value: function _read(size) {} | |
// unsubscribe from event emitter | |
}, { | |
key: '_destroy', | |
value: function _destroy(err, callback) { | |
this.obsStore.unsubscribe(this.handler); | |
(0, _get3.default)(ObsStoreStream.prototype.__proto__ || (0, _getPrototypeOf2.default)(ObsStoreStream.prototype), '_destroy', this).call(this, err, callback); | |
} | |
}]); | |
return ObsStoreStream; | |
}(DuplexStream); | |
},{"babel-runtime/core-js/object/get-prototype-of":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/core-js/object/get-prototype-of.js","babel-runtime/helpers/classCallCheck":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/classCallCheck.js","babel-runtime/helpers/createClass":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/createClass.js","babel-runtime/helpers/get":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/get.js","babel-runtime/helpers/inherits":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/inherits.js","babel-runtime/helpers/possibleConstructorReturn":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/babel-runtime/helpers/possibleConstructorReturn.js","stream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/stream-browserify/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/once/once.js":[function(_dereq_,module,exports){ | |
var wrappy = _dereq_('wrappy') | |
module.exports = wrappy(once) | |
module.exports.strict = wrappy(onceStrict) | |
once.proto = once(function () { | |
Object.defineProperty(Function.prototype, 'once', { | |
value: function () { | |
return once(this) | |
}, | |
configurable: true | |
}) | |
Object.defineProperty(Function.prototype, 'onceStrict', { | |
value: function () { | |
return onceStrict(this) | |
}, | |
configurable: true | |
}) | |
}) | |
function once (fn) { | |
var f = function () { | |
if (f.called) return f.value | |
f.called = true | |
return f.value = fn.apply(this, arguments) | |
} | |
f.called = false | |
return f | |
} | |
function onceStrict (fn) { | |
var f = function () { | |
if (f.called) | |
throw new Error(f.onceError) | |
f.called = true | |
return f.value = fn.apply(this, arguments) | |
} | |
var name = fn.name || 'Function wrapped with `once`' | |
f.onceError = name + " shouldn't be called more than once" | |
f.called = false | |
return f | |
} | |
},{"wrappy":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/wrappy/wrappy.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/post-message-stream/index.js":[function(_dereq_,module,exports){ | |
const DuplexStream = _dereq_('readable-stream').Duplex | |
const inherits = _dereq_('util').inherits | |
module.exports = PostMessageStream | |
inherits(PostMessageStream, DuplexStream) | |
function PostMessageStream (opts) { | |
DuplexStream.call(this, { | |
objectMode: true, | |
}) | |
this._name = opts.name | |
this._target = opts.target | |
this._targetWindow = opts.targetWindow || window | |
this._origin = (opts.targetWindow ? '*' : location.origin) | |
// initialization flags | |
this._init = false | |
this._haveSyn = false | |
window.addEventListener('message', this._onMessage.bind(this), false) | |
// send syncorization message | |
this._write('SYN', null, noop) | |
this.cork() | |
} | |
// private | |
PostMessageStream.prototype._onMessage = function (event) { | |
var msg = event.data | |
// validate message | |
if (this._origin !== '*' && event.origin !== this._origin) return | |
if (event.source !== this._targetWindow) return | |
if (typeof msg !== 'object') return | |
if (msg.target !== this._name) return | |
if (!msg.data) return | |
if (!this._init) { | |
if (msg.data === 'SYN') { | |
this._haveSyn = true | |
this._write('ACK', null, noop) | |
} else if (msg.data === 'ACK') { | |
this._init = true | |
if (!this._haveSyn) { | |
this._write('ACK', null, noop) | |
} | |
this.uncork() | |
} | |
} else { | |
// forward message | |
try { | |
this.push(msg.data) | |
} catch (err) { | |
this.emit('error', err) | |
} | |
} | |
} | |
// stream plumbing | |
PostMessageStream.prototype._read = noop | |
PostMessageStream.prototype._write = function (data, encoding, cb) { | |
var message = { | |
target: this._target, | |
data: data, | |
} | |
this._targetWindow.postMessage(message, this._origin) | |
cb() | |
} | |
// util | |
function noop () {} | |
},{"readable-stream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/readable-browser.js","util":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/util/util.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/process-nextick-args/index.js":[function(_dereq_,module,exports){ | |
(function (process){ | |
'use strict'; | |
if (!process.version || | |
process.version.indexOf('v0.') === 0 || | |
process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { | |
module.exports = nextTick; | |
} else { | |
module.exports = process.nextTick; | |
} | |
function nextTick(fn, arg1, arg2, arg3) { | |
if (typeof fn !== 'function') { | |
throw new TypeError('"callback" argument must be a function'); | |
} | |
var len = arguments.length; | |
var args, i; | |
switch (len) { | |
case 0: | |
case 1: | |
return process.nextTick(fn); | |
case 2: | |
return process.nextTick(function afterTickOne() { | |
fn.call(null, arg1); | |
}); | |
case 3: | |
return process.nextTick(function afterTickTwo() { | |
fn.call(null, arg1, arg2); | |
}); | |
case 4: | |
return process.nextTick(function afterTickThree() { | |
fn.call(null, arg1, arg2, arg3); | |
}); | |
default: | |
args = new Array(len - 1); | |
i = 0; | |
while (i < args.length) { | |
args[i++] = arguments[i]; | |
} | |
return process.nextTick(function afterTick() { | |
fn.apply(null, args); | |
}); | |
} | |
} | |
}).call(this,_dereq_('_process')) | |
},{"_process":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/process/browser.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/pump/index.js":[function(_dereq_,module,exports){ | |
(function (process){ | |
var once = _dereq_('once') | |
var eos = _dereq_('end-of-stream') | |
var fs = _dereq_('fs') // we only need fs to get the ReadStream and WriteStream prototypes | |
var noop = function () {} | |
var ancient = /^v?\.0/.test(process.version) | |
var isFn = function (fn) { | |
return typeof fn === 'function' | |
} | |
var isFS = function (stream) { | |
if (!ancient) return false // newer node version do not need to care about fs is a special way | |
if (!fs) return false // browser | |
return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close) | |
} | |
var isRequest = function (stream) { | |
return stream.setHeader && isFn(stream.abort) | |
} | |
var destroyer = function (stream, reading, writing, callback) { | |
callback = once(callback) | |
var closed = false | |
stream.on('close', function () { | |
closed = true | |
}) | |
eos(stream, {readable: reading, writable: writing}, function (err) { | |
if (err) return callback(err) | |
closed = true | |
callback() | |
}) | |
var destroyed = false | |
return function (err) { | |
if (closed) return | |
if (destroyed) return | |
destroyed = true | |
if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks | |
if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want | |
if (isFn(stream.destroy)) return stream.destroy() | |
callback(err || new Error('stream was destroyed')) | |
} | |
} | |
var call = function (fn) { | |
fn() | |
} | |
var pipe = function (from, to) { | |
return from.pipe(to) | |
} | |
var pump = function () { | |
var streams = Array.prototype.slice.call(arguments) | |
var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop | |
if (Array.isArray(streams[0])) streams = streams[0] | |
if (streams.length < 2) throw new Error('pump requires two streams per minimum') | |
var error | |
var destroys = streams.map(function (stream, i) { | |
var reading = i < streams.length - 1 | |
var writing = i > 0 | |
return destroyer(stream, reading, writing, function (err) { | |
if (!error) error = err | |
if (err) destroys.forEach(call) | |
if (reading) return | |
destroys.forEach(call) | |
callback(error) | |
}) | |
}) | |
return streams.reduce(pipe) | |
} | |
module.exports = pump | |
}).call(this,_dereq_('_process')) | |
},{"_process":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/process/browser.js","end-of-stream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/end-of-stream/index.js","fs":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browser-resolve/empty.js","once":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/once/once.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/duplex-browser.js":[function(_dereq_,module,exports){ | |
module.exports = _dereq_('./lib/_stream_duplex.js'); | |
},{"./lib/_stream_duplex.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_duplex.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_duplex.js":[function(_dereq_,module,exports){ | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
// a duplex stream is just a stream that is both readable and writable. | |
// Since JS doesn't have multiple prototypal inheritance, this class | |
// prototypally inherits from Readable, and then parasitically from | |
// Writable. | |
'use strict'; | |
/*<replacement>*/ | |
var processNextTick = _dereq_('process-nextick-args'); | |
/*</replacement>*/ | |
/*<replacement>*/ | |
var objectKeys = Object.keys || function (obj) { | |
var keys = []; | |
for (var key in obj) { | |
keys.push(key); | |
}return keys; | |
}; | |
/*</replacement>*/ | |
module.exports = Duplex; | |
/*<replacement>*/ | |
var util = _dereq_('core-util-is'); | |
util.inherits = _dereq_('inherits'); | |
/*</replacement>*/ | |
var Readable = _dereq_('./_stream_readable'); | |
var Writable = _dereq_('./_stream_writable'); | |
util.inherits(Duplex, Readable); | |
var keys = objectKeys(Writable.prototype); | |
for (var v = 0; v < keys.length; v++) { | |
var method = keys[v]; | |
if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; | |
} | |
function Duplex(options) { | |
if (!(this instanceof Duplex)) return new Duplex(options); | |
Readable.call(this, options); | |
Writable.call(this, options); | |
if (options && options.readable === false) this.readable = false; | |
if (options && options.writable === false) this.writable = false; | |
this.allowHalfOpen = true; | |
if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; | |
this.once('end', onend); | |
} | |
// the no-half-open enforcer | |
function onend() { | |
// if we allow half-open state, or if the writable side ended, | |
// then we're ok. | |
if (this.allowHalfOpen || this._writableState.ended) return; | |
// no more data can be written. | |
// But allow more writes to happen in this tick. | |
processNextTick(onEndNT, this); | |
} | |
function onEndNT(self) { | |
self.end(); | |
} | |
Object.defineProperty(Duplex.prototype, 'destroyed', { | |
get: function () { | |
if (this._readableState === undefined || this._writableState === undefined) { | |
return false; | |
} | |
return this._readableState.destroyed && this._writableState.destroyed; | |
}, | |
set: function (value) { | |
// we ignore the value if the stream | |
// has not been initialized yet | |
if (this._readableState === undefined || this._writableState === undefined) { | |
return; | |
} | |
// backward compatibility, the user is explicitly | |
// managing destroyed | |
this._readableState.destroyed = value; | |
this._writableState.destroyed = value; | |
} | |
}); | |
Duplex.prototype._destroy = function (err, cb) { | |
this.push(null); | |
this.end(); | |
processNextTick(cb, err); | |
}; | |
function forEach(xs, f) { | |
for (var i = 0, l = xs.length; i < l; i++) { | |
f(xs[i], i); | |
} | |
} | |
},{"./_stream_readable":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_readable.js","./_stream_writable":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_writable.js","core-util-is":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-util-is/lib/util.js","inherits":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/inherits/inherits_browser.js","process-nextick-args":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/process-nextick-args/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_passthrough.js":[function(_dereq_,module,exports){ | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
// a passthrough stream. | |
// basically just the most minimal sort of Transform stream. | |
// Every written chunk gets output as-is. | |
'use strict'; | |
module.exports = PassThrough; | |
var Transform = _dereq_('./_stream_transform'); | |
/*<replacement>*/ | |
var util = _dereq_('core-util-is'); | |
util.inherits = _dereq_('inherits'); | |
/*</replacement>*/ | |
util.inherits(PassThrough, Transform); | |
function PassThrough(options) { | |
if (!(this instanceof PassThrough)) return new PassThrough(options); | |
Transform.call(this, options); | |
} | |
PassThrough.prototype._transform = function (chunk, encoding, cb) { | |
cb(null, chunk); | |
}; | |
},{"./_stream_transform":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_transform.js","core-util-is":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-util-is/lib/util.js","inherits":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/inherits/inherits_browser.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_readable.js":[function(_dereq_,module,exports){ | |
(function (process,global){ | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
'use strict'; | |
/*<replacement>*/ | |
var processNextTick = _dereq_('process-nextick-args'); | |
/*</replacement>*/ | |
module.exports = Readable; | |
/*<replacement>*/ | |
var isArray = _dereq_('isarray'); | |
/*</replacement>*/ | |
/*<replacement>*/ | |
var Duplex; | |
/*</replacement>*/ | |
Readable.ReadableState = ReadableState; | |
/*<replacement>*/ | |
var EE = _dereq_('events').EventEmitter; | |
var EElistenerCount = function (emitter, type) { | |
return emitter.listeners(type).length; | |
}; | |
/*</replacement>*/ | |
/*<replacement>*/ | |
var Stream = _dereq_('./internal/streams/stream'); | |
/*</replacement>*/ | |
// TODO(bmeurer): Change this back to const once hole checks are | |
// properly optimized away early in Ignition+TurboFan. | |
/*<replacement>*/ | |
var Buffer = _dereq_('safe-buffer').Buffer; | |
var OurUint8Array = global.Uint8Array || function () {}; | |
function _uint8ArrayToBuffer(chunk) { | |
return Buffer.from(chunk); | |
} | |
function _isUint8Array(obj) { | |
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; | |
} | |
/*</replacement>*/ | |
/*<replacement>*/ | |
var util = _dereq_('core-util-is'); | |
util.inherits = _dereq_('inherits'); | |
/*</replacement>*/ | |
/*<replacement>*/ | |
var debugUtil = _dereq_('util'); | |
var debug = void 0; | |
if (debugUtil && debugUtil.debuglog) { | |
debug = debugUtil.debuglog('stream'); | |
} else { | |
debug = function () {}; | |
} | |
/*</replacement>*/ | |
var BufferList = _dereq_('./internal/streams/BufferList'); | |
var destroyImpl = _dereq_('./internal/streams/destroy'); | |
var StringDecoder; | |
util.inherits(Readable, Stream); | |
var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; | |
function prependListener(emitter, event, fn) { | |
// Sadly this is not cacheable as some libraries bundle their own | |
// event emitter implementation with them. | |
if (typeof emitter.prependListener === 'function') { | |
return emitter.prependListener(event, fn); | |
} else { | |
// This is a hack to make sure that our error handler is attached before any | |
// userland ones. NEVER DO THIS. This is here only because this code needs | |
// to continue to work with older versions of Node.js that do not include | |
// the prependListener() method. The goal is to eventually remove this hack. | |
if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; | |
} | |
} | |
function ReadableState(options, stream) { | |
Duplex = Duplex || _dereq_('./_stream_duplex'); | |
options = options || {}; | |
// object stream flag. Used to make read(n) ignore n and to | |
// make all the buffer merging and length checks go away | |
this.objectMode = !!options.objectMode; | |
if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; | |
// the point at which it stops calling _read() to fill the buffer | |
// Note: 0 is a valid value, means "don't call _read preemptively ever" | |
var hwm = options.highWaterMark; | |
var defaultHwm = this.objectMode ? 16 : 16 * 1024; | |
this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; | |
// cast to ints. | |
this.highWaterMark = Math.floor(this.highWaterMark); | |
// A linked list is used to store data chunks instead of an array because the | |
// linked list can remove elements from the beginning faster than | |
// array.shift() | |
this.buffer = new BufferList(); | |
this.length = 0; | |
this.pipes = null; | |
this.pipesCount = 0; | |
this.flowing = null; | |
this.ended = false; | |
this.endEmitted = false; | |
this.reading = false; | |
// a flag to be able to tell if the event 'readable'/'data' is emitted | |
// immediately, or on a later tick. We set this to true at first, because | |
// any actions that shouldn't happen until "later" should generally also | |
// not happen before the first read call. | |
this.sync = true; | |
// whenever we return null, then we set a flag to say | |
// that we're awaiting a 'readable' event emission. | |
this.needReadable = false; | |
this.emittedReadable = false; | |
this.readableListening = false; | |
this.resumeScheduled = false; | |
// has it been destroyed | |
this.destroyed = false; | |
// Crypto is kind of old and crusty. Historically, its default string | |
// encoding is 'binary' so we have to make this configurable. | |
// Everything else in the universe uses 'utf8', though. | |
this.defaultEncoding = options.defaultEncoding || 'utf8'; | |
// the number of writers that are awaiting a drain event in .pipe()s | |
this.awaitDrain = 0; | |
// if true, a maybeReadMore has been scheduled | |
this.readingMore = false; | |
this.decoder = null; | |
this.encoding = null; | |
if (options.encoding) { | |
if (!StringDecoder) StringDecoder = _dereq_('string_decoder/').StringDecoder; | |
this.decoder = new StringDecoder(options.encoding); | |
this.encoding = options.encoding; | |
} | |
} | |
function Readable(options) { | |
Duplex = Duplex || _dereq_('./_stream_duplex'); | |
if (!(this instanceof Readable)) return new Readable(options); | |
this._readableState = new ReadableState(options, this); | |
// legacy | |
this.readable = true; | |
if (options) { | |
if (typeof options.read === 'function') this._read = options.read; | |
if (typeof options.destroy === 'function') this._destroy = options.destroy; | |
} | |
Stream.call(this); | |
} | |
Object.defineProperty(Readable.prototype, 'destroyed', { | |
get: function () { | |
if (this._readableState === undefined) { | |
return false; | |
} | |
return this._readableState.destroyed; | |
}, | |
set: function (value) { | |
// we ignore the value if the stream | |
// has not been initialized yet | |
if (!this._readableState) { | |
return; | |
} | |
// backward compatibility, the user is explicitly | |
// managing destroyed | |
this._readableState.destroyed = value; | |
} | |
}); | |
Readable.prototype.destroy = destroyImpl.destroy; | |
Readable.prototype._undestroy = destroyImpl.undestroy; | |
Readable.prototype._destroy = function (err, cb) { | |
this.push(null); | |
cb(err); | |
}; | |
// Manually shove something into the read() buffer. | |
// This returns true if the highWaterMark has not been hit yet, | |
// similar to how Writable.write() returns true if you should | |
// write() some more. | |
Readable.prototype.push = function (chunk, encoding) { | |
var state = this._readableState; | |
var skipChunkCheck; | |
if (!state.objectMode) { | |
if (typeof chunk === 'string') { | |
encoding = encoding || state.defaultEncoding; | |
if (encoding !== state.encoding) { | |
chunk = Buffer.from(chunk, encoding); | |
encoding = ''; | |
} | |
skipChunkCheck = true; | |
} | |
} else { | |
skipChunkCheck = true; | |
} | |
return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); | |
}; | |
// Unshift should *always* be something directly out of read() | |
Readable.prototype.unshift = function (chunk) { | |
return readableAddChunk(this, chunk, null, true, false); | |
}; | |
function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { | |
var state = stream._readableState; | |
if (chunk === null) { | |
state.reading = false; | |
onEofChunk(stream, state); | |
} else { | |
var er; | |
if (!skipChunkCheck) er = chunkInvalid(state, chunk); | |
if (er) { | |
stream.emit('error', er); | |
} else if (state.objectMode || chunk && chunk.length > 0) { | |
if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { | |
chunk = _uint8ArrayToBuffer(chunk); | |
} | |
if (addToFront) { | |
if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); | |
} else if (state.ended) { | |
stream.emit('error', new Error('stream.push() after EOF')); | |
} else { | |
state.reading = false; | |
if (state.decoder && !encoding) { | |
chunk = state.decoder.write(chunk); | |
if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); | |
} else { | |
addChunk(stream, state, chunk, false); | |
} | |
} | |
} else if (!addToFront) { | |
state.reading = false; | |
} | |
} | |
return needMoreData(state); | |
} | |
function addChunk(stream, state, chunk, addToFront) { | |
if (state.flowing && state.length === 0 && !state.sync) { | |
stream.emit('data', chunk); | |
stream.read(0); | |
} else { | |
// update the buffer info. | |
state.length += state.objectMode ? 1 : chunk.length; | |
if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); | |
if (state.needReadable) emitReadable(stream); | |
} | |
maybeReadMore(stream, state); | |
} | |
function chunkInvalid(state, chunk) { | |
var er; | |
if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { | |
er = new TypeError('Invalid non-string/buffer chunk'); | |
} | |
return er; | |
} | |
// if it's past the high water mark, we can push in some more. | |
// Also, if we have no data yet, we can stand some | |
// more bytes. This is to work around cases where hwm=0, | |
// such as the repl. Also, if the push() triggered a | |
// readable event, and the user called read(largeNumber) such that | |
// needReadable was set, then we ought to push more, so that another | |
// 'readable' event will be triggered. | |
function needMoreData(state) { | |
return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); | |
} | |
Readable.prototype.isPaused = function () { | |
return this._readableState.flowing === false; | |
}; | |
// backwards compatibility. | |
Readable.prototype.setEncoding = function (enc) { | |
if (!StringDecoder) StringDecoder = _dereq_('string_decoder/').StringDecoder; | |
this._readableState.decoder = new StringDecoder(enc); | |
this._readableState.encoding = enc; | |
return this; | |
}; | |
// Don't raise the hwm > 8MB | |
var MAX_HWM = 0x800000; | |
function computeNewHighWaterMark(n) { | |
if (n >= MAX_HWM) { | |
n = MAX_HWM; | |
} else { | |
// Get the next highest power of 2 to prevent increasing hwm excessively in | |
// tiny amounts | |
n--; | |
n |= n >>> 1; | |
n |= n >>> 2; | |
n |= n >>> 4; | |
n |= n >>> 8; | |
n |= n >>> 16; | |
n++; | |
} | |
return n; | |
} | |
// This function is designed to be inlinable, so please take care when making | |
// changes to the function body. | |
function howMuchToRead(n, state) { | |
if (n <= 0 || state.length === 0 && state.ended) return 0; | |
if (state.objectMode) return 1; | |
if (n !== n) { | |
// Only flow one buffer at a time | |
if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; | |
} | |
// If we're asking for more than the current hwm, then raise the hwm. | |
if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); | |
if (n <= state.length) return n; | |
// Don't have enough | |
if (!state.ended) { | |
state.needReadable = true; | |
return 0; | |
} | |
return state.length; | |
} | |
// you can override either this method, or the async _read(n) below. | |
Readable.prototype.read = function (n) { | |
debug('read', n); | |
n = parseInt(n, 10); | |
var state = this._readableState; | |
var nOrig = n; | |
if (n !== 0) state.emittedReadable = false; | |
// if we're doing read(0) to trigger a readable event, but we | |
// already have a bunch of data in the buffer, then just trigger | |
// the 'readable' event and move on. | |
if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { | |
debug('read: emitReadable', state.length, state.ended); | |
if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); | |
return null; | |
} | |
n = howMuchToRead(n, state); | |
// if we've ended, and we're now clear, then finish it up. | |
if (n === 0 && state.ended) { | |
if (state.length === 0) endReadable(this); | |
return null; | |
} | |
// All the actual chunk generation logic needs to be | |
// *below* the call to _read. The reason is that in certain | |
// synthetic stream cases, such as passthrough streams, _read | |
// may be a completely synchronous operation which may change | |
// the state of the read buffer, providing enough data when | |
// before there was *not* enough. | |
// | |
// So, the steps are: | |
// 1. Figure out what the state of things will be after we do | |
// a read from the buffer. | |
// | |
// 2. If that resulting state will trigger a _read, then call _read. | |
// Note that this may be asynchronous, or synchronous. Yes, it is | |
// deeply ugly to write APIs this way, but that still doesn't mean | |
// that the Readable class should behave improperly, as streams are | |
// designed to be sync/async agnostic. | |
// Take note if the _read call is sync or async (ie, if the read call | |
// has returned yet), so that we know whether or not it's safe to emit | |
// 'readable' etc. | |
// | |
// 3. Actually pull the requested chunks out of the buffer and return. | |
// if we need a readable event, then we need to do some reading. | |
var doRead = state.needReadable; | |
debug('need readable', doRead); | |
// if we currently have less than the highWaterMark, then also read some | |
if (state.length === 0 || state.length - n < state.highWaterMark) { | |
doRead = true; | |
debug('length less than watermark', doRead); | |
} | |
// however, if we've ended, then there's no point, and if we're already | |
// reading, then it's unnecessary. | |
if (state.ended || state.reading) { | |
doRead = false; | |
debug('reading or ended', doRead); | |
} else if (doRead) { | |
debug('do read'); | |
state.reading = true; | |
state.sync = true; | |
// if the length is currently zero, then we *need* a readable event. | |
if (state.length === 0) state.needReadable = true; | |
// call internal read method | |
this._read(state.highWaterMark); | |
state.sync = false; | |
// If _read pushed data synchronously, then `reading` will be false, | |
// and we need to re-evaluate how much data we can return to the user. | |
if (!state.reading) n = howMuchToRead(nOrig, state); | |
} | |
var ret; | |
if (n > 0) ret = fromList(n, state);else ret = null; | |
if (ret === null) { | |
state.needReadable = true; | |
n = 0; | |
} else { | |
state.length -= n; | |
} | |
if (state.length === 0) { | |
// If we have nothing in the buffer, then we want to know | |
// as soon as we *do* get something into the buffer. | |
if (!state.ended) state.needReadable = true; | |
// If we tried to read() past the EOF, then emit end on the next tick. | |
if (nOrig !== n && state.ended) endReadable(this); | |
} | |
if (ret !== null) this.emit('data', ret); | |
return ret; | |
}; | |
function onEofChunk(stream, state) { | |
if (state.ended) return; | |
if (state.decoder) { | |
var chunk = state.decoder.end(); | |
if (chunk && chunk.length) { | |
state.buffer.push(chunk); | |
state.length += state.objectMode ? 1 : chunk.length; | |
} | |
} | |
state.ended = true; | |
// emit 'readable' now to make sure it gets picked up. | |
emitReadable(stream); | |
} | |
// Don't emit readable right away in sync mode, because this can trigger | |
// another read() call => stack overflow. This way, it might trigger | |
// a nextTick recursion warning, but that's not so bad. | |
function emitReadable(stream) { | |
var state = stream._readableState; | |
state.needReadable = false; | |
if (!state.emittedReadable) { | |
debug('emitReadable', state.flowing); | |
state.emittedReadable = true; | |
if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); | |
} | |
} | |
function emitReadable_(stream) { | |
debug('emit readable'); | |
stream.emit('readable'); | |
flow(stream); | |
} | |
// at this point, the user has presumably seen the 'readable' event, | |
// and called read() to consume some data. that may have triggered | |
// in turn another _read(n) call, in which case reading = true if | |
// it's in progress. | |
// However, if we're not ended, or reading, and the length < hwm, | |
// then go ahead and try to read some more preemptively. | |
function maybeReadMore(stream, state) { | |
if (!state.readingMore) { | |
state.readingMore = true; | |
processNextTick(maybeReadMore_, stream, state); | |
} | |
} | |
function maybeReadMore_(stream, state) { | |
var len = state.length; | |
while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { | |
debug('maybeReadMore read 0'); | |
stream.read(0); | |
if (len === state.length) | |
// didn't get any data, stop spinning. | |
break;else len = state.length; | |
} | |
state.readingMore = false; | |
} | |
// abstract method. to be overridden in specific implementation classes. | |
// call cb(er, data) where data is <= n in length. | |
// for virtual (non-string, non-buffer) streams, "length" is somewhat | |
// arbitrary, and perhaps not very meaningful. | |
Readable.prototype._read = function (n) { | |
this.emit('error', new Error('_read() is not implemented')); | |
}; | |
Readable.prototype.pipe = function (dest, pipeOpts) { | |
var src = this; | |
var state = this._readableState; | |
switch (state.pipesCount) { | |
case 0: | |
state.pipes = dest; | |
break; | |
case 1: | |
state.pipes = [state.pipes, dest]; | |
break; | |
default: | |
state.pipes.push(dest); | |
break; | |
} | |
state.pipesCount += 1; | |
debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); | |
var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; | |
var endFn = doEnd ? onend : unpipe; | |
if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); | |
dest.on('unpipe', onunpipe); | |
function onunpipe(readable, unpipeInfo) { | |
debug('onunpipe'); | |
if (readable === src) { | |
if (unpipeInfo && unpipeInfo.hasUnpiped === false) { | |
unpipeInfo.hasUnpiped = true; | |
cleanup(); | |
} | |
} | |
} | |
function onend() { | |
debug('onend'); | |
dest.end(); | |
} | |
// when the dest drains, it reduces the awaitDrain counter | |
// on the source. This would be more elegant with a .once() | |
// handler in flow(), but adding and removing repeatedly is | |
// too slow. | |
var ondrain = pipeOnDrain(src); | |
dest.on('drain', ondrain); | |
var cleanedUp = false; | |
function cleanup() { | |
debug('cleanup'); | |
// cleanup event handlers once the pipe is broken | |
dest.removeListener('close', onclose); | |
dest.removeListener('finish', onfinish); | |
dest.removeListener('drain', ondrain); | |
dest.removeListener('error', onerror); | |
dest.removeListener('unpipe', onunpipe); | |
src.removeListener('end', onend); | |
src.removeListener('end', unpipe); | |
src.removeListener('data', ondata); | |
cleanedUp = true; | |
// if the reader is waiting for a drain event from this | |
// specific writer, then it would cause it to never start | |
// flowing again. | |
// So, if this is awaiting a drain, then we just call it now. | |
// If we don't know, then assume that we are waiting for one. | |
if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); | |
} | |
// If the user pushes more data while we're writing to dest then we'll end up | |
// in ondata again. However, we only want to increase awaitDrain once because | |
// dest will only emit one 'drain' event for the multiple writes. | |
// => Introduce a guard on increasing awaitDrain. | |
var increasedAwaitDrain = false; | |
src.on('data', ondata); | |
function ondata(chunk) { | |
debug('ondata'); | |
increasedAwaitDrain = false; | |
var ret = dest.write(chunk); | |
if (false === ret && !increasedAwaitDrain) { | |
// If the user unpiped during `dest.write()`, it is possible | |
// to get stuck in a permanently paused state if that write | |
// also returned false. | |
// => Check whether `dest` is still a piping destination. | |
if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { | |
debug('false write response, pause', src._readableState.awaitDrain); | |
src._readableState.awaitDrain++; | |
increasedAwaitDrain = true; | |
} | |
src.pause(); | |
} | |
} | |
// if the dest has an error, then stop piping into it. | |
// however, don't suppress the throwing behavior for this. | |
function onerror(er) { | |
debug('onerror', er); | |
unpipe(); | |
dest.removeListener('error', onerror); | |
if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); | |
} | |
// Make sure our error handler is attached before userland ones. | |
prependListener(dest, 'error', onerror); | |
// Both close and finish should trigger unpipe, but only once. | |
function onclose() { | |
dest.removeListener('finish', onfinish); | |
unpipe(); | |
} | |
dest.once('close', onclose); | |
function onfinish() { | |
debug('onfinish'); | |
dest.removeListener('close', onclose); | |
unpipe(); | |
} | |
dest.once('finish', onfinish); | |
function unpipe() { | |
debug('unpipe'); | |
src.unpipe(dest); | |
} | |
// tell the dest that it's being piped to | |
dest.emit('pipe', src); | |
// start the flow if it hasn't been started already. | |
if (!state.flowing) { | |
debug('pipe resume'); | |
src.resume(); | |
} | |
return dest; | |
}; | |
function pipeOnDrain(src) { | |
return function () { | |
var state = src._readableState; | |
debug('pipeOnDrain', state.awaitDrain); | |
if (state.awaitDrain) state.awaitDrain--; | |
if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { | |
state.flowing = true; | |
flow(src); | |
} | |
}; | |
} | |
Readable.prototype.unpipe = function (dest) { | |
var state = this._readableState; | |
var unpipeInfo = { hasUnpiped: false }; | |
// if we're not piping anywhere, then do nothing. | |
if (state.pipesCount === 0) return this; | |
// just one destination. most common case. | |
if (state.pipesCount === 1) { | |
// passed in one, but it's not the right one. | |
if (dest && dest !== state.pipes) return this; | |
if (!dest) dest = state.pipes; | |
// got a match. | |
state.pipes = null; | |
state.pipesCount = 0; | |
state.flowing = false; | |
if (dest) dest.emit('unpipe', this, unpipeInfo); | |
return this; | |
} | |
// slow case. multiple pipe destinations. | |
if (!dest) { | |
// remove all. | |
var dests = state.pipes; | |
var len = state.pipesCount; | |
state.pipes = null; | |
state.pipesCount = 0; | |
state.flowing = false; | |
for (var i = 0; i < len; i++) { | |
dests[i].emit('unpipe', this, unpipeInfo); | |
}return this; | |
} | |
// try to find the right one. | |
var index = indexOf(state.pipes, dest); | |
if (index === -1) return this; | |
state.pipes.splice(index, 1); | |
state.pipesCount -= 1; | |
if (state.pipesCount === 1) state.pipes = state.pipes[0]; | |
dest.emit('unpipe', this, unpipeInfo); | |
return this; | |
}; | |
// set up data events if they are asked for | |
// Ensure readable listeners eventually get something | |
Readable.prototype.on = function (ev, fn) { | |
var res = Stream.prototype.on.call(this, ev, fn); | |
if (ev === 'data') { | |
// Start flowing on next tick if stream isn't explicitly paused | |
if (this._readableState.flowing !== false) this.resume(); | |
} else if (ev === 'readable') { | |
var state = this._readableState; | |
if (!state.endEmitted && !state.readableListening) { | |
state.readableListening = state.needReadable = true; | |
state.emittedReadable = false; | |
if (!state.reading) { | |
processNextTick(nReadingNextTick, this); | |
} else if (state.length) { | |
emitReadable(this); | |
} | |
} | |
} | |
return res; | |
}; | |
Readable.prototype.addListener = Readable.prototype.on; | |
function nReadingNextTick(self) { | |
debug('readable nexttick read 0'); | |
self.read(0); | |
} | |
// pause() and resume() are remnants of the legacy readable stream API | |
// If the user uses them, then switch into old mode. | |
Readable.prototype.resume = function () { | |
var state = this._readableState; | |
if (!state.flowing) { | |
debug('resume'); | |
state.flowing = true; | |
resume(this, state); | |
} | |
return this; | |
}; | |
function resume(stream, state) { | |
if (!state.resumeScheduled) { | |
state.resumeScheduled = true; | |
processNextTick(resume_, stream, state); | |
} | |
} | |
function resume_(stream, state) { | |
if (!state.reading) { | |
debug('resume read 0'); | |
stream.read(0); | |
} | |
state.resumeScheduled = false; | |
state.awaitDrain = 0; | |
stream.emit('resume'); | |
flow(stream); | |
if (state.flowing && !state.reading) stream.read(0); | |
} | |
Readable.prototype.pause = function () { | |
debug('call pause flowing=%j', this._readableState.flowing); | |
if (false !== this._readableState.flowing) { | |
debug('pause'); | |
this._readableState.flowing = false; | |
this.emit('pause'); | |
} | |
return this; | |
}; | |
function flow(stream) { | |
var state = stream._readableState; | |
debug('flow', state.flowing); | |
while (state.flowing && stream.read() !== null) {} | |
} | |
// wrap an old-style stream as the async data source. | |
// This is *not* part of the readable stream interface. | |
// It is an ugly unfortunate mess of history. | |
Readable.prototype.wrap = function (stream) { | |
var state = this._readableState; | |
var paused = false; | |
var self = this; | |
stream.on('end', function () { | |
debug('wrapped end'); | |
if (state.decoder && !state.ended) { | |
var chunk = state.decoder.end(); | |
if (chunk && chunk.length) self.push(chunk); | |
} | |
self.push(null); | |
}); | |
stream.on('data', function (chunk) { | |
debug('wrapped data'); | |
if (state.decoder) chunk = state.decoder.write(chunk); | |
// don't skip over falsy values in objectMode | |
if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; | |
var ret = self.push(chunk); | |
if (!ret) { | |
paused = true; | |
stream.pause(); | |
} | |
}); | |
// proxy all the other methods. | |
// important when wrapping filters and duplexes. | |
for (var i in stream) { | |
if (this[i] === undefined && typeof stream[i] === 'function') { | |
this[i] = function (method) { | |
return function () { | |
return stream[method].apply(stream, arguments); | |
}; | |
}(i); | |
} | |
} | |
// proxy certain important events. | |
for (var n = 0; n < kProxyEvents.length; n++) { | |
stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n])); | |
} | |
// when we try to consume some more bytes, simply unpause the | |
// underlying stream. | |
self._read = function (n) { | |
debug('wrapped _read', n); | |
if (paused) { | |
paused = false; | |
stream.resume(); | |
} | |
}; | |
return self; | |
}; | |
// exposed for testing purposes only. | |
Readable._fromList = fromList; | |
// Pluck off n bytes from an array of buffers. | |
// Length is the combined lengths of all the buffers in the list. | |
// This function is designed to be inlinable, so please take care when making | |
// changes to the function body. | |
function fromList(n, state) { | |
// nothing buffered | |
if (state.length === 0) return null; | |
var ret; | |
if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { | |
// read it all, truncate the list | |
if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); | |
state.buffer.clear(); | |
} else { | |
// read part of list | |
ret = fromListPartial(n, state.buffer, state.decoder); | |
} | |
return ret; | |
} | |
// Extracts only enough buffered data to satisfy the amount requested. | |
// This function is designed to be inlinable, so please take care when making | |
// changes to the function body. | |
function fromListPartial(n, list, hasStrings) { | |
var ret; | |
if (n < list.head.data.length) { | |
// slice is the same for buffers and strings | |
ret = list.head.data.slice(0, n); | |
list.head.data = list.head.data.slice(n); | |
} else if (n === list.head.data.length) { | |
// first chunk is a perfect match | |
ret = list.shift(); | |
} else { | |
// result spans more than one buffer | |
ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); | |
} | |
return ret; | |
} | |
// Copies a specified amount of characters from the list of buffered data | |
// chunks. | |
// This function is designed to be inlinable, so please take care when making | |
// changes to the function body. | |
function copyFromBufferString(n, list) { | |
var p = list.head; | |
var c = 1; | |
var ret = p.data; | |
n -= ret.length; | |
while (p = p.next) { | |
var str = p.data; | |
var nb = n > str.length ? str.length : n; | |
if (nb === str.length) ret += str;else ret += str.slice(0, n); | |
n -= nb; | |
if (n === 0) { | |
if (nb === str.length) { | |
++c; | |
if (p.next) list.head = p.next;else list.head = list.tail = null; | |
} else { | |
list.head = p; | |
p.data = str.slice(nb); | |
} | |
break; | |
} | |
++c; | |
} | |
list.length -= c; | |
return ret; | |
} | |
// Copies a specified amount of bytes from the list of buffered data chunks. | |
// This function is designed to be inlinable, so please take care when making | |
// changes to the function body. | |
function copyFromBuffer(n, list) { | |
var ret = Buffer.allocUnsafe(n); | |
var p = list.head; | |
var c = 1; | |
p.data.copy(ret); | |
n -= p.data.length; | |
while (p = p.next) { | |
var buf = p.data; | |
var nb = n > buf.length ? buf.length : n; | |
buf.copy(ret, ret.length - n, 0, nb); | |
n -= nb; | |
if (n === 0) { | |
if (nb === buf.length) { | |
++c; | |
if (p.next) list.head = p.next;else list.head = list.tail = null; | |
} else { | |
list.head = p; | |
p.data = buf.slice(nb); | |
} | |
break; | |
} | |
++c; | |
} | |
list.length -= c; | |
return ret; | |
} | |
function endReadable(stream) { | |
var state = stream._readableState; | |
// If we get here before consuming all the bytes, then that is a | |
// bug in node. Should never happen. | |
if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); | |
if (!state.endEmitted) { | |
state.ended = true; | |
processNextTick(endReadableNT, state, stream); | |
} | |
} | |
function endReadableNT(state, stream) { | |
// Check that we didn't get one last unshift. | |
if (!state.endEmitted && state.length === 0) { | |
state.endEmitted = true; | |
stream.readable = false; | |
stream.emit('end'); | |
} | |
} | |
function forEach(xs, f) { | |
for (var i = 0, l = xs.length; i < l; i++) { | |
f(xs[i], i); | |
} | |
} | |
function indexOf(xs, x) { | |
for (var i = 0, l = xs.length; i < l; i++) { | |
if (xs[i] === x) return i; | |
} | |
return -1; | |
} | |
}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
},{"./_stream_duplex":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_duplex.js","./internal/streams/BufferList":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/internal/streams/BufferList.js","./internal/streams/destroy":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/internal/streams/destroy.js","./internal/streams/stream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/internal/streams/stream-browser.js","_process":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/process/browser.js","core-util-is":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-util-is/lib/util.js","events":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/events/events.js","inherits":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/inherits/inherits_browser.js","isarray":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/isarray/index.js","process-nextick-args":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/process-nextick-args/index.js","safe-buffer":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-buffer/index.js","string_decoder/":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/string_decoder/lib/string_decoder.js","util":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browser-resolve/empty.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_transform.js":[function(_dereq_,module,exports){ | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
// a transform stream is a readable/writable stream where you do | |
// something with the data. Sometimes it's called a "filter", | |
// but that's not a great name for it, since that implies a thing where | |
// some bits pass through, and others are simply ignored. (That would | |
// be a valid example of a transform, of course.) | |
// | |
// While the output is causally related to the input, it's not a | |
// necessarily symmetric or synchronous transformation. For example, | |
// a zlib stream might take multiple plain-text writes(), and then | |
// emit a single compressed chunk some time in the future. | |
// | |
// Here's how this works: | |
// | |
// The Transform stream has all the aspects of the readable and writable | |
// stream classes. When you write(chunk), that calls _write(chunk,cb) | |
// internally, and returns false if there's a lot of pending writes | |
// buffered up. When you call read(), that calls _read(n) until | |
// there's enough pending readable data buffered up. | |
// | |
// In a transform stream, the written data is placed in a buffer. When | |
// _read(n) is called, it transforms the queued up data, calling the | |
// buffered _write cb's as it consumes chunks. If consuming a single | |
// written chunk would result in multiple output chunks, then the first | |
// outputted bit calls the readcb, and subsequent chunks just go into | |
// the read buffer, and will cause it to emit 'readable' if necessary. | |
// | |
// This way, back-pressure is actually determined by the reading side, | |
// since _read has to be called to start processing a new chunk. However, | |
// a pathological inflate type of transform can cause excessive buffering | |
// here. For example, imagine a stream where every byte of input is | |
// interpreted as an integer from 0-255, and then results in that many | |
// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in | |
// 1kb of data being output. In this case, you could write a very small | |
// amount of input, and end up with a very large amount of output. In | |
// such a pathological inflating mechanism, there'd be no way to tell | |
// the system to stop doing the transform. A single 4MB write could | |
// cause the system to run out of memory. | |
// | |
// However, even in such a pathological case, only a single written chunk | |
// would be consumed, and then the rest would wait (un-transformed) until | |
// the results of the previous transformed chunk were consumed. | |
'use strict'; | |
module.exports = Transform; | |
var Duplex = _dereq_('./_stream_duplex'); | |
/*<replacement>*/ | |
var util = _dereq_('core-util-is'); | |
util.inherits = _dereq_('inherits'); | |
/*</replacement>*/ | |
util.inherits(Transform, Duplex); | |
function TransformState(stream) { | |
this.afterTransform = function (er, data) { | |
return afterTransform(stream, er, data); | |
}; | |
this.needTransform = false; | |
this.transforming = false; | |
this.writecb = null; | |
this.writechunk = null; | |
this.writeencoding = null; | |
} | |
function afterTransform(stream, er, data) { | |
var ts = stream._transformState; | |
ts.transforming = false; | |
var cb = ts.writecb; | |
if (!cb) { | |
return stream.emit('error', new Error('write callback called multiple times')); | |
} | |
ts.writechunk = null; | |
ts.writecb = null; | |
if (data !== null && data !== undefined) stream.push(data); | |
cb(er); | |
var rs = stream._readableState; | |
rs.reading = false; | |
if (rs.needReadable || rs.length < rs.highWaterMark) { | |
stream._read(rs.highWaterMark); | |
} | |
} | |
function Transform(options) { | |
if (!(this instanceof Transform)) return new Transform(options); | |
Duplex.call(this, options); | |
this._transformState = new TransformState(this); | |
var stream = this; | |
// start out asking for a readable event once data is transformed. | |
this._readableState.needReadable = true; | |
// we have implemented the _read method, and done the other things | |
// that Readable wants before the first _read call, so unset the | |
// sync guard flag. | |
this._readableState.sync = false; | |
if (options) { | |
if (typeof options.transform === 'function') this._transform = options.transform; | |
if (typeof options.flush === 'function') this._flush = options.flush; | |
} | |
// When the writable side finishes, then flush out anything remaining. | |
this.once('prefinish', function () { | |
if (typeof this._flush === 'function') this._flush(function (er, data) { | |
done(stream, er, data); | |
});else done(stream); | |
}); | |
} | |
Transform.prototype.push = function (chunk, encoding) { | |
this._transformState.needTransform = false; | |
return Duplex.prototype.push.call(this, chunk, encoding); | |
}; | |
// This is the part where you do stuff! | |
// override this function in implementation classes. | |
// 'chunk' is an input chunk. | |
// | |
// Call `push(newChunk)` to pass along transformed output | |
// to the readable side. You may call 'push' zero or more times. | |
// | |
// Call `cb(err)` when you are done with this chunk. If you pass | |
// an error, then that'll put the hurt on the whole operation. If you | |
// never call cb(), then you'll never get another chunk. | |
Transform.prototype._transform = function (chunk, encoding, cb) { | |
throw new Error('_transform() is not implemented'); | |
}; | |
Transform.prototype._write = function (chunk, encoding, cb) { | |
var ts = this._transformState; | |
ts.writecb = cb; | |
ts.writechunk = chunk; | |
ts.writeencoding = encoding; | |
if (!ts.transforming) { | |
var rs = this._readableState; | |
if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); | |
} | |
}; | |
// Doesn't matter what the args are here. | |
// _transform does all the work. | |
// That we got here means that the readable side wants more data. | |
Transform.prototype._read = function (n) { | |
var ts = this._transformState; | |
if (ts.writechunk !== null && ts.writecb && !ts.transforming) { | |
ts.transforming = true; | |
this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); | |
} else { | |
// mark that we need a transform, so that any data that comes in | |
// will get processed, now that we've asked for it. | |
ts.needTransform = true; | |
} | |
}; | |
Transform.prototype._destroy = function (err, cb) { | |
var _this = this; | |
Duplex.prototype._destroy.call(this, err, function (err2) { | |
cb(err2); | |
_this.emit('close'); | |
}); | |
}; | |
function done(stream, er, data) { | |
if (er) return stream.emit('error', er); | |
if (data !== null && data !== undefined) stream.push(data); | |
// if there's nothing in the write buffer, then that means | |
// that nothing more will ever be provided | |
var ws = stream._writableState; | |
var ts = stream._transformState; | |
if (ws.length) throw new Error('Calling transform done when ws.length != 0'); | |
if (ts.transforming) throw new Error('Calling transform done when still transforming'); | |
return stream.push(null); | |
} | |
},{"./_stream_duplex":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_duplex.js","core-util-is":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-util-is/lib/util.js","inherits":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/inherits/inherits_browser.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_writable.js":[function(_dereq_,module,exports){ | |
(function (process,global,setImmediate){ | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
// A bit simpler than readable streams. | |
// Implement an async ._write(chunk, encoding, cb), and it'll handle all | |
// the drain event emission and buffering. | |
'use strict'; | |
/*<replacement>*/ | |
var processNextTick = _dereq_('process-nextick-args'); | |
/*</replacement>*/ | |
module.exports = Writable; | |
/* <replacement> */ | |
function WriteReq(chunk, encoding, cb) { | |
this.chunk = chunk; | |
this.encoding = encoding; | |
this.callback = cb; | |
this.next = null; | |
} | |
// It seems a linked list but it is not | |
// there will be only 2 of these for each stream | |
function CorkedRequest(state) { | |
var _this = this; | |
this.next = null; | |
this.entry = null; | |
this.finish = function () { | |
onCorkedFinish(_this, state); | |
}; | |
} | |
/* </replacement> */ | |
/*<replacement>*/ | |
var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; | |
/*</replacement>*/ | |
/*<replacement>*/ | |
var Duplex; | |
/*</replacement>*/ | |
Writable.WritableState = WritableState; | |
/*<replacement>*/ | |
var util = _dereq_('core-util-is'); | |
util.inherits = _dereq_('inherits'); | |
/*</replacement>*/ | |
/*<replacement>*/ | |
var internalUtil = { | |
deprecate: _dereq_('util-deprecate') | |
}; | |
/*</replacement>*/ | |
/*<replacement>*/ | |
var Stream = _dereq_('./internal/streams/stream'); | |
/*</replacement>*/ | |
/*<replacement>*/ | |
var Buffer = _dereq_('safe-buffer').Buffer; | |
var OurUint8Array = global.Uint8Array || function () {}; | |
function _uint8ArrayToBuffer(chunk) { | |
return Buffer.from(chunk); | |
} | |
function _isUint8Array(obj) { | |
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; | |
} | |
/*</replacement>*/ | |
var destroyImpl = _dereq_('./internal/streams/destroy'); | |
util.inherits(Writable, Stream); | |
function nop() {} | |
function WritableState(options, stream) { | |
Duplex = Duplex || _dereq_('./_stream_duplex'); | |
options = options || {}; | |
// object stream flag to indicate whether or not this stream | |
// contains buffers or objects. | |
this.objectMode = !!options.objectMode; | |
if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; | |
// the point at which write() starts returning false | |
// Note: 0 is a valid value, means that we always return false if | |
// the entire buffer is not flushed immediately on write() | |
var hwm = options.highWaterMark; | |
var defaultHwm = this.objectMode ? 16 : 16 * 1024; | |
this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; | |
// cast to ints. | |
this.highWaterMark = Math.floor(this.highWaterMark); | |
// if _final has been called | |
this.finalCalled = false; | |
// drain event flag. | |
this.needDrain = false; | |
// at the start of calling end() | |
this.ending = false; | |
// when end() has been called, and returned | |
this.ended = false; | |
// when 'finish' is emitted | |
this.finished = false; | |
// has it been destroyed | |
this.destroyed = false; | |
// should we decode strings into buffers before passing to _write? | |
// this is here so that some node-core streams can optimize string | |
// handling at a lower level. | |
var noDecode = options.decodeStrings === false; | |
this.decodeStrings = !noDecode; | |
// Crypto is kind of old and crusty. Historically, its default string | |
// encoding is 'binary' so we have to make this configurable. | |
// Everything else in the universe uses 'utf8', though. | |
this.defaultEncoding = options.defaultEncoding || 'utf8'; | |
// not an actual buffer we keep track of, but a measurement | |
// of how much we're waiting to get pushed to some underlying | |
// socket or file. | |
this.length = 0; | |
// a flag to see when we're in the middle of a write. | |
this.writing = false; | |
// when true all writes will be buffered until .uncork() call | |
this.corked = 0; | |
// a flag to be able to tell if the onwrite cb is called immediately, | |
// or on a later tick. We set this to true at first, because any | |
// actions that shouldn't happen until "later" should generally also | |
// not happen before the first write call. | |
this.sync = true; | |
// a flag to know if we're processing previously buffered items, which | |
// may call the _write() callback in the same tick, so that we don't | |
// end up in an overlapped onwrite situation. | |
this.bufferProcessing = false; | |
// the callback that's passed to _write(chunk,cb) | |
this.onwrite = function (er) { | |
onwrite(stream, er); | |
}; | |
// the callback that the user supplies to write(chunk,encoding,cb) | |
this.writecb = null; | |
// the amount that is being written when _write is called. | |
this.writelen = 0; | |
this.bufferedRequest = null; | |
this.lastBufferedRequest = null; | |
// number of pending user-supplied write callbacks | |
// this must be 0 before 'finish' can be emitted | |
this.pendingcb = 0; | |
// emit prefinish if the only thing we're waiting for is _write cbs | |
// This is relevant for synchronous Transform streams | |
this.prefinished = false; | |
// True if the error was already emitted and should not be thrown again | |
this.errorEmitted = false; | |
// count buffered requests | |
this.bufferedRequestCount = 0; | |
// allocate the first CorkedRequest, there is always | |
// one allocated and free to use, and we maintain at most two | |
this.corkedRequestsFree = new CorkedRequest(this); | |
} | |
WritableState.prototype.getBuffer = function getBuffer() { | |
var current = this.bufferedRequest; | |
var out = []; | |
while (current) { | |
out.push(current); | |
current = current.next; | |
} | |
return out; | |
}; | |
(function () { | |
try { | |
Object.defineProperty(WritableState.prototype, 'buffer', { | |
get: internalUtil.deprecate(function () { | |
return this.getBuffer(); | |
}, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') | |
}); | |
} catch (_) {} | |
})(); | |
// Test _writableState for inheritance to account for Duplex streams, | |
// whose prototype chain only points to Readable. | |
var realHasInstance; | |
if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { | |
realHasInstance = Function.prototype[Symbol.hasInstance]; | |
Object.defineProperty(Writable, Symbol.hasInstance, { | |
value: function (object) { | |
if (realHasInstance.call(this, object)) return true; | |
return object && object._writableState instanceof WritableState; | |
} | |
}); | |
} else { | |
realHasInstance = function (object) { | |
return object instanceof this; | |
}; | |
} | |
function Writable(options) { | |
Duplex = Duplex || _dereq_('./_stream_duplex'); | |
// Writable ctor is applied to Duplexes, too. | |
// `realHasInstance` is necessary because using plain `instanceof` | |
// would return false, as no `_writableState` property is attached. | |
// Trying to use the custom `instanceof` for Writable here will also break the | |
// Node.js LazyTransform implementation, which has a non-trivial getter for | |
// `_writableState` that would lead to infinite recursion. | |
if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { | |
return new Writable(options); | |
} | |
this._writableState = new WritableState(options, this); | |
// legacy. | |
this.writable = true; | |
if (options) { | |
if (typeof options.write === 'function') this._write = options.write; | |
if (typeof options.writev === 'function') this._writev = options.writev; | |
if (typeof options.destroy === 'function') this._destroy = options.destroy; | |
if (typeof options.final === 'function') this._final = options.final; | |
} | |
Stream.call(this); | |
} | |
// Otherwise people can pipe Writable streams, which is just wrong. | |
Writable.prototype.pipe = function () { | |
this.emit('error', new Error('Cannot pipe, not readable')); | |
}; | |
function writeAfterEnd(stream, cb) { | |
var er = new Error('write after end'); | |
// TODO: defer error events consistently everywhere, not just the cb | |
stream.emit('error', er); | |
processNextTick(cb, er); | |
} | |
// Checks that a user-supplied chunk is valid, especially for the particular | |
// mode the stream is in. Currently this means that `null` is never accepted | |
// and undefined/non-string values are only allowed in object mode. | |
function validChunk(stream, state, chunk, cb) { | |
var valid = true; | |
var er = false; | |
if (chunk === null) { | |
er = new TypeError('May not write null values to stream'); | |
} else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { | |
er = new TypeError('Invalid non-string/buffer chunk'); | |
} | |
if (er) { | |
stream.emit('error', er); | |
processNextTick(cb, er); | |
valid = false; | |
} | |
return valid; | |
} | |
Writable.prototype.write = function (chunk, encoding, cb) { | |
var state = this._writableState; | |
var ret = false; | |
var isBuf = _isUint8Array(chunk) && !state.objectMode; | |
if (isBuf && !Buffer.isBuffer(chunk)) { | |
chunk = _uint8ArrayToBuffer(chunk); | |
} | |
if (typeof encoding === 'function') { | |
cb = encoding; | |
encoding = null; | |
} | |
if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; | |
if (typeof cb !== 'function') cb = nop; | |
if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { | |
state.pendingcb++; | |
ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); | |
} | |
return ret; | |
}; | |
Writable.prototype.cork = function () { | |
var state = this._writableState; | |
state.corked++; | |
}; | |
Writable.prototype.uncork = function () { | |
var state = this._writableState; | |
if (state.corked) { | |
state.corked--; | |
if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); | |
} | |
}; | |
Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { | |
// node::ParseEncoding() requires lower case. | |
if (typeof encoding === 'string') encoding = encoding.toLowerCase(); | |
if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); | |
this._writableState.defaultEncoding = encoding; | |
return this; | |
}; | |
function decodeChunk(state, chunk, encoding) { | |
if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { | |
chunk = Buffer.from(chunk, encoding); | |
} | |
return chunk; | |
} | |
// if we're already writing something, then just put this | |
// in the queue, and wait our turn. Otherwise, call _write | |
// If we return false, then we need a drain event, so set that flag. | |
function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { | |
if (!isBuf) { | |
var newChunk = decodeChunk(state, chunk, encoding); | |
if (chunk !== newChunk) { | |
isBuf = true; | |
encoding = 'buffer'; | |
chunk = newChunk; | |
} | |
} | |
var len = state.objectMode ? 1 : chunk.length; | |
state.length += len; | |
var ret = state.length < state.highWaterMark; | |
// we must ensure that previous needDrain will not be reset to false. | |
if (!ret) state.needDrain = true; | |
if (state.writing || state.corked) { | |
var last = state.lastBufferedRequest; | |
state.lastBufferedRequest = { | |
chunk: chunk, | |
encoding: encoding, | |
isBuf: isBuf, | |
callback: cb, | |
next: null | |
}; | |
if (last) { | |
last.next = state.lastBufferedRequest; | |
} else { | |
state.bufferedRequest = state.lastBufferedRequest; | |
} | |
state.bufferedRequestCount += 1; | |
} else { | |
doWrite(stream, state, false, len, chunk, encoding, cb); | |
} | |
return ret; | |
} | |
function doWrite(stream, state, writev, len, chunk, encoding, cb) { | |
state.writelen = len; | |
state.writecb = cb; | |
state.writing = true; | |
state.sync = true; | |
if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); | |
state.sync = false; | |
} | |
function onwriteError(stream, state, sync, er, cb) { | |
--state.pendingcb; | |
if (sync) { | |
// defer the callback if we are being called synchronously | |
// to avoid piling up things on the stack | |
processNextTick(cb, er); | |
// this can emit finish, and it will always happen | |
// after error | |
processNextTick(finishMaybe, stream, state); | |
stream._writableState.errorEmitted = true; | |
stream.emit('error', er); | |
} else { | |
// the caller expect this to happen before if | |
// it is async | |
cb(er); | |
stream._writableState.errorEmitted = true; | |
stream.emit('error', er); | |
// this can emit finish, but finish must | |
// always follow error | |
finishMaybe(stream, state); | |
} | |
} | |
function onwriteStateUpdate(state) { | |
state.writing = false; | |
state.writecb = null; | |
state.length -= state.writelen; | |
state.writelen = 0; | |
} | |
function onwrite(stream, er) { | |
var state = stream._writableState; | |
var sync = state.sync; | |
var cb = state.writecb; | |
onwriteStateUpdate(state); | |
if (er) onwriteError(stream, state, sync, er, cb);else { | |
// Check if we're actually ready to finish, but don't emit yet | |
var finished = needFinish(state); | |
if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { | |
clearBuffer(stream, state); | |
} | |
if (sync) { | |
/*<replacement>*/ | |
asyncWrite(afterWrite, stream, state, finished, cb); | |
/*</replacement>*/ | |
} else { | |
afterWrite(stream, state, finished, cb); | |
} | |
} | |
} | |
function afterWrite(stream, state, finished, cb) { | |
if (!finished) onwriteDrain(stream, state); | |
state.pendingcb--; | |
cb(); | |
finishMaybe(stream, state); | |
} | |
// Must force callback to be called on nextTick, so that we don't | |
// emit 'drain' before the write() consumer gets the 'false' return | |
// value, and has a chance to attach a 'drain' listener. | |
function onwriteDrain(stream, state) { | |
if (state.length === 0 && state.needDrain) { | |
state.needDrain = false; | |
stream.emit('drain'); | |
} | |
} | |
// if there's something in the buffer waiting, then process it | |
function clearBuffer(stream, state) { | |
state.bufferProcessing = true; | |
var entry = state.bufferedRequest; | |
if (stream._writev && entry && entry.next) { | |
// Fast case, write everything using _writev() | |
var l = state.bufferedRequestCount; | |
var buffer = new Array(l); | |
var holder = state.corkedRequestsFree; | |
holder.entry = entry; | |
var count = 0; | |
var allBuffers = true; | |
while (entry) { | |
buffer[count] = entry; | |
if (!entry.isBuf) allBuffers = false; | |
entry = entry.next; | |
count += 1; | |
} | |
buffer.allBuffers = allBuffers; | |
doWrite(stream, state, true, state.length, buffer, '', holder.finish); | |
// doWrite is almost always async, defer these to save a bit of time | |
// as the hot path ends with doWrite | |
state.pendingcb++; | |
state.lastBufferedRequest = null; | |
if (holder.next) { | |
state.corkedRequestsFree = holder.next; | |
holder.next = null; | |
} else { | |
state.corkedRequestsFree = new CorkedRequest(state); | |
} | |
} else { | |
// Slow case, write chunks one-by-one | |
while (entry) { | |
var chunk = entry.chunk; | |
var encoding = entry.encoding; | |
var cb = entry.callback; | |
var len = state.objectMode ? 1 : chunk.length; | |
doWrite(stream, state, false, len, chunk, encoding, cb); | |
entry = entry.next; | |
// if we didn't call the onwrite immediately, then | |
// it means that we need to wait until it does. | |
// also, that means that the chunk and cb are currently | |
// being processed, so move the buffer counter past them. | |
if (state.writing) { | |
break; | |
} | |
} | |
if (entry === null) state.lastBufferedRequest = null; | |
} | |
state.bufferedRequestCount = 0; | |
state.bufferedRequest = entry; | |
state.bufferProcessing = false; | |
} | |
Writable.prototype._write = function (chunk, encoding, cb) { | |
cb(new Error('_write() is not implemented')); | |
}; | |
Writable.prototype._writev = null; | |
Writable.prototype.end = function (chunk, encoding, cb) { | |
var state = this._writableState; | |
if (typeof chunk === 'function') { | |
cb = chunk; | |
chunk = null; | |
encoding = null; | |
} else if (typeof encoding === 'function') { | |
cb = encoding; | |
encoding = null; | |
} | |
if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); | |
// .end() fully uncorks | |
if (state.corked) { | |
state.corked = 1; | |
this.uncork(); | |
} | |
// ignore unnecessary end() calls. | |
if (!state.ending && !state.finished) endWritable(this, state, cb); | |
}; | |
function needFinish(state) { | |
return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; | |
} | |
function callFinal(stream, state) { | |
stream._final(function (err) { | |
state.pendingcb--; | |
if (err) { | |
stream.emit('error', err); | |
} | |
state.prefinished = true; | |
stream.emit('prefinish'); | |
finishMaybe(stream, state); | |
}); | |
} | |
function prefinish(stream, state) { | |
if (!state.prefinished && !state.finalCalled) { | |
if (typeof stream._final === 'function') { | |
state.pendingcb++; | |
state.finalCalled = true; | |
processNextTick(callFinal, stream, state); | |
} else { | |
state.prefinished = true; | |
stream.emit('prefinish'); | |
} | |
} | |
} | |
function finishMaybe(stream, state) { | |
var need = needFinish(state); | |
if (need) { | |
prefinish(stream, state); | |
if (state.pendingcb === 0) { | |
state.finished = true; | |
stream.emit('finish'); | |
} | |
} | |
return need; | |
} | |
function endWritable(stream, state, cb) { | |
state.ending = true; | |
finishMaybe(stream, state); | |
if (cb) { | |
if (state.finished) processNextTick(cb);else stream.once('finish', cb); | |
} | |
state.ended = true; | |
stream.writable = false; | |
} | |
function onCorkedFinish(corkReq, state, err) { | |
var entry = corkReq.entry; | |
corkReq.entry = null; | |
while (entry) { | |
var cb = entry.callback; | |
state.pendingcb--; | |
cb(err); | |
entry = entry.next; | |
} | |
if (state.corkedRequestsFree) { | |
state.corkedRequestsFree.next = corkReq; | |
} else { | |
state.corkedRequestsFree = corkReq; | |
} | |
} | |
Object.defineProperty(Writable.prototype, 'destroyed', { | |
get: function () { | |
if (this._writableState === undefined) { | |
return false; | |
} | |
return this._writableState.destroyed; | |
}, | |
set: function (value) { | |
// we ignore the value if the stream | |
// has not been initialized yet | |
if (!this._writableState) { | |
return; | |
} | |
// backward compatibility, the user is explicitly | |
// managing destroyed | |
this._writableState.destroyed = value; | |
} | |
}); | |
Writable.prototype.destroy = destroyImpl.destroy; | |
Writable.prototype._undestroy = destroyImpl.undestroy; | |
Writable.prototype._destroy = function (err, cb) { | |
this.end(); | |
cb(err); | |
}; | |
}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},_dereq_("timers").setImmediate) | |
},{"./_stream_duplex":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_duplex.js","./internal/streams/destroy":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/internal/streams/destroy.js","./internal/streams/stream":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/internal/streams/stream-browser.js","_process":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/process/browser.js","core-util-is":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/core-util-is/lib/util.js","inherits":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/inherits/inherits_browser.js","process-nextick-args":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/process-nextick-args/index.js","safe-buffer":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-buffer/index.js","timers":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/timers-browserify/main.js","util-deprecate":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/util-deprecate/browser.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/internal/streams/BufferList.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
/*<replacement>*/ | |
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | |
var Buffer = _dereq_('safe-buffer').Buffer; | |
/*</replacement>*/ | |
function copyBuffer(src, target, offset) { | |
src.copy(target, offset); | |
} | |
module.exports = function () { | |
function BufferList() { | |
_classCallCheck(this, BufferList); | |
this.head = null; | |
this.tail = null; | |
this.length = 0; | |
} | |
BufferList.prototype.push = function push(v) { | |
var entry = { data: v, next: null }; | |
if (this.length > 0) this.tail.next = entry;else this.head = entry; | |
this.tail = entry; | |
++this.length; | |
}; | |
BufferList.prototype.unshift = function unshift(v) { | |
var entry = { data: v, next: this.head }; | |
if (this.length === 0) this.tail = entry; | |
this.head = entry; | |
++this.length; | |
}; | |
BufferList.prototype.shift = function shift() { | |
if (this.length === 0) return; | |
var ret = this.head.data; | |
if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; | |
--this.length; | |
return ret; | |
}; | |
BufferList.prototype.clear = function clear() { | |
this.head = this.tail = null; | |
this.length = 0; | |
}; | |
BufferList.prototype.join = function join(s) { | |
if (this.length === 0) return ''; | |
var p = this.head; | |
var ret = '' + p.data; | |
while (p = p.next) { | |
ret += s + p.data; | |
}return ret; | |
}; | |
BufferList.prototype.concat = function concat(n) { | |
if (this.length === 0) return Buffer.alloc(0); | |
if (this.length === 1) return this.head.data; | |
var ret = Buffer.allocUnsafe(n >>> 0); | |
var p = this.head; | |
var i = 0; | |
while (p) { | |
copyBuffer(p.data, ret, i); | |
i += p.data.length; | |
p = p.next; | |
} | |
return ret; | |
}; | |
return BufferList; | |
}(); | |
},{"safe-buffer":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-buffer/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/internal/streams/destroy.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
/*<replacement>*/ | |
var processNextTick = _dereq_('process-nextick-args'); | |
/*</replacement>*/ | |
// undocumented cb() API, needed for core, not for public API | |
function destroy(err, cb) { | |
var _this = this; | |
var readableDestroyed = this._readableState && this._readableState.destroyed; | |
var writableDestroyed = this._writableState && this._writableState.destroyed; | |
if (readableDestroyed || writableDestroyed) { | |
if (cb) { | |
cb(err); | |
} else if (err && (!this._writableState || !this._writableState.errorEmitted)) { | |
processNextTick(emitErrorNT, this, err); | |
} | |
return; | |
} | |
// we set destroyed to true before firing error callbacks in order | |
// to make it re-entrance safe in case destroy() is called within callbacks | |
if (this._readableState) { | |
this._readableState.destroyed = true; | |
} | |
// if this is a duplex stream mark the writable part as destroyed as well | |
if (this._writableState) { | |
this._writableState.destroyed = true; | |
} | |
this._destroy(err || null, function (err) { | |
if (!cb && err) { | |
processNextTick(emitErrorNT, _this, err); | |
if (_this._writableState) { | |
_this._writableState.errorEmitted = true; | |
} | |
} else if (cb) { | |
cb(err); | |
} | |
}); | |
} | |
function undestroy() { | |
if (this._readableState) { | |
this._readableState.destroyed = false; | |
this._readableState.reading = false; | |
this._readableState.ended = false; | |
this._readableState.endEmitted = false; | |
} | |
if (this._writableState) { | |
this._writableState.destroyed = false; | |
this._writableState.ended = false; | |
this._writableState.ending = false; | |
this._writableState.finished = false; | |
this._writableState.errorEmitted = false; | |
} | |
} | |
function emitErrorNT(self, err) { | |
self.emit('error', err); | |
} | |
module.exports = { | |
destroy: destroy, | |
undestroy: undestroy | |
}; | |
},{"process-nextick-args":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/process-nextick-args/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/internal/streams/stream-browser.js":[function(_dereq_,module,exports){ | |
module.exports = _dereq_('events').EventEmitter; | |
},{"events":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/events/events.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/passthrough.js":[function(_dereq_,module,exports){ | |
module.exports = _dereq_('./readable').PassThrough | |
},{"./readable":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/readable-browser.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/readable-browser.js":[function(_dereq_,module,exports){ | |
exports = module.exports = _dereq_('./lib/_stream_readable.js'); | |
exports.Stream = exports; | |
exports.Readable = exports; | |
exports.Writable = _dereq_('./lib/_stream_writable.js'); | |
exports.Duplex = _dereq_('./lib/_stream_duplex.js'); | |
exports.Transform = _dereq_('./lib/_stream_transform.js'); | |
exports.PassThrough = _dereq_('./lib/_stream_passthrough.js'); | |
},{"./lib/_stream_duplex.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_duplex.js","./lib/_stream_passthrough.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_passthrough.js","./lib/_stream_readable.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_readable.js","./lib/_stream_transform.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_transform.js","./lib/_stream_writable.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_writable.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/transform.js":[function(_dereq_,module,exports){ | |
module.exports = _dereq_('./readable').Transform | |
},{"./readable":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/readable-browser.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/writable-browser.js":[function(_dereq_,module,exports){ | |
module.exports = _dereq_('./lib/_stream_writable.js'); | |
},{"./lib/_stream_writable.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/lib/_stream_writable.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/regenerator-runtime/runtime-module.js":[function(_dereq_,module,exports){ | |
/** | |
* Copyright (c) 2014-present, Facebook, Inc. | |
* | |
* This source code is licensed under the MIT license found in the | |
* LICENSE file in the root directory of this source tree. | |
*/ | |
// This method of obtaining a reference to the global object needs to be | |
// kept identical to the way it is obtained in runtime.js | |
var g = (function() { return this })() || Function("return this")(); | |
// Use `getOwnPropertyNames` because not all browsers support calling | |
// `hasOwnProperty` on the global `self` object in a worker. See #183. | |
var hadRuntime = g.regeneratorRuntime && | |
Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0; | |
// Save the old regeneratorRuntime in case it needs to be restored later. | |
var oldRuntime = hadRuntime && g.regeneratorRuntime; | |
// Force reevalutation of runtime.js. | |
g.regeneratorRuntime = undefined; | |
module.exports = _dereq_("./runtime"); | |
if (hadRuntime) { | |
// Restore the original runtime. | |
g.regeneratorRuntime = oldRuntime; | |
} else { | |
// Remove the global property added by runtime.js. | |
try { | |
delete g.regeneratorRuntime; | |
} catch(e) { | |
g.regeneratorRuntime = undefined; | |
} | |
} | |
},{"./runtime":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/regenerator-runtime/runtime.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/regenerator-runtime/runtime.js":[function(_dereq_,module,exports){ | |
/** | |
* Copyright (c) 2014-present, Facebook, Inc. | |
* | |
* This source code is licensed under the MIT license found in the | |
* LICENSE file in the root directory of this source tree. | |
*/ | |
!(function(global) { | |
"use strict"; | |
var Op = Object.prototype; | |
var hasOwn = Op.hasOwnProperty; | |
var undefined; // More compressible than void 0. | |
var $Symbol = typeof Symbol === "function" ? Symbol : {}; | |
var iteratorSymbol = $Symbol.iterator || "@@iterator"; | |
var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; | |
var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; | |
var inModule = typeof module === "object"; | |
var runtime = global.regeneratorRuntime; | |
if (runtime) { | |
if (inModule) { | |
// If regeneratorRuntime is defined globally and we're in a module, | |
// make the exports object identical to regeneratorRuntime. | |
module.exports = runtime; | |
} | |
// Don't bother evaluating the rest of this file if the runtime was | |
// already defined globally. | |
return; | |
} | |
// Define the runtime globally (as expected by generated code) as either | |
// module.exports (if we're in a module) or a new, empty object. | |
runtime = global.regeneratorRuntime = inModule ? module.exports : {}; | |
function wrap(innerFn, outerFn, self, tryLocsList) { | |
// If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. | |
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; | |
var generator = Object.create(protoGenerator.prototype); | |
var context = new Context(tryLocsList || []); | |
// The ._invoke method unifies the implementations of the .next, | |
// .throw, and .return methods. | |
generator._invoke = makeInvokeMethod(innerFn, self, context); | |
return generator; | |
} | |
runtime.wrap = wrap; | |
// Try/catch helper to minimize deoptimizations. Returns a completion | |
// record like context.tryEntries[i].completion. This interface could | |
// have been (and was previously) designed to take a closure to be | |
// invoked without arguments, but in all the cases we care about we | |
// already have an existing method we want to call, so there's no need | |
// to create a new function object. We can even get away with assuming | |
// the method takes exactly one argument, since that happens to be true | |
// in every case, so we don't have to touch the arguments object. The | |
// only additional allocation required is the completion record, which | |
// has a stable shape and so hopefully should be cheap to allocate. | |
function tryCatch(fn, obj, arg) { | |
try { | |
return { type: "normal", arg: fn.call(obj, arg) }; | |
} catch (err) { | |
return { type: "throw", arg: err }; | |
} | |
} | |
var GenStateSuspendedStart = "suspendedStart"; | |
var GenStateSuspendedYield = "suspendedYield"; | |
var GenStateExecuting = "executing"; | |
var GenStateCompleted = "completed"; | |
// Returning this object from the innerFn has the same effect as | |
// breaking out of the dispatch switch statement. | |
var ContinueSentinel = {}; | |
// Dummy constructor functions that we use as the .constructor and | |
// .constructor.prototype properties for functions that return Generator | |
// objects. For full spec compliance, you may wish to configure your | |
// minifier not to mangle the names of these two functions. | |
function Generator() {} | |
function GeneratorFunction() {} | |
function GeneratorFunctionPrototype() {} | |
// This is a polyfill for %IteratorPrototype% for environments that | |
// don't natively support it. | |
var IteratorPrototype = {}; | |
IteratorPrototype[iteratorSymbol] = function () { | |
return this; | |
}; | |
var getProto = Object.getPrototypeOf; | |
var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); | |
if (NativeIteratorPrototype && | |
NativeIteratorPrototype !== Op && | |
hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { | |
// This environment has a native %IteratorPrototype%; use it instead | |
// of the polyfill. | |
IteratorPrototype = NativeIteratorPrototype; | |
} | |
var Gp = GeneratorFunctionPrototype.prototype = | |
Generator.prototype = Object.create(IteratorPrototype); | |
GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; | |
GeneratorFunctionPrototype.constructor = GeneratorFunction; | |
GeneratorFunctionPrototype[toStringTagSymbol] = | |
GeneratorFunction.displayName = "GeneratorFunction"; | |
// Helper for defining the .next, .throw, and .return methods of the | |
// Iterator interface in terms of a single ._invoke method. | |
function defineIteratorMethods(prototype) { | |
["next", "throw", "return"].forEach(function(method) { | |
prototype[method] = function(arg) { | |
return this._invoke(method, arg); | |
}; | |
}); | |
} | |
runtime.isGeneratorFunction = function(genFun) { | |
var ctor = typeof genFun === "function" && genFun.constructor; | |
return ctor | |
? ctor === GeneratorFunction || | |
// For the native GeneratorFunction constructor, the best we can | |
// do is to check its .name property. | |
(ctor.displayName || ctor.name) === "GeneratorFunction" | |
: false; | |
}; | |
runtime.mark = function(genFun) { | |
if (Object.setPrototypeOf) { | |
Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); | |
} else { | |
genFun.__proto__ = GeneratorFunctionPrototype; | |
if (!(toStringTagSymbol in genFun)) { | |
genFun[toStringTagSymbol] = "GeneratorFunction"; | |
} | |
} | |
genFun.prototype = Object.create(Gp); | |
return genFun; | |
}; | |
// Within the body of any async function, `await x` is transformed to | |
// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test | |
// `hasOwn.call(value, "__await")` to determine if the yielded value is | |
// meant to be awaited. | |
runtime.awrap = function(arg) { | |
return { __await: arg }; | |
}; | |
function AsyncIterator(generator) { | |
function invoke(method, arg, resolve, reject) { | |
var record = tryCatch(generator[method], generator, arg); | |
if (record.type === "throw") { | |
reject(record.arg); | |
} else { | |
var result = record.arg; | |
var value = result.value; | |
if (value && | |
typeof value === "object" && | |
hasOwn.call(value, "__await")) { | |
return Promise.resolve(value.__await).then(function(value) { | |
invoke("next", value, resolve, reject); | |
}, function(err) { | |
invoke("throw", err, resolve, reject); | |
}); | |
} | |
return Promise.resolve(value).then(function(unwrapped) { | |
// When a yielded Promise is resolved, its final value becomes | |
// the .value of the Promise<{value,done}> result for the | |
// current iteration. If the Promise is rejected, however, the | |
// result for this iteration will be rejected with the same | |
// reason. Note that rejections of yielded Promises are not | |
// thrown back into the generator function, as is the case | |
// when an awaited Promise is rejected. This difference in | |
// behavior between yield and await is important, because it | |
// allows the consumer to decide what to do with the yielded | |
// rejection (swallow it and continue, manually .throw it back | |
// into the generator, abandon iteration, whatever). With | |
// await, by contrast, there is no opportunity to examine the | |
// rejection reason outside the generator function, so the | |
// only option is to throw it from the await expression, and | |
// let the generator function handle the exception. | |
result.value = unwrapped; | |
resolve(result); | |
}, reject); | |
} | |
} | |
var previousPromise; | |
function enqueue(method, arg) { | |
function callInvokeWithMethodAndArg() { | |
return new Promise(function(resolve, reject) { | |
invoke(method, arg, resolve, reject); | |
}); | |
} | |
return previousPromise = | |
// If enqueue has been called before, then we want to wait until | |
// all previous Promises have been resolved before calling invoke, | |
// so that results are always delivered in the correct order. If | |
// enqueue has not been called before, then it is important to | |
// call invoke immediately, without waiting on a callback to fire, | |
// so that the async generator function has the opportunity to do | |
// any necessary setup in a predictable way. This predictability | |
// is why the Promise constructor synchronously invokes its | |
// executor callback, and why async functions synchronously | |
// execute code before the first await. Since we implement simple | |
// async functions in terms of async generators, it is especially | |
// important to get this right, even though it requires care. | |
previousPromise ? previousPromise.then( | |
callInvokeWithMethodAndArg, | |
// Avoid propagating failures to Promises returned by later | |
// invocations of the iterator. | |
callInvokeWithMethodAndArg | |
) : callInvokeWithMethodAndArg(); | |
} | |
// Define the unified helper method that is used to implement .next, | |
// .throw, and .return (see defineIteratorMethods). | |
this._invoke = enqueue; | |
} | |
defineIteratorMethods(AsyncIterator.prototype); | |
AsyncIterator.prototype[asyncIteratorSymbol] = function () { | |
return this; | |
}; | |
runtime.AsyncIterator = AsyncIterator; | |
// Note that simple async functions are implemented on top of | |
// AsyncIterator objects; they just return a Promise for the value of | |
// the final result produced by the iterator. | |
runtime.async = function(innerFn, outerFn, self, tryLocsList) { | |
var iter = new AsyncIterator( | |
wrap(innerFn, outerFn, self, tryLocsList) | |
); | |
return runtime.isGeneratorFunction(outerFn) | |
? iter // If outerFn is a generator, return the full iterator. | |
: iter.next().then(function(result) { | |
return result.done ? result.value : iter.next(); | |
}); | |
}; | |
function makeInvokeMethod(innerFn, self, context) { | |
var state = GenStateSuspendedStart; | |
return function invoke(method, arg) { | |
if (state === GenStateExecuting) { | |
throw new Error("Generator is already running"); | |
} | |
if (state === GenStateCompleted) { | |
if (method === "throw") { | |
throw arg; | |
} | |
// Be forgiving, per 25.3.3.3.3 of the spec: | |
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume | |
return doneResult(); | |
} | |
context.method = method; | |
context.arg = arg; | |
while (true) { | |
var delegate = context.delegate; | |
if (delegate) { | |
var delegateResult = maybeInvokeDelegate(delegate, context); | |
if (delegateResult) { | |
if (delegateResult === ContinueSentinel) continue; | |
return delegateResult; | |
} | |
} | |
if (context.method === "next") { | |
// Setting context._sent for legacy support of Babel's | |
// function.sent implementation. | |
context.sent = context._sent = context.arg; | |
} else if (context.method === "throw") { | |
if (state === GenStateSuspendedStart) { | |
state = GenStateCompleted; | |
throw context.arg; | |
} | |
context.dispatchException(context.arg); | |
} else if (context.method === "return") { | |
context.abrupt("return", context.arg); | |
} | |
state = GenStateExecuting; | |
var record = tryCatch(innerFn, self, context); | |
if (record.type === "normal") { | |
// If an exception is thrown from innerFn, we leave state === | |
// GenStateExecuting and loop back for another invocation. | |
state = context.done | |
? GenStateCompleted | |
: GenStateSuspendedYield; | |
if (record.arg === ContinueSentinel) { | |
continue; | |
} | |
return { | |
value: record.arg, | |
done: context.done | |
}; | |
} else if (record.type === "throw") { | |
state = GenStateCompleted; | |
// Dispatch the exception by looping back around to the | |
// context.dispatchException(context.arg) call above. | |
context.method = "throw"; | |
context.arg = record.arg; | |
} | |
} | |
}; | |
} | |
// Call delegate.iterator[context.method](context.arg) and handle the | |
// result, either by returning a { value, done } result from the | |
// delegate iterator, or by modifying context.method and context.arg, | |
// setting context.delegate to null, and returning the ContinueSentinel. | |
function maybeInvokeDelegate(delegate, context) { | |
var method = delegate.iterator[context.method]; | |
if (method === undefined) { | |
// A .throw or .return when the delegate iterator has no .throw | |
// method always terminates the yield* loop. | |
context.delegate = null; | |
if (context.method === "throw") { | |
if (delegate.iterator.return) { | |
// If the delegate iterator has a return method, give it a | |
// chance to clean up. | |
context.method = "return"; | |
context.arg = undefined; | |
maybeInvokeDelegate(delegate, context); | |
if (context.method === "throw") { | |
// If maybeInvokeDelegate(context) changed context.method from | |
// "return" to "throw", let that override the TypeError below. | |
return ContinueSentinel; | |
} | |
} | |
context.method = "throw"; | |
context.arg = new TypeError( | |
"The iterator does not provide a 'throw' method"); | |
} | |
return ContinueSentinel; | |
} | |
var record = tryCatch(method, delegate.iterator, context.arg); | |
if (record.type === "throw") { | |
context.method = "throw"; | |
context.arg = record.arg; | |
context.delegate = null; | |
return ContinueSentinel; | |
} | |
var info = record.arg; | |
if (! info) { | |
context.method = "throw"; | |
context.arg = new TypeError("iterator result is not an object"); | |
context.delegate = null; | |
return ContinueSentinel; | |
} | |
if (info.done) { | |
// Assign the result of the finished delegate to the temporary | |
// variable specified by delegate.resultName (see delegateYield). | |
context[delegate.resultName] = info.value; | |
// Resume execution at the desired location (see delegateYield). | |
context.next = delegate.nextLoc; | |
// If context.method was "throw" but the delegate handled the | |
// exception, let the outer generator proceed normally. If | |
// context.method was "next", forget context.arg since it has been | |
// "consumed" by the delegate iterator. If context.method was | |
// "return", allow the original .return call to continue in the | |
// outer generator. | |
if (context.method !== "return") { | |
context.method = "next"; | |
context.arg = undefined; | |
} | |
} else { | |
// Re-yield the result returned by the delegate method. | |
return info; | |
} | |
// The delegate iterator is finished, so forget it and continue with | |
// the outer generator. | |
context.delegate = null; | |
return ContinueSentinel; | |
} | |
// Define Generator.prototype.{next,throw,return} in terms of the | |
// unified ._invoke helper method. | |
defineIteratorMethods(Gp); | |
Gp[toStringTagSymbol] = "Generator"; | |
// A Generator should always return itself as the iterator object when the | |
// @@iterator function is called on it. Some browsers' implementations of the | |
// iterator prototype chain incorrectly implement this, causing the Generator | |
// object to not be returned from this call. This ensures that doesn't happen. | |
// See https://github.com/facebook/regenerator/issues/274 for more details. | |
Gp[iteratorSymbol] = function() { | |
return this; | |
}; | |
Gp.toString = function() { | |
return "[object Generator]"; | |
}; | |
function pushTryEntry(locs) { | |
var entry = { tryLoc: locs[0] }; | |
if (1 in locs) { | |
entry.catchLoc = locs[1]; | |
} | |
if (2 in locs) { | |
entry.finallyLoc = locs[2]; | |
entry.afterLoc = locs[3]; | |
} | |
this.tryEntries.push(entry); | |
} | |
function resetTryEntry(entry) { | |
var record = entry.completion || {}; | |
record.type = "normal"; | |
delete record.arg; | |
entry.completion = record; | |
} | |
function Context(tryLocsList) { | |
// The root entry object (effectively a try statement without a catch | |
// or a finally block) gives us a place to store values thrown from | |
// locations where there is no enclosing try statement. | |
this.tryEntries = [{ tryLoc: "root" }]; | |
tryLocsList.forEach(pushTryEntry, this); | |
this.reset(true); | |
} | |
runtime.keys = function(object) { | |
var keys = []; | |
for (var key in object) { | |
keys.push(key); | |
} | |
keys.reverse(); | |
// Rather than returning an object with a next method, we keep | |
// things simple and return the next function itself. | |
return function next() { | |
while (keys.length) { | |
var key = keys.pop(); | |
if (key in object) { | |
next.value = key; | |
next.done = false; | |
return next; | |
} | |
} | |
// To avoid creating an additional object, we just hang the .value | |
// and .done properties off the next function object itself. This | |
// also ensures that the minifier will not anonymize the function. | |
next.done = true; | |
return next; | |
}; | |
}; | |
function values(iterable) { | |
if (iterable) { | |
var iteratorMethod = iterable[iteratorSymbol]; | |
if (iteratorMethod) { | |
return iteratorMethod.call(iterable); | |
} | |
if (typeof iterable.next === "function") { | |
return iterable; | |
} | |
if (!isNaN(iterable.length)) { | |
var i = -1, next = function next() { | |
while (++i < iterable.length) { | |
if (hasOwn.call(iterable, i)) { | |
next.value = iterable[i]; | |
next.done = false; | |
return next; | |
} | |
} | |
next.value = undefined; | |
next.done = true; | |
return next; | |
}; | |
return next.next = next; | |
} | |
} | |
// Return an iterator with no values. | |
return { next: doneResult }; | |
} | |
runtime.values = values; | |
function doneResult() { | |
return { value: undefined, done: true }; | |
} | |
Context.prototype = { | |
constructor: Context, | |
reset: function(skipTempReset) { | |
this.prev = 0; | |
this.next = 0; | |
// Resetting context._sent for legacy support of Babel's | |
// function.sent implementation. | |
this.sent = this._sent = undefined; | |
this.done = false; | |
this.delegate = null; | |
this.method = "next"; | |
this.arg = undefined; | |
this.tryEntries.forEach(resetTryEntry); | |
if (!skipTempReset) { | |
for (var name in this) { | |
// Not sure about the optimal order of these conditions: | |
if (name.charAt(0) === "t" && | |
hasOwn.call(this, name) && | |
!isNaN(+name.slice(1))) { | |
this[name] = undefined; | |
} | |
} | |
} | |
}, | |
stop: function() { | |
this.done = true; | |
var rootEntry = this.tryEntries[0]; | |
var rootRecord = rootEntry.completion; | |
if (rootRecord.type === "throw") { | |
throw rootRecord.arg; | |
} | |
return this.rval; | |
}, | |
dispatchException: function(exception) { | |
if (this.done) { | |
throw exception; | |
} | |
var context = this; | |
function handle(loc, caught) { | |
record.type = "throw"; | |
record.arg = exception; | |
context.next = loc; | |
if (caught) { | |
// If the dispatched exception was caught by a catch block, | |
// then let that catch block handle the exception normally. | |
context.method = "next"; | |
context.arg = undefined; | |
} | |
return !! caught; | |
} | |
for (var i = this.tryEntries.length - 1; i >= 0; --i) { | |
var entry = this.tryEntries[i]; | |
var record = entry.completion; | |
if (entry.tryLoc === "root") { | |
// Exception thrown outside of any try block that could handle | |
// it, so set the completion value of the entire function to | |
// throw the exception. | |
return handle("end"); | |
} | |
if (entry.tryLoc <= this.prev) { | |
var hasCatch = hasOwn.call(entry, "catchLoc"); | |
var hasFinally = hasOwn.call(entry, "finallyLoc"); | |
if (hasCatch && hasFinally) { | |
if (this.prev < entry.catchLoc) { | |
return handle(entry.catchLoc, true); | |
} else if (this.prev < entry.finallyLoc) { | |
return handle(entry.finallyLoc); | |
} | |
} else if (hasCatch) { | |
if (this.prev < entry.catchLoc) { | |
return handle(entry.catchLoc, true); | |
} | |
} else if (hasFinally) { | |
if (this.prev < entry.finallyLoc) { | |
return handle(entry.finallyLoc); | |
} | |
} else { | |
throw new Error("try statement without catch or finally"); | |
} | |
} | |
} | |
}, | |
abrupt: function(type, arg) { | |
for (var i = this.tryEntries.length - 1; i >= 0; --i) { | |
var entry = this.tryEntries[i]; | |
if (entry.tryLoc <= this.prev && | |
hasOwn.call(entry, "finallyLoc") && | |
this.prev < entry.finallyLoc) { | |
var finallyEntry = entry; | |
break; | |
} | |
} | |
if (finallyEntry && | |
(type === "break" || | |
type === "continue") && | |
finallyEntry.tryLoc <= arg && | |
arg <= finallyEntry.finallyLoc) { | |
// Ignore the finally entry if control is not jumping to a | |
// location outside the try/catch block. | |
finallyEntry = null; | |
} | |
var record = finallyEntry ? finallyEntry.completion : {}; | |
record.type = type; | |
record.arg = arg; | |
if (finallyEntry) { | |
this.method = "next"; | |
this.next = finallyEntry.finallyLoc; | |
return ContinueSentinel; | |
} | |
return this.complete(record); | |
}, | |
complete: function(record, afterLoc) { | |
if (record.type === "throw") { | |
throw record.arg; | |
} | |
if (record.type === "break" || | |
record.type === "continue") { | |
this.next = record.arg; | |
} else if (record.type === "return") { | |
this.rval = this.arg = record.arg; | |
this.method = "return"; | |
this.next = "end"; | |
} else if (record.type === "normal" && afterLoc) { | |
this.next = afterLoc; | |
} | |
return ContinueSentinel; | |
}, | |
finish: function(finallyLoc) { | |
for (var i = this.tryEntries.length - 1; i >= 0; --i) { | |
var entry = this.tryEntries[i]; | |
if (entry.finallyLoc === finallyLoc) { | |
this.complete(entry.completion, entry.afterLoc); | |
resetTryEntry(entry); | |
return ContinueSentinel; | |
} | |
} | |
}, | |
"catch": function(tryLoc) { | |
for (var i = this.tryEntries.length - 1; i >= 0; --i) { | |
var entry = this.tryEntries[i]; | |
if (entry.tryLoc === tryLoc) { | |
var record = entry.completion; | |
if (record.type === "throw") { | |
var thrown = record.arg; | |
resetTryEntry(entry); | |
} | |
return thrown; | |
} | |
} | |
// The context.catch method must only be called with a location | |
// argument that corresponds to a known catch block. | |
throw new Error("illegal catch attempt"); | |
}, | |
delegateYield: function(iterable, resultName, nextLoc) { | |
this.delegate = { | |
iterator: values(iterable), | |
resultName: resultName, | |
nextLoc: nextLoc | |
}; | |
if (this.method === "next") { | |
// Deliberately forget the last sent value so that we don't | |
// accidentally pass it on to the delegate. | |
this.arg = undefined; | |
} | |
return ContinueSentinel; | |
} | |
}; | |
})( | |
// In sloppy mode, unbound `this` refers to the global object, fallback to | |
// Function constructor if we're in global strict mode. That is sadly a form | |
// of indirect eval which violates Content Security Policy. | |
(function() { return this })() || Function("return this")() | |
); | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-buffer/index.js":[function(_dereq_,module,exports){ | |
/* eslint-disable node/no-deprecated-api */ | |
var buffer = _dereq_('buffer') | |
var Buffer = buffer.Buffer | |
// alternative to using Object.keys for old browsers | |
function copyProps (src, dst) { | |
for (var key in src) { | |
dst[key] = src[key] | |
} | |
} | |
if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { | |
module.exports = buffer | |
} else { | |
// Copy properties from require('buffer') | |
copyProps(buffer, exports) | |
exports.Buffer = SafeBuffer | |
} | |
function SafeBuffer (arg, encodingOrOffset, length) { | |
return Buffer(arg, encodingOrOffset, length) | |
} | |
// Copy static methods from Buffer | |
copyProps(Buffer, SafeBuffer) | |
SafeBuffer.from = function (arg, encodingOrOffset, length) { | |
if (typeof arg === 'number') { | |
throw new TypeError('Argument must not be a number') | |
} | |
return Buffer(arg, encodingOrOffset, length) | |
} | |
SafeBuffer.alloc = function (size, fill, encoding) { | |
if (typeof size !== 'number') { | |
throw new TypeError('Argument must be a number') | |
} | |
var buf = Buffer(size) | |
if (fill !== undefined) { | |
if (typeof encoding === 'string') { | |
buf.fill(fill, encoding) | |
} else { | |
buf.fill(fill) | |
} | |
} else { | |
buf.fill(0) | |
} | |
return buf | |
} | |
SafeBuffer.allocUnsafe = function (size) { | |
if (typeof size !== 'number') { | |
throw new TypeError('Argument must be a number') | |
} | |
return Buffer(size) | |
} | |
SafeBuffer.allocUnsafeSlow = function (size) { | |
if (typeof size !== 'number') { | |
throw new TypeError('Argument must be a number') | |
} | |
return buffer.SlowBuffer(size) | |
} | |
},{"buffer":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/buffer/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-event-emitter/index.js":[function(_dereq_,module,exports){ | |
const util = _dereq_('util') | |
const EventEmitter = _dereq_('events/') | |
var R = typeof Reflect === 'object' ? Reflect : null | |
var ReflectApply = R && typeof R.apply === 'function' | |
? R.apply | |
: function ReflectApply(target, receiver, args) { | |
return Function.prototype.apply.call(target, receiver, args); | |
} | |
module.exports = SafeEventEmitter | |
function SafeEventEmitter() { | |
EventEmitter.call(this) | |
} | |
util.inherits(SafeEventEmitter, EventEmitter) | |
SafeEventEmitter.prototype.emit = function (type) { | |
// copied from https://github.com/Gozala/events/blob/master/events.js | |
// modified lines are commented with "edited:" | |
var args = []; | |
for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); | |
var doError = (type === 'error'); | |
var events = this._events; | |
if (events !== undefined) | |
doError = (doError && events.error === undefined); | |
else if (!doError) | |
return false; | |
// If there is no 'error' event listener then throw. | |
if (doError) { | |
var er; | |
if (args.length > 0) | |
er = args[0]; | |
if (er instanceof Error) { | |
// Note: The comments on the `throw` lines are intentional, they show | |
// up in Node's output if this results in an unhandled exception. | |
throw er; // Unhandled 'error' event | |
} | |
// At least give some kind of context to the user | |
var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); | |
err.context = er; | |
throw err; // Unhandled 'error' event | |
} | |
var handler = events[type]; | |
if (handler === undefined) | |
return false; | |
if (typeof handler === 'function') { | |
// edited: using safeApply | |
safeApply(handler, this, args); | |
} else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) | |
// edited: using safeApply | |
safeApply(listeners[i], this, args); | |
} | |
return true; | |
} | |
function safeApply(handler, context, args) { | |
try { | |
ReflectApply(handler, context, args) | |
} catch (err) { | |
// throw error after timeout so as not to interupt the stack | |
setTimeout(() => { | |
throw err | |
}) | |
} | |
} | |
function arrayClone(arr, n) { | |
var copy = new Array(n); | |
for (var i = 0; i < n; ++i) | |
copy[i] = arr[i]; | |
return copy; | |
} | |
},{"events/":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-event-emitter/node_modules/events/events.js","util":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/util/util.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-event-emitter/node_modules/events/events.js":[function(_dereq_,module,exports){ | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
'use strict'; | |
var R = typeof Reflect === 'object' ? Reflect : null | |
var ReflectApply = R && typeof R.apply === 'function' | |
? R.apply | |
: function ReflectApply(target, receiver, args) { | |
return Function.prototype.apply.call(target, receiver, args); | |
} | |
var ReflectOwnKeys | |
if (R && typeof R.ownKeys === 'function') { | |
ReflectOwnKeys = R.ownKeys | |
} else if (Object.getOwnPropertySymbols) { | |
ReflectOwnKeys = function ReflectOwnKeys(target) { | |
return Object.getOwnPropertyNames(target) | |
.concat(Object.getOwnPropertySymbols(target)); | |
}; | |
} else { | |
ReflectOwnKeys = function ReflectOwnKeys(target) { | |
return Object.getOwnPropertyNames(target); | |
}; | |
} | |
function ProcessEmitWarning(warning) { | |
if (console && console.warn) console.warn(warning); | |
} | |
var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { | |
return value !== value; | |
} | |
function EventEmitter() { | |
EventEmitter.init.call(this); | |
} | |
module.exports = EventEmitter; | |
// Backwards-compat with node 0.10.x | |
EventEmitter.EventEmitter = EventEmitter; | |
EventEmitter.prototype._events = undefined; | |
EventEmitter.prototype._eventsCount = 0; | |
EventEmitter.prototype._maxListeners = undefined; | |
// By default EventEmitters will print a warning if more than 10 listeners are | |
// added to it. This is a useful default which helps finding memory leaks. | |
var defaultMaxListeners = 10; | |
Object.defineProperty(EventEmitter, 'defaultMaxListeners', { | |
enumerable: true, | |
get: function() { | |
return defaultMaxListeners; | |
}, | |
set: function(arg) { | |
if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { | |
throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); | |
} | |
defaultMaxListeners = arg; | |
} | |
}); | |
EventEmitter.init = function() { | |
if (this._events === undefined || | |
this._events === Object.getPrototypeOf(this)._events) { | |
this._events = Object.create(null); | |
this._eventsCount = 0; | |
} | |
this._maxListeners = this._maxListeners || undefined; | |
}; | |
// Obviously not all Emitters should be limited to 10. This function allows | |
// that to be increased. Set to zero for unlimited. | |
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { | |
if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { | |
throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); | |
} | |
this._maxListeners = n; | |
return this; | |
}; | |
function $getMaxListeners(that) { | |
if (that._maxListeners === undefined) | |
return EventEmitter.defaultMaxListeners; | |
return that._maxListeners; | |
} | |
EventEmitter.prototype.getMaxListeners = function getMaxListeners() { | |
return $getMaxListeners(this); | |
}; | |
EventEmitter.prototype.emit = function emit(type) { | |
var args = []; | |
for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); | |
var doError = (type === 'error'); | |
var events = this._events; | |
if (events !== undefined) | |
doError = (doError && events.error === undefined); | |
else if (!doError) | |
return false; | |
// If there is no 'error' event listener then throw. | |
if (doError) { | |
var er; | |
if (args.length > 0) | |
er = args[0]; | |
if (er instanceof Error) { | |
// Note: The comments on the `throw` lines are intentional, they show | |
// up in Node's output if this results in an unhandled exception. | |
throw er; // Unhandled 'error' event | |
} | |
// At least give some kind of context to the user | |
var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); | |
err.context = er; | |
throw err; // Unhandled 'error' event | |
} | |
var handler = events[type]; | |
if (handler === undefined) | |
return false; | |
if (typeof handler === 'function') { | |
ReflectApply(handler, this, args); | |
} else { | |
var len = handler.length; | |
var listeners = arrayClone(handler, len); | |
for (var i = 0; i < len; ++i) | |
ReflectApply(listeners[i], this, args); | |
} | |
return true; | |
}; | |
function _addListener(target, type, listener, prepend) { | |
var m; | |
var events; | |
var existing; | |
if (typeof listener !== 'function') { | |
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); | |
} | |
events = target._events; | |
if (events === undefined) { | |
events = target._events = Object.create(null); | |
target._eventsCount = 0; | |
} else { | |
// To avoid recursion in the case that type === "newListener"! Before | |
// adding it to the listeners, first emit "newListener". | |
if (events.newListener !== undefined) { | |
target.emit('newListener', type, | |
listener.listener ? listener.listener : listener); | |
// Re-assign `events` because a newListener handler could have caused the | |
// this._events to be assigned to a new object | |
events = target._events; | |
} | |
existing = events[type]; | |
} | |
if (existing === undefined) { | |
// Optimize the case of one listener. Don't need the extra array object. | |
existing = events[type] = listener; | |
++target._eventsCount; | |
} else { | |
if (typeof existing === 'function') { | |
// Adding the second element, need to change to array. | |
existing = events[type] = | |
prepend ? [listener, existing] : [existing, listener]; | |
// If we've already got an array, just append. | |
} else if (prepend) { | |
existing.unshift(listener); | |
} else { | |
existing.push(listener); | |
} | |
// Check for listener leak | |
m = $getMaxListeners(target); | |
if (m > 0 && existing.length > m && !existing.warned) { | |
existing.warned = true; | |
// No error code for this since it is a Warning | |
// eslint-disable-next-line no-restricted-syntax | |
var w = new Error('Possible EventEmitter memory leak detected. ' + | |
existing.length + ' ' + String(type) + ' listeners ' + | |
'added. Use emitter.setMaxListeners() to ' + | |
'increase limit'); | |
w.name = 'MaxListenersExceededWarning'; | |
w.emitter = target; | |
w.type = type; | |
w.count = existing.length; | |
ProcessEmitWarning(w); | |
} | |
} | |
return target; | |
} | |
EventEmitter.prototype.addListener = function addListener(type, listener) { | |
return _addListener(this, type, listener, false); | |
}; | |
EventEmitter.prototype.on = EventEmitter.prototype.addListener; | |
EventEmitter.prototype.prependListener = | |
function prependListener(type, listener) { | |
return _addListener(this, type, listener, true); | |
}; | |
function onceWrapper() { | |
var args = []; | |
for (var i = 0; i < arguments.length; i++) args.push(arguments[i]); | |
if (!this.fired) { | |
this.target.removeListener(this.type, this.wrapFn); | |
this.fired = true; | |
ReflectApply(this.listener, this.target, args); | |
} | |
} | |
function _onceWrap(target, type, listener) { | |
var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; | |
var wrapped = onceWrapper.bind(state); | |
wrapped.listener = listener; | |
state.wrapFn = wrapped; | |
return wrapped; | |
} | |
EventEmitter.prototype.once = function once(type, listener) { | |
if (typeof listener !== 'function') { | |
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); | |
} | |
this.on(type, _onceWrap(this, type, listener)); | |
return this; | |
}; | |
EventEmitter.prototype.prependOnceListener = | |
function prependOnceListener(type, listener) { | |
if (typeof listener !== 'function') { | |
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); | |
} | |
this.prependListener(type, _onceWrap(this, type, listener)); | |
return this; | |
}; | |
// Emits a 'removeListener' event if and only if the listener was removed. | |
EventEmitter.prototype.removeListener = | |
function removeListener(type, listener) { | |
var list, events, position, i, originalListener; | |
if (typeof listener !== 'function') { | |
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); | |
} | |
events = this._events; | |
if (events === undefined) | |
return this; | |
list = events[type]; | |
if (list === undefined) | |
return this; | |
if (list === listener || list.listener === listener) { | |
if (--this._eventsCount === 0) | |
this._events = Object.create(null); | |
else { | |
delete events[type]; | |
if (events.removeListener) | |
this.emit('removeListener', type, list.listener || listener); | |
} | |
} else if (typeof list !== 'function') { | |
position = -1; | |
for (i = list.length - 1; i >= 0; i--) { | |
if (list[i] === listener || list[i].listener === listener) { | |
originalListener = list[i].listener; | |
position = i; | |
break; | |
} | |
} | |
if (position < 0) | |
return this; | |
if (position === 0) | |
list.shift(); | |
else { | |
spliceOne(list, position); | |
} | |
if (list.length === 1) | |
events[type] = list[0]; | |
if (events.removeListener !== undefined) | |
this.emit('removeListener', type, originalListener || listener); | |
} | |
return this; | |
}; | |
EventEmitter.prototype.off = EventEmitter.prototype.removeListener; | |
EventEmitter.prototype.removeAllListeners = | |
function removeAllListeners(type) { | |
var listeners, events, i; | |
events = this._events; | |
if (events === undefined) | |
return this; | |
// not listening for removeListener, no need to emit | |
if (events.removeListener === undefined) { | |
if (arguments.length === 0) { | |
this._events = Object.create(null); | |
this._eventsCount = 0; | |
} else if (events[type] !== undefined) { | |
if (--this._eventsCount === 0) | |
this._events = Object.create(null); | |
else | |
delete events[type]; | |
} | |
return this; | |
} | |
// emit removeListener for all listeners on all events | |
if (arguments.length === 0) { | |
var keys = Object.keys(events); | |
var key; | |
for (i = 0; i < keys.length; ++i) { | |
key = keys[i]; | |
if (key === 'removeListener') continue; | |
this.removeAllListeners(key); | |
} | |
this.removeAllListeners('removeListener'); | |
this._events = Object.create(null); | |
this._eventsCount = 0; | |
return this; | |
} | |
listeners = events[type]; | |
if (typeof listeners === 'function') { | |
this.removeListener(type, listeners); | |
} else if (listeners !== undefined) { | |
// LIFO order | |
for (i = listeners.length - 1; i >= 0; i--) { | |
this.removeListener(type, listeners[i]); | |
} | |
} | |
return this; | |
}; | |
function _listeners(target, type, unwrap) { | |
var events = target._events; | |
if (events === undefined) | |
return []; | |
var evlistener = events[type]; | |
if (evlistener === undefined) | |
return []; | |
if (typeof evlistener === 'function') | |
return unwrap ? [evlistener.listener || evlistener] : [evlistener]; | |
return unwrap ? | |
unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); | |
} | |
EventEmitter.prototype.listeners = function listeners(type) { | |
return _listeners(this, type, true); | |
}; | |
EventEmitter.prototype.rawListeners = function rawListeners(type) { | |
return _listeners(this, type, false); | |
}; | |
EventEmitter.listenerCount = function(emitter, type) { | |
if (typeof emitter.listenerCount === 'function') { | |
return emitter.listenerCount(type); | |
} else { | |
return listenerCount.call(emitter, type); | |
} | |
}; | |
EventEmitter.prototype.listenerCount = listenerCount; | |
function listenerCount(type) { | |
var events = this._events; | |
if (events !== undefined) { | |
var evlistener = events[type]; | |
if (typeof evlistener === 'function') { | |
return 1; | |
} else if (evlistener !== undefined) { | |
return evlistener.length; | |
} | |
} | |
return 0; | |
} | |
EventEmitter.prototype.eventNames = function eventNames() { | |
return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; | |
}; | |
function arrayClone(arr, n) { | |
var copy = new Array(n); | |
for (var i = 0; i < n; ++i) | |
copy[i] = arr[i]; | |
return copy; | |
} | |
function spliceOne(list, index) { | |
for (; index + 1 < list.length; index++) | |
list[index] = list[index + 1]; | |
list.pop(); | |
} | |
function unwrapListeners(arr) { | |
var ret = new Array(arr.length); | |
for (var i = 0; i < ret.length; ++i) { | |
ret[i] = arr[i].listener || arr[i]; | |
} | |
return ret; | |
} | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/stream-browserify/index.js":[function(_dereq_,module,exports){ | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
module.exports = Stream; | |
var EE = _dereq_('events').EventEmitter; | |
var inherits = _dereq_('inherits'); | |
inherits(Stream, EE); | |
Stream.Readable = _dereq_('readable-stream/readable.js'); | |
Stream.Writable = _dereq_('readable-stream/writable.js'); | |
Stream.Duplex = _dereq_('readable-stream/duplex.js'); | |
Stream.Transform = _dereq_('readable-stream/transform.js'); | |
Stream.PassThrough = _dereq_('readable-stream/passthrough.js'); | |
// Backwards-compat with node 0.4.x | |
Stream.Stream = Stream; | |
// old-style streams. Note that the pipe method (the only relevant | |
// part of this class) is overridden in the Readable class. | |
function Stream() { | |
EE.call(this); | |
} | |
Stream.prototype.pipe = function(dest, options) { | |
var source = this; | |
function ondata(chunk) { | |
if (dest.writable) { | |
if (false === dest.write(chunk) && source.pause) { | |
source.pause(); | |
} | |
} | |
} | |
source.on('data', ondata); | |
function ondrain() { | |
if (source.readable && source.resume) { | |
source.resume(); | |
} | |
} | |
dest.on('drain', ondrain); | |
// If the 'end' option is not supplied, dest.end() will be called when | |
// source gets the 'end' or 'close' events. Only dest.end() once. | |
if (!dest._isStdio && (!options || options.end !== false)) { | |
source.on('end', onend); | |
source.on('close', onclose); | |
} | |
var didOnEnd = false; | |
function onend() { | |
if (didOnEnd) return; | |
didOnEnd = true; | |
dest.end(); | |
} | |
function onclose() { | |
if (didOnEnd) return; | |
didOnEnd = true; | |
if (typeof dest.destroy === 'function') dest.destroy(); | |
} | |
// don't leave dangling pipes when there are errors. | |
function onerror(er) { | |
cleanup(); | |
if (EE.listenerCount(this, 'error') === 0) { | |
throw er; // Unhandled stream error in pipe. | |
} | |
} | |
source.on('error', onerror); | |
dest.on('error', onerror); | |
// remove all the event listeners that were added. | |
function cleanup() { | |
source.removeListener('data', ondata); | |
dest.removeListener('drain', ondrain); | |
source.removeListener('end', onend); | |
source.removeListener('close', onclose); | |
source.removeListener('error', onerror); | |
dest.removeListener('error', onerror); | |
source.removeListener('end', cleanup); | |
source.removeListener('close', cleanup); | |
dest.removeListener('close', cleanup); | |
} | |
source.on('end', cleanup); | |
source.on('close', cleanup); | |
dest.on('close', cleanup); | |
dest.emit('pipe', source); | |
// Allow for unix-like usage: A.pipe(B).pipe(C) | |
return dest; | |
}; | |
},{"events":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/events/events.js","inherits":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/inherits/inherits_browser.js","readable-stream/duplex.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/duplex-browser.js","readable-stream/passthrough.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/passthrough.js","readable-stream/readable.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/readable-browser.js","readable-stream/transform.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/transform.js","readable-stream/writable.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/readable-stream/writable-browser.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/string_decoder/lib/string_decoder.js":[function(_dereq_,module,exports){ | |
'use strict'; | |
var Buffer = _dereq_('safe-buffer').Buffer; | |
var isEncoding = Buffer.isEncoding || function (encoding) { | |
encoding = '' + encoding; | |
switch (encoding && encoding.toLowerCase()) { | |
case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': | |
return true; | |
default: | |
return false; | |
} | |
}; | |
function _normalizeEncoding(enc) { | |
if (!enc) return 'utf8'; | |
var retried; | |
while (true) { | |
switch (enc) { | |
case 'utf8': | |
case 'utf-8': | |
return 'utf8'; | |
case 'ucs2': | |
case 'ucs-2': | |
case 'utf16le': | |
case 'utf-16le': | |
return 'utf16le'; | |
case 'latin1': | |
case 'binary': | |
return 'latin1'; | |
case 'base64': | |
case 'ascii': | |
case 'hex': | |
return enc; | |
default: | |
if (retried) return; // undefined | |
enc = ('' + enc).toLowerCase(); | |
retried = true; | |
} | |
} | |
}; | |
// Do not cache `Buffer.isEncoding` when checking encoding names as some | |
// modules monkey-patch it to support additional encodings | |
function normalizeEncoding(enc) { | |
var nenc = _normalizeEncoding(enc); | |
if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); | |
return nenc || enc; | |
} | |
// StringDecoder provides an interface for efficiently splitting a series of | |
// buffers into a series of JS strings without breaking apart multi-byte | |
// characters. | |
exports.StringDecoder = StringDecoder; | |
function StringDecoder(encoding) { | |
this.encoding = normalizeEncoding(encoding); | |
var nb; | |
switch (this.encoding) { | |
case 'utf16le': | |
this.text = utf16Text; | |
this.end = utf16End; | |
nb = 4; | |
break; | |
case 'utf8': | |
this.fillLast = utf8FillLast; | |
nb = 4; | |
break; | |
case 'base64': | |
this.text = base64Text; | |
this.end = base64End; | |
nb = 3; | |
break; | |
default: | |
this.write = simpleWrite; | |
this.end = simpleEnd; | |
return; | |
} | |
this.lastNeed = 0; | |
this.lastTotal = 0; | |
this.lastChar = Buffer.allocUnsafe(nb); | |
} | |
StringDecoder.prototype.write = function (buf) { | |
if (buf.length === 0) return ''; | |
var r; | |
var i; | |
if (this.lastNeed) { | |
r = this.fillLast(buf); | |
if (r === undefined) return ''; | |
i = this.lastNeed; | |
this.lastNeed = 0; | |
} else { | |
i = 0; | |
} | |
if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); | |
return r || ''; | |
}; | |
StringDecoder.prototype.end = utf8End; | |
// Returns only complete characters in a Buffer | |
StringDecoder.prototype.text = utf8Text; | |
// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer | |
StringDecoder.prototype.fillLast = function (buf) { | |
if (this.lastNeed <= buf.length) { | |
buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); | |
return this.lastChar.toString(this.encoding, 0, this.lastTotal); | |
} | |
buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); | |
this.lastNeed -= buf.length; | |
}; | |
// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a | |
// continuation byte. | |
function utf8CheckByte(byte) { | |
if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; | |
return -1; | |
} | |
// Checks at most 3 bytes at the end of a Buffer in order to detect an | |
// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) | |
// needed to complete the UTF-8 character (if applicable) are returned. | |
function utf8CheckIncomplete(self, buf, i) { | |
var j = buf.length - 1; | |
if (j < i) return 0; | |
var nb = utf8CheckByte(buf[j]); | |
if (nb >= 0) { | |
if (nb > 0) self.lastNeed = nb - 1; | |
return nb; | |
} | |
if (--j < i) return 0; | |
nb = utf8CheckByte(buf[j]); | |
if (nb >= 0) { | |
if (nb > 0) self.lastNeed = nb - 2; | |
return nb; | |
} | |
if (--j < i) return 0; | |
nb = utf8CheckByte(buf[j]); | |
if (nb >= 0) { | |
if (nb > 0) { | |
if (nb === 2) nb = 0;else self.lastNeed = nb - 3; | |
} | |
return nb; | |
} | |
return 0; | |
} | |
// Validates as many continuation bytes for a multi-byte UTF-8 character as | |
// needed or are available. If we see a non-continuation byte where we expect | |
// one, we "replace" the validated continuation bytes we've seen so far with | |
// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding | |
// behavior. The continuation byte check is included three times in the case | |
// where all of the continuation bytes for a character exist in the same buffer. | |
// It is also done this way as a slight performance increase instead of using a | |
// loop. | |
function utf8CheckExtraBytes(self, buf, p) { | |
if ((buf[0] & 0xC0) !== 0x80) { | |
self.lastNeed = 0; | |
return '\ufffd'.repeat(p); | |
} | |
if (self.lastNeed > 1 && buf.length > 1) { | |
if ((buf[1] & 0xC0) !== 0x80) { | |
self.lastNeed = 1; | |
return '\ufffd'.repeat(p + 1); | |
} | |
if (self.lastNeed > 2 && buf.length > 2) { | |
if ((buf[2] & 0xC0) !== 0x80) { | |
self.lastNeed = 2; | |
return '\ufffd'.repeat(p + 2); | |
} | |
} | |
} | |
} | |
// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. | |
function utf8FillLast(buf) { | |
var p = this.lastTotal - this.lastNeed; | |
var r = utf8CheckExtraBytes(this, buf, p); | |
if (r !== undefined) return r; | |
if (this.lastNeed <= buf.length) { | |
buf.copy(this.lastChar, p, 0, this.lastNeed); | |
return this.lastChar.toString(this.encoding, 0, this.lastTotal); | |
} | |
buf.copy(this.lastChar, p, 0, buf.length); | |
this.lastNeed -= buf.length; | |
} | |
// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a | |
// partial character, the character's bytes are buffered until the required | |
// number of bytes are available. | |
function utf8Text(buf, i) { | |
var total = utf8CheckIncomplete(this, buf, i); | |
if (!this.lastNeed) return buf.toString('utf8', i); | |
this.lastTotal = total; | |
var end = buf.length - (total - this.lastNeed); | |
buf.copy(this.lastChar, 0, end); | |
return buf.toString('utf8', i, end); | |
} | |
// For UTF-8, a replacement character for each buffered byte of a (partial) | |
// character needs to be added to the output. | |
function utf8End(buf) { | |
var r = buf && buf.length ? this.write(buf) : ''; | |
if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed); | |
return r; | |
} | |
// UTF-16LE typically needs two bytes per character, but even if we have an even | |
// number of bytes available, we need to check if we end on a leading/high | |
// surrogate. In that case, we need to wait for the next two bytes in order to | |
// decode the last character properly. | |
function utf16Text(buf, i) { | |
if ((buf.length - i) % 2 === 0) { | |
var r = buf.toString('utf16le', i); | |
if (r) { | |
var c = r.charCodeAt(r.length - 1); | |
if (c >= 0xD800 && c <= 0xDBFF) { | |
this.lastNeed = 2; | |
this.lastTotal = 4; | |
this.lastChar[0] = buf[buf.length - 2]; | |
this.lastChar[1] = buf[buf.length - 1]; | |
return r.slice(0, -1); | |
} | |
} | |
return r; | |
} | |
this.lastNeed = 1; | |
this.lastTotal = 2; | |
this.lastChar[0] = buf[buf.length - 1]; | |
return buf.toString('utf16le', i, buf.length - 1); | |
} | |
// For UTF-16LE we do not explicitly append special replacement characters if we | |
// end on a partial character, we simply let v8 handle that. | |
function utf16End(buf) { | |
var r = buf && buf.length ? this.write(buf) : ''; | |
if (this.lastNeed) { | |
var end = this.lastTotal - this.lastNeed; | |
return r + this.lastChar.toString('utf16le', 0, end); | |
} | |
return r; | |
} | |
function base64Text(buf, i) { | |
var n = (buf.length - i) % 3; | |
if (n === 0) return buf.toString('base64', i); | |
this.lastNeed = 3 - n; | |
this.lastTotal = 3; | |
if (n === 1) { | |
this.lastChar[0] = buf[buf.length - 1]; | |
} else { | |
this.lastChar[0] = buf[buf.length - 2]; | |
this.lastChar[1] = buf[buf.length - 1]; | |
} | |
return buf.toString('base64', i, buf.length - n); | |
} | |
function base64End(buf) { | |
var r = buf && buf.length ? this.write(buf) : ''; | |
if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); | |
return r; | |
} | |
// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) | |
function simpleWrite(buf) { | |
return buf.toString(this.encoding); | |
} | |
function simpleEnd(buf) { | |
return buf && buf.length ? this.write(buf) : ''; | |
} | |
},{"safe-buffer":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/safe-buffer/index.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/timers-browserify/main.js":[function(_dereq_,module,exports){ | |
(function (setImmediate,clearImmediate){ | |
var nextTick = _dereq_('process/browser.js').nextTick; | |
var apply = Function.prototype.apply; | |
var slice = Array.prototype.slice; | |
var immediateIds = {}; | |
var nextImmediateId = 0; | |
// DOM APIs, for completeness | |
exports.setTimeout = function() { | |
return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); | |
}; | |
exports.setInterval = function() { | |
return new Timeout(apply.call(setInterval, window, arguments), clearInterval); | |
}; | |
exports.clearTimeout = | |
exports.clearInterval = function(timeout) { timeout.close(); }; | |
function Timeout(id, clearFn) { | |
this._id = id; | |
this._clearFn = clearFn; | |
} | |
Timeout.prototype.unref = Timeout.prototype.ref = function() {}; | |
Timeout.prototype.close = function() { | |
this._clearFn.call(window, this._id); | |
}; | |
// Does not start the time, just sets up the members needed. | |
exports.enroll = function(item, msecs) { | |
clearTimeout(item._idleTimeoutId); | |
item._idleTimeout = msecs; | |
}; | |
exports.unenroll = function(item) { | |
clearTimeout(item._idleTimeoutId); | |
item._idleTimeout = -1; | |
}; | |
exports._unrefActive = exports.active = function(item) { | |
clearTimeout(item._idleTimeoutId); | |
var msecs = item._idleTimeout; | |
if (msecs >= 0) { | |
item._idleTimeoutId = setTimeout(function onTimeout() { | |
if (item._onTimeout) | |
item._onTimeout(); | |
}, msecs); | |
} | |
}; | |
// That's not how node.js implements it but the exposed api is the same. | |
exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { | |
var id = nextImmediateId++; | |
var args = arguments.length < 2 ? false : slice.call(arguments, 1); | |
immediateIds[id] = true; | |
nextTick(function onNextTick() { | |
if (immediateIds[id]) { | |
// fn.call() is faster so we optimize for the common use-case | |
// @see http://jsperf.com/call-apply-segu | |
if (args) { | |
fn.apply(null, args); | |
} else { | |
fn.call(null); | |
} | |
// Prevent ids from leaking | |
exports.clearImmediate(id); | |
} | |
}); | |
return id; | |
}; | |
exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { | |
delete immediateIds[id]; | |
}; | |
}).call(this,_dereq_("timers").setImmediate,_dereq_("timers").clearImmediate) | |
},{"process/browser.js":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/timers-browserify/node_modules/process/browser.js","timers":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/timers-browserify/main.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/timers-browserify/node_modules/process/browser.js":[function(_dereq_,module,exports){ | |
arguments[4]["/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/process/browser.js"][0].apply(exports,arguments) | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/util-deprecate/browser.js":[function(_dereq_,module,exports){ | |
(function (global){ | |
/** | |
* Module exports. | |
*/ | |
module.exports = deprecate; | |
/** | |
* Mark that a method should not be used. | |
* Returns a modified function which warns once by default. | |
* | |
* If `localStorage.noDeprecation = true` is set, then it is a no-op. | |
* | |
* If `localStorage.throwDeprecation = true` is set, then deprecated functions | |
* will throw an Error when invoked. | |
* | |
* If `localStorage.traceDeprecation = true` is set, then deprecated functions | |
* will invoke `console.trace()` instead of `console.error()`. | |
* | |
* @param {Function} fn - the function to deprecate | |
* @param {String} msg - the string to print to the console when `fn` is invoked | |
* @returns {Function} a new "deprecated" version of `fn` | |
* @api public | |
*/ | |
function deprecate (fn, msg) { | |
if (config('noDeprecation')) { | |
return fn; | |
} | |
var warned = false; | |
function deprecated() { | |
if (!warned) { | |
if (config('throwDeprecation')) { | |
throw new Error(msg); | |
} else if (config('traceDeprecation')) { | |
console.trace(msg); | |
} else { | |
console.warn(msg); | |
} | |
warned = true; | |
} | |
return fn.apply(this, arguments); | |
} | |
return deprecated; | |
} | |
/** | |
* Checks `localStorage` for boolean values for the given `name`. | |
* | |
* @param {String} name | |
* @returns {Boolean} | |
* @api private | |
*/ | |
function config (name) { | |
// accessing global.localStorage can trigger a DOMException in sandboxed iframes | |
try { | |
if (!global.localStorage) return false; | |
} catch (_) { | |
return false; | |
} | |
var val = global.localStorage[name]; | |
if (null == val) return false; | |
return String(val).toLowerCase() === 'true'; | |
} | |
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/util/node_modules/inherits/inherits_browser.js":[function(_dereq_,module,exports){ | |
arguments[4]["/Users/chenwei/Desktop/github/metamask-extension/node_modules/inherits/inherits_browser.js"][0].apply(exports,arguments) | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/util/support/isBufferBrowser.js":[function(_dereq_,module,exports){ | |
module.exports = function isBuffer(arg) { | |
return arg && typeof arg === 'object' | |
&& typeof arg.copy === 'function' | |
&& typeof arg.fill === 'function' | |
&& typeof arg.readUInt8 === 'function'; | |
} | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/util/util.js":[function(_dereq_,module,exports){ | |
(function (process,global){ | |
// Copyright Joyent, Inc. and other Node contributors. | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a | |
// copy of this software and associated documentation files (the | |
// "Software"), to deal in the Software without restriction, including | |
// without limitation the rights to use, copy, modify, merge, publish, | |
// distribute, sublicense, and/or sell copies of the Software, and to permit | |
// persons to whom the Software is furnished to do so, subject to the | |
// following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included | |
// in all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | |
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | |
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | |
// USE OR OTHER DEALINGS IN THE SOFTWARE. | |
var formatRegExp = /%[sdj%]/g; | |
exports.format = function(f) { | |
if (!isString(f)) { | |
var objects = []; | |
for (var i = 0; i < arguments.length; i++) { | |
objects.push(inspect(arguments[i])); | |
} | |
return objects.join(' '); | |
} | |
var i = 1; | |
var args = arguments; | |
var len = args.length; | |
var str = String(f).replace(formatRegExp, function(x) { | |
if (x === '%%') return '%'; | |
if (i >= len) return x; | |
switch (x) { | |
case '%s': return String(args[i++]); | |
case '%d': return Number(args[i++]); | |
case '%j': | |
try { | |
return JSON.stringify(args[i++]); | |
} catch (_) { | |
return '[Circular]'; | |
} | |
default: | |
return x; | |
} | |
}); | |
for (var x = args[i]; i < len; x = args[++i]) { | |
if (isNull(x) || !isObject(x)) { | |
str += ' ' + x; | |
} else { | |
str += ' ' + inspect(x); | |
} | |
} | |
return str; | |
}; | |
// Mark that a method should not be used. | |
// Returns a modified function which warns once by default. | |
// If --no-deprecation is set, then it is a no-op. | |
exports.deprecate = function(fn, msg) { | |
// Allow for deprecating things in the process of starting up. | |
if (isUndefined(global.process)) { | |
return function() { | |
return exports.deprecate(fn, msg).apply(this, arguments); | |
}; | |
} | |
if (process.noDeprecation === true) { | |
return fn; | |
} | |
var warned = false; | |
function deprecated() { | |
if (!warned) { | |
if (process.throwDeprecation) { | |
throw new Error(msg); | |
} else if (process.traceDeprecation) { | |
console.trace(msg); | |
} else { | |
console.error(msg); | |
} | |
warned = true; | |
} | |
return fn.apply(this, arguments); | |
} | |
return deprecated; | |
}; | |
var debugs = {}; | |
var debugEnviron; | |
exports.debuglog = function(set) { | |
if (isUndefined(debugEnviron)) | |
debugEnviron = process.env.NODE_DEBUG || ''; | |
set = set.toUpperCase(); | |
if (!debugs[set]) { | |
if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { | |
var pid = process.pid; | |
debugs[set] = function() { | |
var msg = exports.format.apply(exports, arguments); | |
console.error('%s %d: %s', set, pid, msg); | |
}; | |
} else { | |
debugs[set] = function() {}; | |
} | |
} | |
return debugs[set]; | |
}; | |
/** | |
* Echos the value of a value. Trys to print the value out | |
* in the best way possible given the different types. | |
* | |
* @param {Object} obj The object to print out. | |
* @param {Object} opts Optional options object that alters the output. | |
*/ | |
/* legacy: obj, showHidden, depth, colors*/ | |
function inspect(obj, opts) { | |
// default options | |
var ctx = { | |
seen: [], | |
stylize: stylizeNoColor | |
}; | |
// legacy... | |
if (arguments.length >= 3) ctx.depth = arguments[2]; | |
if (arguments.length >= 4) ctx.colors = arguments[3]; | |
if (isBoolean(opts)) { | |
// legacy... | |
ctx.showHidden = opts; | |
} else if (opts) { | |
// got an "options" object | |
exports._extend(ctx, opts); | |
} | |
// set default options | |
if (isUndefined(ctx.showHidden)) ctx.showHidden = false; | |
if (isUndefined(ctx.depth)) ctx.depth = 2; | |
if (isUndefined(ctx.colors)) ctx.colors = false; | |
if (isUndefined(ctx.customInspect)) ctx.customInspect = true; | |
if (ctx.colors) ctx.stylize = stylizeWithColor; | |
return formatValue(ctx, obj, ctx.depth); | |
} | |
exports.inspect = inspect; | |
// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics | |
inspect.colors = { | |
'bold' : [1, 22], | |
'italic' : [3, 23], | |
'underline' : [4, 24], | |
'inverse' : [7, 27], | |
'white' : [37, 39], | |
'grey' : [90, 39], | |
'black' : [30, 39], | |
'blue' : [34, 39], | |
'cyan' : [36, 39], | |
'green' : [32, 39], | |
'magenta' : [35, 39], | |
'red' : [31, 39], | |
'yellow' : [33, 39] | |
}; | |
// Don't use 'blue' not visible on cmd.exe | |
inspect.styles = { | |
'special': 'cyan', | |
'number': 'yellow', | |
'boolean': 'yellow', | |
'undefined': 'grey', | |
'null': 'bold', | |
'string': 'green', | |
'date': 'magenta', | |
// "name": intentionally not styling | |
'regexp': 'red' | |
}; | |
function stylizeWithColor(str, styleType) { | |
var style = inspect.styles[styleType]; | |
if (style) { | |
return '\u001b[' + inspect.colors[style][0] + 'm' + str + | |
'\u001b[' + inspect.colors[style][1] + 'm'; | |
} else { | |
return str; | |
} | |
} | |
function stylizeNoColor(str, styleType) { | |
return str; | |
} | |
function arrayToHash(array) { | |
var hash = {}; | |
array.forEach(function(val, idx) { | |
hash[val] = true; | |
}); | |
return hash; | |
} | |
function formatValue(ctx, value, recurseTimes) { | |
// Provide a hook for user-specified inspect functions. | |
// Check that value is an object with an inspect function on it | |
if (ctx.customInspect && | |
value && | |
isFunction(value.inspect) && | |
// Filter out the util module, it's inspect function is special | |
value.inspect !== exports.inspect && | |
// Also filter out any prototype objects using the circular check. | |
!(value.constructor && value.constructor.prototype === value)) { | |
var ret = value.inspect(recurseTimes, ctx); | |
if (!isString(ret)) { | |
ret = formatValue(ctx, ret, recurseTimes); | |
} | |
return ret; | |
} | |
// Primitive types cannot have properties | |
var primitive = formatPrimitive(ctx, value); | |
if (primitive) { | |
return primitive; | |
} | |
// Look up the keys of the object. | |
var keys = Object.keys(value); | |
var visibleKeys = arrayToHash(keys); | |
if (ctx.showHidden) { | |
keys = Object.getOwnPropertyNames(value); | |
} | |
// IE doesn't make error fields non-enumerable | |
// http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx | |
if (isError(value) | |
&& (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { | |
return formatError(value); | |
} | |
// Some type of object without properties can be shortcutted. | |
if (keys.length === 0) { | |
if (isFunction(value)) { | |
var name = value.name ? ': ' + value.name : ''; | |
return ctx.stylize('[Function' + name + ']', 'special'); | |
} | |
if (isRegExp(value)) { | |
return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); | |
} | |
if (isDate(value)) { | |
return ctx.stylize(Date.prototype.toString.call(value), 'date'); | |
} | |
if (isError(value)) { | |
return formatError(value); | |
} | |
} | |
var base = '', array = false, braces = ['{', '}']; | |
// Make Array say that they are Array | |
if (isArray(value)) { | |
array = true; | |
braces = ['[', ']']; | |
} | |
// Make functions say that they are functions | |
if (isFunction(value)) { | |
var n = value.name ? ': ' + value.name : ''; | |
base = ' [Function' + n + ']'; | |
} | |
// Make RegExps say that they are RegExps | |
if (isRegExp(value)) { | |
base = ' ' + RegExp.prototype.toString.call(value); | |
} | |
// Make dates with properties first say the date | |
if (isDate(value)) { | |
base = ' ' + Date.prototype.toUTCString.call(value); | |
} | |
// Make error with message first say the error | |
if (isError(value)) { | |
base = ' ' + formatError(value); | |
} | |
if (keys.length === 0 && (!array || value.length == 0)) { | |
return braces[0] + base + braces[1]; | |
} | |
if (recurseTimes < 0) { | |
if (isRegExp(value)) { | |
return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); | |
} else { | |
return ctx.stylize('[Object]', 'special'); | |
} | |
} | |
ctx.seen.push(value); | |
var output; | |
if (array) { | |
output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); | |
} else { | |
output = keys.map(function(key) { | |
return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); | |
}); | |
} | |
ctx.seen.pop(); | |
return reduceToSingleString(output, base, braces); | |
} | |
function formatPrimitive(ctx, value) { | |
if (isUndefined(value)) | |
return ctx.stylize('undefined', 'undefined'); | |
if (isString(value)) { | |
var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') | |
.replace(/'/g, "\\'") | |
.replace(/\\"/g, '"') + '\''; | |
return ctx.stylize(simple, 'string'); | |
} | |
if (isNumber(value)) | |
return ctx.stylize('' + value, 'number'); | |
if (isBoolean(value)) | |
return ctx.stylize('' + value, 'boolean'); | |
// For some reason typeof null is "object", so special case here. | |
if (isNull(value)) | |
return ctx.stylize('null', 'null'); | |
} | |
function formatError(value) { | |
return '[' + Error.prototype.toString.call(value) + ']'; | |
} | |
function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { | |
var output = []; | |
for (var i = 0, l = value.length; i < l; ++i) { | |
if (hasOwnProperty(value, String(i))) { | |
output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, | |
String(i), true)); | |
} else { | |
output.push(''); | |
} | |
} | |
keys.forEach(function(key) { | |
if (!key.match(/^\d+$/)) { | |
output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, | |
key, true)); | |
} | |
}); | |
return output; | |
} | |
function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { | |
var name, str, desc; | |
desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; | |
if (desc.get) { | |
if (desc.set) { | |
str = ctx.stylize('[Getter/Setter]', 'special'); | |
} else { | |
str = ctx.stylize('[Getter]', 'special'); | |
} | |
} else { | |
if (desc.set) { | |
str = ctx.stylize('[Setter]', 'special'); | |
} | |
} | |
if (!hasOwnProperty(visibleKeys, key)) { | |
name = '[' + key + ']'; | |
} | |
if (!str) { | |
if (ctx.seen.indexOf(desc.value) < 0) { | |
if (isNull(recurseTimes)) { | |
str = formatValue(ctx, desc.value, null); | |
} else { | |
str = formatValue(ctx, desc.value, recurseTimes - 1); | |
} | |
if (str.indexOf('\n') > -1) { | |
if (array) { | |
str = str.split('\n').map(function(line) { | |
return ' ' + line; | |
}).join('\n').substr(2); | |
} else { | |
str = '\n' + str.split('\n').map(function(line) { | |
return ' ' + line; | |
}).join('\n'); | |
} | |
} | |
} else { | |
str = ctx.stylize('[Circular]', 'special'); | |
} | |
} | |
if (isUndefined(name)) { | |
if (array && key.match(/^\d+$/)) { | |
return str; | |
} | |
name = JSON.stringify('' + key); | |
if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { | |
name = name.substr(1, name.length - 2); | |
name = ctx.stylize(name, 'name'); | |
} else { | |
name = name.replace(/'/g, "\\'") | |
.replace(/\\"/g, '"') | |
.replace(/(^"|"$)/g, "'"); | |
name = ctx.stylize(name, 'string'); | |
} | |
} | |
return name + ': ' + str; | |
} | |
function reduceToSingleString(output, base, braces) { | |
var numLinesEst = 0; | |
var length = output.reduce(function(prev, cur) { | |
numLinesEst++; | |
if (cur.indexOf('\n') >= 0) numLinesEst++; | |
return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; | |
}, 0); | |
if (length > 60) { | |
return braces[0] + | |
(base === '' ? '' : base + '\n ') + | |
' ' + | |
output.join(',\n ') + | |
' ' + | |
braces[1]; | |
} | |
return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; | |
} | |
// NOTE: These type checking functions intentionally don't use `instanceof` | |
// because it is fragile and can be easily faked with `Object.create()`. | |
function isArray(ar) { | |
return Array.isArray(ar); | |
} | |
exports.isArray = isArray; | |
function isBoolean(arg) { | |
return typeof arg === 'boolean'; | |
} | |
exports.isBoolean = isBoolean; | |
function isNull(arg) { | |
return arg === null; | |
} | |
exports.isNull = isNull; | |
function isNullOrUndefined(arg) { | |
return arg == null; | |
} | |
exports.isNullOrUndefined = isNullOrUndefined; | |
function isNumber(arg) { | |
return typeof arg === 'number'; | |
} | |
exports.isNumber = isNumber; | |
function isString(arg) { | |
return typeof arg === 'string'; | |
} | |
exports.isString = isString; | |
function isSymbol(arg) { | |
return typeof arg === 'symbol'; | |
} | |
exports.isSymbol = isSymbol; | |
function isUndefined(arg) { | |
return arg === void 0; | |
} | |
exports.isUndefined = isUndefined; | |
function isRegExp(re) { | |
return isObject(re) && objectToString(re) === '[object RegExp]'; | |
} | |
exports.isRegExp = isRegExp; | |
function isObject(arg) { | |
return typeof arg === 'object' && arg !== null; | |
} | |
exports.isObject = isObject; | |
function isDate(d) { | |
return isObject(d) && objectToString(d) === '[object Date]'; | |
} | |
exports.isDate = isDate; | |
function isError(e) { | |
return isObject(e) && | |
(objectToString(e) === '[object Error]' || e instanceof Error); | |
} | |
exports.isError = isError; | |
function isFunction(arg) { | |
return typeof arg === 'function'; | |
} | |
exports.isFunction = isFunction; | |
function isPrimitive(arg) { | |
return arg === null || | |
typeof arg === 'boolean' || | |
typeof arg === 'number' || | |
typeof arg === 'string' || | |
typeof arg === 'symbol' || // ES6 symbol | |
typeof arg === 'undefined'; | |
} | |
exports.isPrimitive = isPrimitive; | |
exports.isBuffer = _dereq_('./support/isBuffer'); | |
function objectToString(o) { | |
return Object.prototype.toString.call(o); | |
} | |
function pad(n) { | |
return n < 10 ? '0' + n.toString(10) : n.toString(10); | |
} | |
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', | |
'Oct', 'Nov', 'Dec']; | |
// 26 Feb 16:19:34 | |
function timestamp() { | |
var d = new Date(); | |
var time = [pad(d.getHours()), | |
pad(d.getMinutes()), | |
pad(d.getSeconds())].join(':'); | |
return [d.getDate(), months[d.getMonth()], time].join(' '); | |
} | |
// log is just a thin wrapper to console.log that prepends a timestamp | |
exports.log = function() { | |
console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); | |
}; | |
/** | |
* Inherit the prototype methods from one constructor into another. | |
* | |
* The Function.prototype.inherits from lang.js rewritten as a standalone | |
* function (not on Function.prototype). NOTE: If this file is to be loaded | |
* during bootstrapping this function needs to be rewritten using some native | |
* functions as prototype setup using normal JavaScript does not work as | |
* expected during bootstrapping (see mirror.js in r114903). | |
* | |
* @param {function} ctor Constructor function which needs to inherit the | |
* prototype. | |
* @param {function} superCtor Constructor function to inherit prototype from. | |
*/ | |
exports.inherits = _dereq_('inherits'); | |
exports._extend = function(origin, add) { | |
// Don't do anything if add isn't an object | |
if (!add || !isObject(add)) return origin; | |
var keys = Object.keys(add); | |
var i = keys.length; | |
while (i--) { | |
origin[keys[i]] = add[keys[i]]; | |
} | |
return origin; | |
}; | |
function hasOwnProperty(obj, prop) { | |
return Object.prototype.hasOwnProperty.call(obj, prop); | |
} | |
}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
},{"./support/isBuffer":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/util/support/isBufferBrowser.js","_process":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/browserify/node_modules/process/browser.js","inherits":"/Users/chenwei/Desktop/github/metamask-extension/node_modules/util/node_modules/inherits/inherits_browser.js"}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/web3/dist/web3.min.js":[function(_dereq_,module,exports){ | |
(function (global){ | |
_dereq_=function o(s,a,u){function c(e,t){if(!a[e]){if(!s[e]){var r="function"==typeof _dereq_&&_dereq_;if(!t&&r)return r(e,!0);if(f)return f(e,!0);var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var i=a[e]={exports:{}};s[e][0].call(i.exports,function(t){return c(s[e][1][t]||t)},i,i.exports,o,s,a,u)}return a[e].exports}for(var f="function"==typeof _dereq_&&_dereq_,t=0;t<u.length;t++)c(u[t]);return c}({1:[function(t,e,r){e.exports=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"name",outputs:[{name:"o_name",type:"bytes32"}],type:"function"},{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"owner",outputs:[{name:"",type:"address"}],type:"function"},{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"content",outputs:[{name:"",type:"bytes32"}],type:"function"},{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"addr",outputs:[{name:"",type:"address"}],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"}],name:"reserve",outputs:[],type:"function"},{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"subRegistrar",outputs:[{name:"",type:"address"}],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_newOwner",type:"address"}],name:"transfer",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_registrar",type:"address"}],name:"setSubRegistrar",outputs:[],type:"function"},{constant:!1,inputs:[],name:"Registrar",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_a",type:"address"},{name:"_primary",type:"bool"}],name:"setAddress",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_content",type:"bytes32"}],name:"setContent",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"}],name:"disown",outputs:[],type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"_name",type:"bytes32"},{indexed:!1,name:"_winner",type:"address"}],name:"AuctionEnded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_name",type:"bytes32"},{indexed:!1,name:"_bidder",type:"address"},{indexed:!1,name:"_value",type:"uint256"}],name:"NewBid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"name",type:"bytes32"}],name:"Changed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"name",type:"bytes32"},{indexed:!0,name:"addr",type:"address"}],name:"PrimaryChanged",type:"event"}]},{}],2:[function(t,e,r){e.exports=[{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"owner",outputs:[{name:"",type:"address"}],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_refund",type:"address"}],name:"disown",outputs:[],type:"function"},{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"addr",outputs:[{name:"",type:"address"}],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"}],name:"reserve",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_newOwner",type:"address"}],name:"transfer",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_a",type:"address"}],name:"setAddr",outputs:[],type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"name",type:"bytes32"}],name:"Changed",type:"event"}]},{}],3:[function(t,e,r){e.exports=[{constant:!1,inputs:[{name:"from",type:"bytes32"},{name:"to",type:"address"},{name:"value",type:"uint256"}],name:"transfer",outputs:[],type:"function"},{constant:!1,inputs:[{name:"from",type:"bytes32"},{name:"to",type:"address"},{name:"indirectId",type:"bytes32"},{name:"value",type:"uint256"}],name:"icapTransfer",outputs:[],type:"function"},{constant:!1,inputs:[{name:"to",type:"bytes32"}],name:"deposit",outputs:[],payable:!0,type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"AnonymousDeposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"bytes32"},{indexed:!1,name:"value",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"bytes32"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"bytes32"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"indirectId",type:"bytes32"},{indexed:!1,name:"value",type:"uint256"}],name:"IcapTransfer",type:"event"}]},{}],4:[function(t,e,r){var n=t("./formatters"),i=t("./type"),o=function(){this._inputFormatter=n.formatInputInt,this._outputFormatter=n.formatOutputAddress};((o.prototype=new i({})).constructor=o).prototype.isType=function(t){return!!t.match(/address(\[([0-9]*)\])?/)},e.exports=o},{"./formatters":9,"./type":14}],5:[function(t,e,r){var n=t("./formatters"),i=t("./type"),o=function(){this._inputFormatter=n.formatInputBool,this._outputFormatter=n.formatOutputBool};((o.prototype=new i({})).constructor=o).prototype.isType=function(t){return!!t.match(/^bool(\[([0-9]*)\])*$/)},e.exports=o},{"./formatters":9,"./type":14}],6:[function(t,e,r){var n=t("./formatters"),i=t("./type"),o=function(){this._inputFormatter=n.formatInputBytes,this._outputFormatter=n.formatOutputBytes};((o.prototype=new i({})).constructor=o).prototype.isType=function(t){return!!t.match(/^bytes([0-9]{1,})(\[([0-9]*)\])*$/)},e.exports=o},{"./formatters":9,"./type":14}],7:[function(t,e,r){var y=t("./formatters"),n=t("./address"),i=t("./bool"),o=t("./int"),s=t("./uint"),a=t("./dynamicbytes"),u=t("./string"),c=t("./real"),f=t("./ureal"),h=t("./bytes"),l=function(t,e){return t.isDynamicType(e)||t.isDynamicArray(e)},p=function(t){this._types=t};p.prototype._requireType=function(e){var t=this._types.filter(function(t){return t.isType(e)})[0];if(!t)throw Error("invalid solidity type!: "+e);return t},p.prototype.encodeParam=function(t,e){return this.encodeParams([t],[e])},p.prototype.encodeParams=function(o,r){var s=this.getSolidityTypes(o),t=s.map(function(t,e){return t.encode(r[e],o[e])}),e=s.reduce(function(t,e,r){var n=e.staticPartLength(o[r]),i=32*Math.floor((n+31)/32);return t+(l(s[r],o[r])?32:i)},0);return this.encodeMultiWithOffset(o,s,t,e)},p.prototype.encodeMultiWithOffset=function(n,i,o,s){var a="",u=this;return n.forEach(function(t,e){if(l(i[e],n[e])){a+=y.formatInputInt(s).encode();var r=u.encodeWithOffset(n[e],i[e],o[e],s);s+=r.length/2}else a+=u.encodeWithOffset(n[e],i[e],o[e],s)}),n.forEach(function(t,e){if(l(i[e],n[e])){var r=u.encodeWithOffset(n[e],i[e],o[e],s);s+=r.length/2,a+=r}}),a},p.prototype.encodeWithOffset=function(t,e,r,n){var i=1,o=2,s=3,a=e.isDynamicArray(t)?i:e.isStaticArray(t)?o:s;if(a!==s){var u=e.nestedName(t),c=e.staticPartLength(u),f=a===i?r[0]:"";if(e.isDynamicArray(u))for(var h=a===i?2:0,l=0;l<r.length;l++)a===i?h+=+r[l-1][0]||0:a===o&&(h+=+(r[l-1]||[])[0]||0),f+=y.formatInputInt(n+l*c+32*h).encode();for(var p=a===i?r.length-1:r.length,d=0;d<p;d++){var m=f/2;a===i?f+=this.encodeWithOffset(u,e,r[d+1],n+m):a===o&&(f+=this.encodeWithOffset(u,e,r[d],n+m))}return f}return r},p.prototype.decodeParam=function(t,e){return this.decodeParams([t],e)[0]},p.prototype.decodeParams=function(r,n){var t=this.getSolidityTypes(r),i=this.getOffsets(r,t);return t.map(function(t,e){return t.decode(n,i[e],r[e],e)})},p.prototype.getOffsets=function(r,n){for(var t=n.map(function(t,e){return t.staticPartLength(r[e])}),e=1;e<t.length;e++)t[e]+=t[e-1];return t.map(function(t,e){return t-n[e].staticPartLength(r[e])})},p.prototype.getSolidityTypes=function(t){var e=this;return t.map(function(t){return e._requireType(t)})};var d=new p([new n,new i,new o,new s,new a,new h,new u,new c,new f]);e.exports=d},{"./address":4,"./bool":5,"./bytes":6,"./dynamicbytes":8,"./formatters":9,"./int":10,"./real":12,"./string":13,"./uint":15,"./ureal":16}],8:[function(t,e,r){var n=t("./formatters"),i=t("./type"),o=function(){this._inputFormatter=n.formatInputDynamicBytes,this._outputFormatter=n.formatOutputDynamicBytes};((o.prototype=new i({})).constructor=o).prototype.isType=function(t){return!!t.match(/^bytes(\[([0-9]*)\])*$/)},o.prototype.isDynamicType=function(){return!0},e.exports=o},{"./formatters":9,"./type":14}],9:[function(t,e,r){var n=t("bignumber.js"),i=t("../utils/utils"),o=t("../utils/config"),s=t("./param"),a=function(t){n.config(o.ETH_BIGNUMBER_ROUNDING_MODE);var e=i.padLeft(i.toTwosComplement(t).toString(16),64);return new s(e)},u=function(t){var e=t.staticPart()||"0";return"1"===new n(e.substr(0,1),16).toString(2).substr(0,1)?new n(e,16).minus(new n("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",16)).minus(1):new n(e,16)},c=function(t){var e=t.staticPart()||"0";return new n(e,16)};e.exports={formatInputInt:a,formatInputBytes:function(t){var e=i.toHex(t).substr(2),r=Math.floor((e.length+63)/64);return e=i.padRight(e,64*r),new s(e)},formatInputDynamicBytes:function(t){var e=i.toHex(t).substr(2),r=e.length/2,n=Math.floor((e.length+63)/64);return e=i.padRight(e,64*n),new s(a(r).value+e)},formatInputString:function(t){var e=i.fromUtf8(t).substr(2),r=e.length/2,n=Math.floor((e.length+63)/64);return e=i.padRight(e,64*n),new s(a(r).value+e)},formatInputBool:function(t){return new s("000000000000000000000000000000000000000000000000000000000000000"+(t?"1":"0"))},formatInputReal:function(t){return a(new n(t).times(new n(2).pow(128)))},formatOutputInt:u,formatOutputUInt:c,formatOutputReal:function(t){return u(t).dividedBy(new n(2).pow(128))},formatOutputUReal:function(t){return c(t).dividedBy(new n(2).pow(128))},formatOutputBool:function(t){return"0000000000000000000000000000000000000000000000000000000000000001"===t.staticPart()},formatOutputBytes:function(t,e){var r=e.match(/^bytes([0-9]*)/),n=parseInt(r[1]);return"0x"+t.staticPart().slice(0,2*n)},formatOutputDynamicBytes:function(t){var e=2*new n(t.dynamicPart().slice(0,64),16).toNumber();return"0x"+t.dynamicPart().substr(64,e)},formatOutputString:function(t){var e=2*new n(t.dynamicPart().slice(0,64),16).toNumber();return i.toUtf8(t.dynamicPart().substr(64,e))},formatOutputAddress:function(t){var e=t.staticPart();return"0x"+e.slice(e.length-40,e.length)}}},{"../utils/config":18,"../utils/utils":20,"./param":11,"bignumber.js":"bignumber.js"}],10:[function(t,e,r){var n=t("./formatters"),i=t("./type"),o=function(){this._inputFormatter=n.formatInputInt,this._outputFormatter=n.formatOutputInt};((o.prototype=new i({})).constructor=o).prototype.isType=function(t){return!!t.match(/^int([0-9]*)?(\[([0-9]*)\])*$/)},e.exports=o},{"./formatters":9,"./type":14}],11:[function(t,e,r){var n=t("../utils/utils"),i=function(t,e){this.value=t||"",this.offset=e};i.prototype.dynamicPartLength=function(){return this.dynamicPart().length/2},i.prototype.withOffset=function(t){return new i(this.value,t)},i.prototype.combine=function(t){return new i(this.value+t.value)},i.prototype.isDynamic=function(){return void 0!==this.offset},i.prototype.offsetAsBytes=function(){return this.isDynamic()?n.padLeft(n.toTwosComplement(this.offset).toString(16),64):""},i.prototype.staticPart=function(){return this.isDynamic()?this.offsetAsBytes():this.value},i.prototype.dynamicPart=function(){return this.isDynamic()?this.value:""},i.prototype.encode=function(){return this.staticPart()+this.dynamicPart()},i.encodeList=function(t){var r=32*t.length,e=t.map(function(t){if(!t.isDynamic())return t;var e=r;return r+=t.dynamicPartLength(),t.withOffset(e)});return e.reduce(function(t,e){return t+e.dynamicPart()},e.reduce(function(t,e){return t+e.staticPart()},""))},e.exports=i},{"../utils/utils":20}],12:[function(t,e,r){var n=t("./formatters"),i=t("./type"),o=function(){this._inputFormatter=n.formatInputReal,this._outputFormatter=n.formatOutputReal};((o.prototype=new i({})).constructor=o).prototype.isType=function(t){return!!t.match(/real([0-9]*)?(\[([0-9]*)\])?/)},e.exports=o},{"./formatters":9,"./type":14}],13:[function(t,e,r){var n=t("./formatters"),i=t("./type"),o=function(){this._inputFormatter=n.formatInputString,this._outputFormatter=n.formatOutputString};((o.prototype=new i({})).constructor=o).prototype.isType=function(t){return!!t.match(/^string(\[([0-9]*)\])*$/)},o.prototype.isDynamicType=function(){return!0},e.exports=o},{"./formatters":9,"./type":14}],14:[function(t,e,r){var n=t("./formatters"),s=t("./param"),i=function(t){this._inputFormatter=t.inputFormatter,this._outputFormatter=t.outputFormatter};i.prototype.isType=function(t){throw"this method should be overrwritten for type "+t},i.prototype.staticPartLength=function(t){return(this.nestedTypes(t)||["[1]"]).map(function(t){return parseInt(t.slice(1,-1),10)||1}).reduce(function(t,e){return t*e},32)},i.prototype.isDynamicArray=function(t){var e=this.nestedTypes(t);return!!e&&!e[e.length-1].match(/[0-9]{1,}/g)},i.prototype.isStaticArray=function(t){var e=this.nestedTypes(t);return!!e&&!!e[e.length-1].match(/[0-9]{1,}/g)},i.prototype.staticArrayLength=function(t){var e=this.nestedTypes(t);return e?parseInt(e[e.length-1].match(/[0-9]{1,}/g)||1):1},i.prototype.nestedName=function(t){var e=this.nestedTypes(t);return e?t.substr(0,t.length-e[e.length-1].length):t},i.prototype.isDynamicType=function(){return!1},i.prototype.nestedTypes=function(t){return t.match(/(\[[0-9]*\])/g)},i.prototype.encode=function(i,o){var t,e,r,s=this;return this.isDynamicArray(o)?(t=i.length,e=s.nestedName(o),(r=[]).push(n.formatInputInt(t).encode()),i.forEach(function(t){r.push(s.encode(t,e))}),r):this.isStaticArray(o)?function(){for(var t=s.staticArrayLength(o),e=s.nestedName(o),r=[],n=0;n<t;n++)r.push(s.encode(i[n],e));return r}():this._inputFormatter(i,o).encode()},i.prototype.decode=function(u,c,f){var t,e,r,n,h=this;if(this.isDynamicArray(f))return function(){for(var t=parseInt("0x"+u.substr(2*c,64)),e=parseInt("0x"+u.substr(2*t,64)),r=t+32,n=h.nestedName(f),i=h.staticPartLength(n),o=32*Math.floor((i+31)/32),s=[],a=0;a<e*o;a+=o)s.push(h.decode(u,r+a,n));return s}();if(this.isStaticArray(f))return function(){for(var t=h.staticArrayLength(f),e=c,r=h.nestedName(f),n=h.staticPartLength(r),i=32*Math.floor((n+31)/32),o=[],s=0;s<t*i;s+=i)o.push(h.decode(u,e+s,r));return o}();if(this.isDynamicType(f))return t=parseInt("0x"+u.substr(2*c,64)),e=parseInt("0x"+u.substr(2*t,64)),r=Math.floor((e+31)/32),n=new s(u.substr(2*t,64*(1+r)),0),h._outputFormatter(n,f);var i=this.staticPartLength(f),o=new s(u.substr(2*c,2*i));return this._outputFormatter(o,f)},e.exports=i},{"./formatters":9,"./param":11}],15:[function(t,e,r){var n=t("./formatters"),i=t("./type"),o=function(){this._inputFormatter=n.formatInputInt,this._outputFormatter=n.formatOutputUInt};((o.prototype=new i({})).constructor=o).prototype.isType=function(t){return!!t.match(/^uint([0-9]*)?(\[([0-9]*)\])*$/)},e.exports=o},{"./formatters":9,"./type":14}],16:[function(t,e,r){var n=t("./formatters"),i=t("./type"),o=function(){this._inputFormatter=n.formatInputReal,this._outputFormatter=n.formatOutputUReal};((o.prototype=new i({})).constructor=o).prototype.isType=function(t){return!!t.match(/^ureal([0-9]*)?(\[([0-9]*)\])*$/)},e.exports=o},{"./formatters":9,"./type":14}],17:[function(t,e,r){"use strict";"undefined"==typeof XMLHttpRequest?r.XMLHttpRequest={}:r.XMLHttpRequest=XMLHttpRequest},{}],18:[function(t,e,r){var n=t("bignumber.js");e.exports={ETH_PADDING:32,ETH_SIGNATURE_LENGTH:4,ETH_UNITS:["wei","kwei","Mwei","Gwei","szabo","finney","femtoether","picoether","nanoether","microether","milliether","nano","micro","milli","ether","grand","Mether","Gether","Tether","Pether","Eether","Zether","Yether","Nether","Dether","Vether","Uether"],ETH_BIGNUMBER_ROUNDING_MODE:{ROUNDING_MODE:n.ROUND_DOWN},ETH_POLLING_TIMEOUT:500,defaultBlock:"latest",defaultAccount:void 0}},{"bignumber.js":"bignumber.js"}],19:[function(t,e,r){var n=t("crypto-js"),i=t("crypto-js/sha3");e.exports=function(t,e){return e&&"hex"===e.encoding&&(2<t.length&&"0x"===t.substr(0,2)&&(t=t.substr(2)),t=n.enc.Hex.parse(t)),i(t,{outputLength:256}).toString()}},{"crypto-js":65,"crypto-js/sha3":86}],20:[function(t,e,r){var n=t("bignumber.js"),i=t("./sha3.js"),s=t("utf8"),o={noether:"0",wei:"1",kwei:"1000",Kwei:"1000",babbage:"1000",femtoether:"1000",mwei:"1000000",Mwei:"1000000",lovelace:"1000000",picoether:"1000000",gwei:"1000000000",Gwei:"1000000000",shannon:"1000000000",nanoether:"1000000000",nano:"1000000000",szabo:"1000000000000",microether:"1000000000000",micro:"1000000000000",finney:"1000000000000000",milliether:"1000000000000000",milli:"1000000000000000",ether:"1000000000000000000",kether:"1000000000000000000000",grand:"1000000000000000000000",mether:"1000000000000000000000000",gether:"1000000000000000000000000000",tether:"1000000000000000000000000000000"},a=function(t,e,r){return new Array(e-t.length+1).join(r||"0")+t},u=function(t,e){t=s.encode(t);for(var r="",n=0;n<t.length;n++){var i=t.charCodeAt(n);if(0===i){if(!e)break;r+="00"}else{var o=i.toString(16);r+=o.length<2?"0"+o:o}}return"0x"+r},c=function(t){var e=l(t),r=e.toString(16);return e.lessThan(0)?"-0x"+r.substr(1):"0x"+r},f=function(t){if(g(t))return c(+t);if(m(t))return c(t);if("object"==typeof t)return u(JSON.stringify(t));if(y(t)){if(0===t.indexOf("-0x"))return c(t);if(0===t.indexOf("0x"))return t;if(!isFinite(t))return u(t,1)}return c(t)},h=function(t){t=t?t.toLowerCase():"ether";var e=o[t];if(void 0===e)throw new Error("This unit doesn't exists, please use the one of the following units"+JSON.stringify(o,null,2));return new n(e,10)},l=function(t){return m(t=t||0)?t:!y(t)||0!==t.indexOf("0x")&&0!==t.indexOf("-0x")?new n(t.toString(10),10):new n(t.replace("0x",""),16)},p=function(t){return/^0x[0-9a-f]{40}$/i.test(t)},d=function(t){t=t.replace("0x","");for(var e=i(t.toLowerCase()),r=0;r<40;r++)if(7<parseInt(e[r],16)&&t[r].toUpperCase()!==t[r]||parseInt(e[r],16)<=7&&t[r].toLowerCase()!==t[r])return!1;return!0},m=function(t){return t instanceof n||t&&t.constructor&&"BigNumber"===t.constructor.name},y=function(t){return"string"==typeof t||t&&t.constructor&&"String"===t.constructor.name},g=function(t){return"boolean"==typeof t};e.exports={padLeft:a,padRight:function(t,e,r){return t+new Array(e-t.length+1).join(r||"0")},toHex:f,toDecimal:function(t){return l(t).toNumber()},fromDecimal:c,toUtf8:function(t){var e="",r=0,n=t.length;for("0x"===t.substring(0,2)&&(r=2);r<n;r+=2){var i=parseInt(t.substr(r,2),16);if(0===i)break;e+=String.fromCharCode(i)}return s.decode(e)},toAscii:function(t){var e="",r=0,n=t.length;for("0x"===t.substring(0,2)&&(r=2);r<n;r+=2){var i=parseInt(t.substr(r,2),16);e+=String.fromCharCode(i)}return e},fromUtf8:u,fromAscii:function(t,e){for(var r="",n=0;n<t.length;n++){var i=t.charCodeAt(n).toString(16);r+=i.length<2?"0"+i:i}return"0x"+r.padEnd(e,"0")},transformToFullName:function(t){if(-1!==t.name.indexOf("("))return t.name;var e=t.inputs.map(function(t){return t.type}).join();return t.name+"("+e+")"},extractDisplayName:function(t){var e=t.indexOf("("),r=t.indexOf(")");return-1!==e&&-1!==r?t.substr(0,e):t},extractTypeName:function(t){var e=t.indexOf("("),r=t.indexOf(")");return-1!==e&&-1!==r?t.substr(e+1,r-e-1).replace(" ",""):""},toWei:function(t,e){var r=l(t).times(h(e));return m(t)?r:r.toString(10)},fromWei:function(t,e){var r=l(t).dividedBy(h(e));return m(t)?r:r.toString(10)},toBigNumber:l,toTwosComplement:function(t){var e=l(t).round();return e.lessThan(0)?new n("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",16).plus(e).plus(1):e},toAddress:function(t){return p(t)?t:/^[0-9a-f]{40}$/.test(t)?"0x"+t:"0x"+a(f(t).substr(2),40)},isBigNumber:m,isStrictAddress:p,isAddress:function(t){return!!/^(0x)?[0-9a-f]{40}$/i.test(t)&&(!(!/^(0x)?[0-9a-f]{40}$/.test(t)&&!/^(0x)?[0-9A-F]{40}$/.test(t))||d(t))},isChecksumAddress:d,toChecksumAddress:function(t){if(void 0===t)return"";t=t.toLowerCase().replace("0x","");for(var e=i(t),r="0x",n=0;n<t.length;n++)7<parseInt(e[n],16)?r+=t[n].toUpperCase():r+=t[n];return r},isFunction:function(t){return"function"==typeof t},isString:y,isObject:function(t){return null!==t&&!Array.isArray(t)&&"object"==typeof t},isBoolean:g,isArray:function(t){return Array.isArray(t)},isJson:function(t){try{return!!JSON.parse(t)}catch(t){return!1}},isBloom:function(t){return!(!/^(0x)?[0-9a-f]{512}$/i.test(t)||!/^(0x)?[0-9a-f]{512}$/.test(t)&&!/^(0x)?[0-9A-F]{512}$/.test(t))},isTopic:function(t){return!(!/^(0x)?[0-9a-f]{64}$/i.test(t)||!/^(0x)?[0-9a-f]{64}$/.test(t)&&!/^(0x)?[0-9A-F]{64}$/.test(t))}}},{"./sha3.js":19,"bignumber.js":"bignumber.js",utf8:123}],21:[function(t,e,r){e.exports={version:"0.20.7"}},{}],22:[function(t,e,r){var n=t("./web3/requestmanager"),i=t("./web3/iban"),o=t("./web3/methods/eth"),s=t("./web3/methods/db"),a=t("./web3/methods/shh"),u=t("./web3/methods/net"),c=t("./web3/methods/personal"),f=t("./web3/methods/swarm"),h=t("./web3/settings"),l=t("./version.json"),p=t("./utils/utils"),d=t("./utils/sha3"),m=t("./web3/extend"),y=t("./web3/batch"),g=t("./web3/property"),v=t("./web3/httpprovider"),b=t("./web3/ipcprovider"),_=t("bignumber.js");function w(t){this._requestManager=new n(t),this.currentProvider=t,this.eth=new o(this),this.db=new s(this),this.shh=new a(this),this.net=new u(this),this.personal=new c(this),this.bzz=new f(this),this.settings=new h,this.version={api:l.version},this.providers={HttpProvider:v,IpcProvider:b},this._extend=m(this),this._extend({properties:x()})}w.providers={HttpProvider:v,IpcProvider:b},w.prototype.setProvider=function(t){this._requestManager.setProvider(t),this.currentProvider=t},w.prototype.reset=function(t){this._requestManager.reset(t),this.settings=new h},w.prototype.BigNumber=_,w.prototype.toHex=p.toHex,w.prototype.toAscii=p.toAscii,w.prototype.toUtf8=p.toUtf8,w.prototype.fromAscii=p.fromAscii,w.prototype.fromUtf8=p.fromUtf8,w.prototype.toDecimal=p.toDecimal,w.prototype.fromDecimal=p.fromDecimal,w.prototype.toBigNumber=p.toBigNumber,w.prototype.toWei=p.toWei,w.prototype.fromWei=p.fromWei,w.prototype.isAddress=p.isAddress,w.prototype.isChecksumAddress=p.isChecksumAddress,w.prototype.toChecksumAddress=p.toChecksumAddress,w.prototype.isIBAN=p.isIBAN,w.prototype.padLeft=p.padLeft,w.prototype.padRight=p.padRight,w.prototype.sha3=function(t,e){return"0x"+d(t,e)},w.prototype.fromICAP=function(t){return new i(t).address()};var x=function(){return[new g({name:"version.node",getter:"web3_clientVersion"}),new g({name:"version.network",getter:"net_version",inputFormatter:p.toDecimal}),new g({name:"version.ethereum",getter:"eth_protocolVersion",inputFormatter:p.toDecimal}),new g({name:"version.whisper",getter:"shh_version",inputFormatter:p.toDecimal})]};w.prototype.isConnected=function(){return this.currentProvider&&this.currentProvider.isConnected()},w.prototype.createBatch=function(){return new y(this)},e.exports=w},{"./utils/sha3":19,"./utils/utils":20,"./version.json":21,"./web3/batch":24,"./web3/extend":28,"./web3/httpprovider":32,"./web3/iban":33,"./web3/ipcprovider":34,"./web3/methods/db":37,"./web3/methods/eth":38,"./web3/methods/net":39,"./web3/methods/personal":40,"./web3/methods/shh":41,"./web3/methods/swarm":42,"./web3/property":45,"./web3/requestmanager":46,"./web3/settings":47,"bignumber.js":"bignumber.js"}],23:[function(t,e,r){var n=t("../utils/sha3"),i=t("./event"),o=t("./formatters"),s=t("../utils/utils"),a=t("./filter"),u=t("./methods/watches"),c=function(t,e,r){this._requestManager=t,this._json=e,this._address=r};c.prototype.encode=function(e){e=e||{};var r={};return["fromBlock","toBlock"].filter(function(t){return void 0!==e[t]}).forEach(function(t){r[t]=o.inputBlockNumberFormatter(e[t])}),r.address=this._address,r},c.prototype.decode=function(t){t.data=t.data||"";var e=s.isArray(t.topics)&&s.isString(t.topics[0])?t.topics[0].slice(2):"",r=this._json.filter(function(t){return e===n(s.transformToFullName(t))})[0];return r?new i(this._requestManager,r,this._address).decode(t):o.outputLogFormatter(t)},c.prototype.execute=function(t,e){s.isFunction(arguments[arguments.length-1])&&(e=arguments[arguments.length-1],1===arguments.length&&(t=null));var r=this.encode(t),n=this.decode.bind(this);return new a(r,"eth",this._requestManager,u.eth(),n,e)},c.prototype.attachToContract=function(t){var e=this.execute.bind(this);t.allEvents=e},e.exports=c},{"../utils/sha3":19,"../utils/utils":20,"./event":27,"./filter":29,"./formatters":30,"./methods/watches":43}],24:[function(t,e,r){var i=t("./jsonrpc"),o=t("./errors"),n=function(t){this.requestManager=t._requestManager,this.requests=[]};n.prototype.add=function(t){this.requests.push(t)},n.prototype.execute=function(){var n=this.requests;this.requestManager.sendBatch(n,function(t,r){r=r||[],n.map(function(t,e){return r[e]||{}}).forEach(function(t,e){if(n[e].callback){if(!i.isValidResponse(t))return n[e].callback(o.InvalidResponse(t));n[e].callback(null,n[e].format?n[e].format(t.result):t.result)}})})},e.exports=n},{"./errors":26,"./jsonrpc":35}],25:[function(t,e,r){var u=t("../utils/utils"),n=t("../solidity/coder"),i=t("./event"),o=t("./function"),s=t("./allevents"),c=function(t,e){return t.filter(function(t){return"constructor"===t.type&&t.inputs.length===e.length}).map(function(t){return t.inputs.map(function(t){return t.type})}).map(function(t){return n.encodeParams(t,e)})[0]||""},a=function(e){e.abi.filter(function(t){return"function"===t.type}).map(function(t){return new o(e._eth,t,e.address)}).forEach(function(t){t.attachToContract(e)})},f=function(e){var t=e.abi.filter(function(t){return"event"===t.type});new s(e._eth._requestManager,t,e.address).attachToContract(e),t.map(function(t){return new i(e._eth._requestManager,t,e.address)}).forEach(function(t){t.attachToContract(e)})},h=function(n,i){var e=0,o=!1,s=n._eth.filter("latest",function(t){if(!t&&!o)if(50<++e){if(s.stopWatching(function(){}),o=!0,!i)throw new Error("Contract transaction couldn't be found after 50 blocks");i(new Error("Contract transaction couldn't be found after 50 blocks"))}else n._eth.getTransactionReceipt(n.transactionHash,function(t,r){r&&r.blockHash&&!o&&n._eth.getCode(r.contractAddress,function(t,e){if(!o&&e)if(s.stopWatching(function(){}),o=!0,3<e.length)n.address=r.contractAddress,a(n),f(n),i&&i(null,n);else{if(!i)throw new Error("The contract code couldn't be stored, please check your gas amount.");i(new Error("The contract code couldn't be stored, please check your gas amount."))}})})})},l=function(t,a){this.eth=t,this.abi=a,this.new=function(){var r,n=new p(this.eth,this.abi),t={},e=Array.prototype.slice.call(arguments);u.isFunction(e[e.length-1])&&(r=e.pop());var i=e[e.length-1];if((u.isObject(i)&&!u.isArray(i)&&(t=e.pop()),0<t.value)&&!(a.filter(function(t){return"constructor"===t.type&&t.inputs.length===e.length})[0]||{}).payable)throw new Error("Cannot send value to non-payable constructor");var o=c(this.abi,e);if(t.data+=o,r)this.eth.sendTransaction(t,function(t,e){t?r(t):(n.transactionHash=e,r(null,n),h(n,r))});else{var s=this.eth.sendTransaction(t);n.transactionHash=s,h(n)}return n},this.new.getData=this.getData.bind(this)};l.prototype.at=function(t,e){var r=new p(this.eth,this.abi,t);return a(r),f(r),e&&e(null,r),r},l.prototype.getData=function(){var t={},e=Array.prototype.slice.call(arguments),r=e[e.length-1];u.isObject(r)&&!u.isArray(r)&&(t=e.pop());var n=c(this.abi,e);return t.data+=n,t.data};var p=function(t,e,r){this._eth=t,this.transactionHash=null,this.address=r,this.abi=e};e.exports=l},{"../solidity/coder":7,"../utils/utils":20,"./allevents":23,"./event":27,"./function":31}],26:[function(t,e,r){e.exports={InvalidNumberOfSolidityArgs:function(){return new Error("Invalid number of arguments to Solidity function")},InvalidNumberOfRPCParams:function(){return new Error("Invalid number of input parameters to RPC method")},InvalidConnection:function(t){return new Error("CONNECTION ERROR: Couldn't connect to node "+t+".")},InvalidProvider:function(){return new Error("Provider not set or invalid")},InvalidResponse:function(t){var e=t&&t.error&&t.error.message?t.error.message:"Invalid JSON RPC response: "+JSON.stringify(t);return new Error(e)},ConnectionTimeout:function(t){return new Error("CONNECTION TIMEOUT: timeout of "+t+" ms achived")}}},{}],27:[function(t,e,r){var o=t("../utils/utils"),s=t("../solidity/coder"),a=t("./formatters"),n=t("../utils/sha3"),u=t("./filter"),c=t("./methods/watches"),i=function(t,e,r){this._requestManager=t,this._params=e.inputs,this._name=o.transformToFullName(e),this._address=r,this._anonymous=e.anonymous};i.prototype.types=function(e){return this._params.filter(function(t){return t.indexed===e}).map(function(t){return t.type})},i.prototype.displayName=function(){return o.extractDisplayName(this._name)},i.prototype.typeName=function(){return o.extractTypeName(this._name)},i.prototype.signature=function(){return n(this._name)},i.prototype.encode=function(r,e){r=r||{},e=e||{};var n={};["fromBlock","toBlock"].filter(function(t){return void 0!==e[t]}).forEach(function(t){n[t]=a.inputBlockNumberFormatter(e[t])}),n.topics=[],n.address=this._address,this._anonymous||n.topics.push("0x"+this.signature());var t=this._params.filter(function(t){return!0===t.indexed}).map(function(e){var t=r[e.name];return null==t?null:o.isArray(t)?t.map(function(t){return"0x"+s.encodeParam(e.type,t)}):"0x"+s.encodeParam(e.type,t)});return n.topics=n.topics.concat(t),n},i.prototype.decode=function(t){t.data=t.data||"",t.topics=t.topics||[];var e=(this._anonymous?t.topics:t.topics.slice(1)).map(function(t){return t.slice(2)}).join(""),r=s.decodeParams(this.types(!0),e),n=t.data.slice(2),i=s.decodeParams(this.types(!1),n),o=a.outputLogFormatter(t);return o.event=this.displayName(),o.address=t.address,o.args=this._params.reduce(function(t,e){return t[e.name]=e.indexed?r.shift():i.shift(),t},{}),delete o.data,delete o.topics,o},i.prototype.execute=function(t,e,r){o.isFunction(arguments[arguments.length-1])&&(r=arguments[arguments.length-1],2===arguments.length&&(e=null),1===arguments.length&&(e=null,t={}));var n=this.encode(t,e),i=this.decode.bind(this);return new u(n,"eth",this._requestManager,c.eth(),i,r)},i.prototype.attachToContract=function(t){var e=this.execute.bind(this),r=this.displayName();t[r]||(t[r]=e),t[r][this.typeName()]=this.execute.bind(this,t)},e.exports=i},{"../solidity/coder":7,"../utils/sha3":19,"../utils/utils":20,"./filter":29,"./formatters":30,"./methods/watches":43}],28:[function(t,e,r){var n=t("./formatters"),i=t("./../utils/utils"),o=t("./method"),s=t("./property");e.exports=function(r){var t=function(t){var e;t.property?(r[t.property]||(r[t.property]={}),e=r[t.property]):e=r,t.methods&&t.methods.forEach(function(t){t.attachToObject(e),t.setRequestManager(r._requestManager)}),t.properties&&t.properties.forEach(function(t){t.attachToObject(e),t.setRequestManager(r._requestManager)})};return t.formatters=n,t.utils=i,t.Method=o,t.Property=s,t}},{"./../utils/utils":20,"./formatters":30,"./method":36,"./property":45}],29:[function(t,e,r){var c=t("./formatters"),f=t("../utils/utils"),h=function(t){return null==t?null:0===(t=String(t)).indexOf("0x")?t:f.fromUtf8(t)},l=function(t,r){f.isString(t.options)||t.get(function(t,e){t&&r(t),f.isArray(e)&&e.forEach(function(t){r(null,t)})})},p=function(r){r.requestManager.startPolling({method:r.implementation.poll.call,params:[r.filterId]},r.filterId,function(e,t){if(e)return r.callbacks.forEach(function(t){t(e)});f.isArray(t)&&t.forEach(function(e){e=r.formatter?r.formatter(e):e,r.callbacks.forEach(function(t){t(null,e)})})},r.stopWatching.bind(r))},n=function(t,e,r,n,i,o,s){var a=this,u={};return n.forEach(function(t){t.setRequestManager(r),t.attachToObject(u)}),this.requestManager=r,this.options=function(t,e){if(f.isString(t))return t;switch(t=t||{},e){case"eth":return t.topics=t.topics||[],t.topics=t.topics.map(function(t){return f.isArray(t)?t.map(h):h(t)}),{topics:t.topics,from:t.from,to:t.to,address:t.address,fromBlock:c.inputBlockNumberFormatter(t.fromBlock),toBlock:c.inputBlockNumberFormatter(t.toBlock)};case"shh":return t}}(t,e),this.implementation=u,this.filterId=null,this.callbacks=[],this.getLogsCallbacks=[],this.pollFilters=[],this.formatter=i,this.implementation.newFilter(this.options,function(e,t){if(e)a.callbacks.forEach(function(t){t(e)}),"function"==typeof s&&s(e);else if(a.filterId=t,a.getLogsCallbacks.forEach(function(t){a.get(t)}),a.getLogsCallbacks=[],a.callbacks.forEach(function(t){l(a,t)}),0<a.callbacks.length&&p(a),"function"==typeof o)return a.watch(o)}),this};n.prototype.watch=function(t){return this.callbacks.push(t),this.filterId&&(l(this,t),p(this)),this},n.prototype.stopWatching=function(t){if(this.requestManager.stopPolling(this.filterId),this.callbacks=[],!t)return this.implementation.uninstallFilter(this.filterId);this.implementation.uninstallFilter(this.filterId,t)},n.prototype.get=function(r){var n=this;if(!f.isFunction(r)){if(null===this.filterId)throw new Error("Filter ID Error: filter().get() can't be chained synchronous, please provide a callback for the get() method.");return this.implementation.getLogs(this.filterId).map(function(t){return n.formatter?n.formatter(t):t})}return null===this.filterId?this.getLogsCallbacks.push(r):this.implementation.getLogs(this.filterId,function(t,e){t?r(t):r(null,e.map(function(t){return n.formatter?n.formatter(t):t}))}),this},e.exports=n},{"../utils/utils":20,"./formatters":30}],30:[function(t,e,r){"use strict";var n=t("../utils/utils"),i=t("../utils/config"),o=t("./iban"),s=function(t){var e;if(void 0!==t)return"latest"===(e=t)||"pending"===e||"earliest"===e?t:n.toHex(t)},a=function(t){return null!==t.blockNumber&&(t.blockNumber=n.toDecimal(t.blockNumber)),null!==t.transactionIndex&&(t.transactionIndex=n.toDecimal(t.transactionIndex)),t.nonce=n.toDecimal(t.nonce),t.gas=n.toDecimal(t.gas),t.gasPrice=n.toBigNumber(t.gasPrice),t.value=n.toBigNumber(t.value),t},u=function(t){return t.blockNumber&&(t.blockNumber=n.toDecimal(t.blockNumber)),t.transactionIndex&&(t.transactionIndex=n.toDecimal(t.transactionIndex)),t.logIndex&&(t.logIndex=n.toDecimal(t.logIndex)),t},c=function(t){var e=new o(t);if(e.isValid()&&e.isDirect())return"0x"+e.address();if(n.isStrictAddress(t))return t;if(n.isAddress(t))return"0x"+t;throw new Error("invalid address")};e.exports={inputDefaultBlockNumberFormatter:function(t){return void 0===t?i.defaultBlock:s(t)},inputBlockNumberFormatter:s,inputCallFormatter:function(e){return e.from=e.from||i.defaultAccount,e.from&&(e.from=c(e.from)),e.to&&(e.to=c(e.to)),["gasPrice","gas","value","nonce"].filter(function(t){return void 0!==e[t]}).forEach(function(t){e[t]=n.fromDecimal(e[t])}),e},inputTransactionFormatter:function(e){return e.from=e.from||i.defaultAccount,e.from=c(e.from),e.to&&(e.to=c(e.to)),["gasPrice","gas","value","nonce"].filter(function(t){return void 0!==e[t]}).forEach(function(t){e[t]=n.fromDecimal(e[t])}),e},inputAddressFormatter:c,inputPostFormatter:function(t){return t.ttl=n.fromDecimal(t.ttl),t.workToProve=n.fromDecimal(t.workToProve),t.priority=n.fromDecimal(t.priority),n.isArray(t.topics)||(t.topics=t.topics?[t.topics]:[]),t.topics=t.topics.map(function(t){return 0===t.indexOf("0x")?t:n.fromUtf8(t)}),t},outputBigNumberFormatter:function(t){return n.toBigNumber(t)},outputTransactionFormatter:a,outputTransactionReceiptFormatter:function(t){return null!==t.blockNumber&&(t.blockNumber=n.toDecimal(t.blockNumber)),null!==t.transactionIndex&&(t.transactionIndex=n.toDecimal(t.transactionIndex)),t.cumulativeGasUsed=n.toDecimal(t.cumulativeGasUsed),t.gasUsed=n.toDecimal(t.gasUsed),n.isArray(t.logs)&&(t.logs=t.logs.map(function(t){return u(t)})),t},outputBlockFormatter:function(t){return t.gasLimit=n.toDecimal(t.gasLimit),t.gasUsed=n.toDecimal(t.gasUsed),t.size=n.toDecimal(t.size),t.timestamp=n.toDecimal(t.timestamp),null!==t.number&&(t.number=n.toDecimal(t.number)),t.difficulty=n.toBigNumber(t.difficulty),t.totalDifficulty=n.toBigNumber(t.totalDifficulty),n.isArray(t.transactions)&&t.transactions.forEach(function(t){if(!n.isString(t))return a(t)}),t},outputLogFormatter:u,outputPostFormatter:function(t){return t.expiry=n.toDecimal(t.expiry),t.sent=n.toDecimal(t.sent),t.ttl=n.toDecimal(t.ttl),t.workProved=n.toDecimal(t.workProved),t.topics||(t.topics=[]),t.topics=t.topics.map(function(t){return n.toAscii(t)}),t},outputSyncingFormatter:function(t){return t&&(t.startingBlock=n.toDecimal(t.startingBlock),t.currentBlock=n.toDecimal(t.currentBlock),t.highestBlock=n.toDecimal(t.highestBlock),t.knownStates&&(t.knownStates=n.toDecimal(t.knownStates),t.pulledStates=n.toDecimal(t.pulledStates))),t}}},{"../utils/config":18,"../utils/utils":20,"./iban":33}],31:[function(t,e,r){var n=t("../solidity/coder"),i=t("../utils/utils"),o=t("./errors"),s=t("./formatters"),a=t("../utils/sha3"),u=function(t,e,r){this._eth=t,this._inputTypes=e.inputs.map(function(t){return t.type}),this._outputTypes=e.outputs.map(function(t){return t.type}),this._constant="view"===e.stateMutability||"pure"===e.stateMutability||e.constant,this._payable="payable"===e.stateMutability||e.payable,this._name=i.transformToFullName(e),this._address=r};u.prototype.extractCallback=function(t){if(i.isFunction(t[t.length-1]))return t.pop()},u.prototype.extractDefaultBlock=function(t){if(t.length>this._inputTypes.length&&!i.isObject(t[t.length-1]))return s.inputDefaultBlockNumberFormatter(t.pop())},u.prototype.validateArgs=function(t){if(t.filter(function(t){return!(!0===i.isObject(t)&&!1===i.isArray(t)&&!1===i.isBigNumber(t))}).length!==this._inputTypes.length)throw o.InvalidNumberOfSolidityArgs()},u.prototype.toPayload=function(t){var e={};return t.length>this._inputTypes.length&&i.isObject(t[t.length-1])&&(e=t[t.length-1]),this.validateArgs(t),e.to=this._address,e.data="0x"+this.signature()+n.encodeParams(this._inputTypes,t),e},u.prototype.signature=function(){return a(this._name).slice(0,8)},u.prototype.unpackOutput=function(t){if(t){t=2<=t.length?t.slice(2):t;var e=n.decodeParams(this._outputTypes,t);return 1===e.length?e[0]:e}},u.prototype.call=function(){var t=Array.prototype.slice.call(arguments).filter(function(t){return void 0!==t}),n=this.extractCallback(t),e=this.extractDefaultBlock(t),r=this.toPayload(t);if(!n){var i=this._eth.call(r,e);return this.unpackOutput(i)}var o=this;this._eth.call(r,e,function(e,t){if(e)return n(e,null);var r=null;try{r=o.unpackOutput(t)}catch(t){e=t}n(e,r)})},u.prototype.sendTransaction=function(){var t=Array.prototype.slice.call(arguments).filter(function(t){return void 0!==t}),e=this.extractCallback(t),r=this.toPayload(t);if(0<r.value&&!this._payable)throw new Error("Cannot send value to non-payable function");if(!e)return this._eth.sendTransaction(r);this._eth.sendTransaction(r,e)},u.prototype.estimateGas=function(){var t=Array.prototype.slice.call(arguments),e=this.extractCallback(t),r=this.toPayload(t);if(!e)return this._eth.estimateGas(r);this._eth.estimateGas(r,e)},u.prototype.getData=function(){var t=Array.prototype.slice.call(arguments);return this.toPayload(t).data},u.prototype.displayName=function(){return i.extractDisplayName(this._name)},u.prototype.typeName=function(){return i.extractTypeName(this._name)},u.prototype.request=function(){var t=Array.prototype.slice.call(arguments),e=this.extractCallback(t),r=this.toPayload(t),n=this.unpackOutput.bind(this);return{method:this._constant?"eth_call":"eth_sendTransaction",callback:e,params:[r],format:n}},u.prototype.execute=function(){return!this._constant?this.sendTransaction.apply(this,Array.prototype.slice.call(arguments)):this.call.apply(this,Array.prototype.slice.call(arguments))},u.prototype.attachToContract=function(t){var e=this.execute.bind(this);e.request=this.request.bind(this),e.call=this.call.bind(this),e.sendTransaction=this.sendTransaction.bind(this),e.estimateGas=this.estimateGas.bind(this),e.getData=this.getData.bind(this);var r=this.displayName();t[r]||(t[r]=e),t[r][this.typeName()]=e},e.exports=u},{"../solidity/coder":7,"../utils/sha3":19,"../utils/utils":20,"./errors":26,"./formatters":30}],32:[function(e,r,t){(function(n){var i=e("./errors");"undefined"!=typeof window&&window.XMLHttpRequest?XMLHttpRequest=window.XMLHttpRequest:XMLHttpRequest=e("xmlhttprequest").XMLHttpRequest;var o=e("xhr2-cookies").XMLHttpRequest,t=function(t,e,r,n,i){this.host=t||"http://localhost:8545",this.timeout=e||0,this.user=r,this.password=n,this.headers=i};t.prototype.prepareRequest=function(t){var e;if(t?(e=new o).timeout=this.timeout:e=new XMLHttpRequest,e.withCredentials=!0,e.open("POST",this.host,t),this.user&&this.password){var r="Basic "+new n(this.user+":"+this.password).toString("base64");e.setRequestHeader("Authorization",r)}return e.setRequestHeader("Content-Type","application/json"),this.headers&&this.headers.forEach(function(t){e.setRequestHeader(t.name,t.value)}),e},t.prototype.send=function(t){var e=this.prepareRequest(!1);try{e.send(JSON.stringify(t))}catch(t){throw i.InvalidConnection(this.host)}var r=e.responseText;try{r=JSON.parse(r)}catch(t){throw i.InvalidResponse(e.responseText)}return r},t.prototype.sendAsync=function(t,r){var n=this.prepareRequest(!0);n.onreadystatechange=function(){if(4===n.readyState&&1!==n.timeout){var t=n.responseText,e=null;try{t=JSON.parse(t)}catch(t){e=i.InvalidResponse(n.responseText)}r(e,t)}},n.ontimeout=function(){r(i.ConnectionTimeout(this.timeout))};try{n.send(JSON.stringify(t))}catch(t){r(i.InvalidConnection(this.host))}},t.prototype.isConnected=function(){try{return this.send({id:9999999999,jsonrpc:"2.0",method:"net_listening",params:[]}),!0}catch(t){return!1}},r.exports=t}).call(this,e("buffer").Buffer)},{"./errors":26,buffer:53,"xhr2-cookies":126,xmlhttprequest:17}],33:[function(t,e,r){var n=t("bignumber.js"),i=function(t,e){for(var r=t;r.length<2*e;)r="0"+r;return r},o=function(t){var r="A".charCodeAt(0),n="Z".charCodeAt(0);return(t=(t=t.toUpperCase()).substr(4)+t.substr(0,4)).split("").map(function(t){var e=t.charCodeAt(0);return r<=e&&e<=n?e-r+10:t}).join("")},s=function(t){for(var e,r=t;2<r.length;)e=r.slice(0,9),r=parseInt(e,10)%97+r.slice(e.length);return parseInt(r,10)%97},a=function(t){this._iban=t};a.fromAddress=function(t){var e=new n(t,16).toString(36),r=i(e,15);return a.fromBban(r.toUpperCase())},a.fromBban=function(t){var e=("0"+(98-s(o("XE00"+t)))).slice(-2);return new a("XE"+e+t)},a.createIndirect=function(t){return a.fromBban("ETH"+t.institution+t.identifier)},a.isValid=function(t){return new a(t).isValid()},a.prototype.isValid=function(){return/^XE[0-9]{2}(ETH[0-9A-Z]{13}|[0-9A-Z]{30,31})$/.test(this._iban)&&1===s(o(this._iban))},a.prototype.isDirect=function(){return 34===this._iban.length||35===this._iban.length},a.prototype.isIndirect=function(){return 20===this._iban.length},a.prototype.checksum=function(){return this._iban.substr(2,2)},a.prototype.institution=function(){return this.isIndirect()?this._iban.substr(7,4):""},a.prototype.client=function(){return this.isIndirect()?this._iban.substr(11):""},a.prototype.address=function(){if(this.isDirect()){var t=this._iban.substr(4),e=new n(t,36);return i(e.toString(16),20)}return""},a.prototype.toString=function(){return this._iban},e.exports=a},{"bignumber.js":"bignumber.js"}],34:[function(t,e,r){"use strict";var n=t("../utils/utils"),i=t("./errors"),o=function(t,e){var r=this;this.responseCallbacks={},this.path=t,this.connection=e.connect({path:this.path}),this.connection.on("error",function(t){console.error("IPC Connection Error",t),r._timeout()}),this.connection.on("end",function(){r._timeout()}),this.connection.on("data",function(t){r._parseResponse(t.toString()).forEach(function(t){var e=null;n.isArray(t)?t.forEach(function(t){r.responseCallbacks[t.id]&&(e=t.id)}):e=t.id,r.responseCallbacks[e]&&(r.responseCallbacks[e](null,t),delete r.responseCallbacks[e])})})};o.prototype._parseResponse=function(t){var r=this,n=[];return t.replace(/\}[\n\r]?\{/g,"}|--|{").replace(/\}\][\n\r]?\[\{/g,"}]|--|[{").replace(/\}[\n\r]?\[\{/g,"}|--|[{").replace(/\}\][\n\r]?\{/g,"}]|--|{").split("|--|").forEach(function(e){r.lastChunk&&(e=r.lastChunk+e);var t=null;try{t=JSON.parse(e)}catch(t){return r.lastChunk=e,clearTimeout(r.lastChunkTimeout),void(r.lastChunkTimeout=setTimeout(function(){throw r._timeout(),i.InvalidResponse(e)},15e3))}clearTimeout(r.lastChunkTimeout),r.lastChunk=null,t&&n.push(t)}),n},o.prototype._addResponseCallback=function(t,e){var r=t.id||t[0].id,n=t.method||t[0].method;this.responseCallbacks[r]=e,this.responseCallbacks[r].method=n},o.prototype._timeout=function(){for(var t in this.responseCallbacks)this.responseCallbacks.hasOwnProperty(t)&&(this.responseCallbacks[t](i.InvalidConnection("on IPC")),delete this.responseCallbacks[t])},o.prototype.isConnected=function(){return this.connection.writable||this.connection.connect({path:this.path}),!!this.connection.writable},o.prototype.send=function(t){if(this.connection.writeSync){var e;this.connection.writable||this.connection.connect({path:this.path});var r=this.connection.writeSync(JSON.stringify(t));try{e=JSON.parse(r)}catch(t){throw i.InvalidResponse(r)}return e}throw new Error('You tried to send "'+t.method+'" synchronously. Synchronous requests are not supported by the IPC provider.')},o.prototype.sendAsync=function(t,e){this.connection.writable||this.connection.connect({path:this.path}),this.connection.write(JSON.stringify(t)),this._addResponseCallback(t,e)},e.exports=o},{"../utils/utils":20,"./errors":26}],35:[function(t,e,r){var n={messageId:0,toPayload:function(t,e){return t||console.error("jsonrpc method should be specified!"),n.messageId++,{jsonrpc:"2.0",id:n.messageId,method:t,params:e||[]}},isValidResponse:function(t){return Array.isArray(t)?t.every(e):e(t);function e(t){return!!t&&!t.error&&"2.0"===t.jsonrpc&&"number"==typeof t.id&&void 0!==t.result}},toBatchPayload:function(t){return t.map(function(t){return n.toPayload(t.method,t.params)})}};e.exports=n},{}],36:[function(t,e,r){var n=t("../utils/utils"),i=t("./errors"),o=function(t){this.name=t.name,this.call=t.call,this.params=t.params||0,this.inputFormatter=t.inputFormatter,this.outputFormatter=t.outputFormatter,this.requestManager=null};o.prototype.setRequestManager=function(t){this.requestManager=t},o.prototype.getCall=function(t){return n.isFunction(this.call)?this.call(t):this.call},o.prototype.extractCallback=function(t){if(n.isFunction(t[t.length-1]))return t.pop()},o.prototype.validateArgs=function(t){if(t.length!==this.params)throw i.InvalidNumberOfRPCParams()},o.prototype.formatInput=function(r){return this.inputFormatter?this.inputFormatter.map(function(t,e){return t?t(r[e]):r[e]}):r},o.prototype.formatOutput=function(t){return this.outputFormatter&&t?this.outputFormatter(t):t},o.prototype.toPayload=function(t){var e=this.getCall(t),r=this.extractCallback(t),n=this.formatInput(t);return this.validateArgs(n),{method:e,params:n,callback:r}},o.prototype.attachToObject=function(t){var e=this.buildCall();e.call=this.call;var r=this.name.split(".");1<r.length?(t[r[0]]=t[r[0]]||{},t[r[0]][r[1]]=e):t[r[0]]=e},o.prototype.buildCall=function(){var n=this,t=function(){var r=n.toPayload(Array.prototype.slice.call(arguments));return r.callback?n.requestManager.sendAsync(r,function(t,e){r.callback(t,n.formatOutput(e))}):n.formatOutput(n.requestManager.send(r))};return t.request=this.request.bind(this),t},o.prototype.request=function(){var t=this.toPayload(Array.prototype.slice.call(arguments));return t.format=this.formatOutput.bind(this),t},e.exports=o},{"../utils/utils":20,"./errors":26}],37:[function(t,e,r){var n=t("../method"),i=function(){return[new n({name:"putString",call:"db_putString",params:3}),new n({name:"getString",call:"db_getString",params:2}),new n({name:"putHex",call:"db_putHex",params:3}),new n({name:"getHex",call:"db_getHex",params:2})]};e.exports=function(e){this._requestManager=e._requestManager;var r=this;i().forEach(function(t){t.attachToObject(r),t.setRequestManager(e._requestManager)})}},{"../method":36}],38:[function(t,e,r){"use strict";var y=t("../formatters"),g=t("../../utils/utils"),v=t("../method"),n=t("../property"),i=t("../../utils/config"),o=t("../contract"),s=t("./watches"),a=t("../filter"),u=t("../syncing"),c=t("../namereg"),f=t("../iban"),h=t("../transfer"),b=function(t){return g.isString(t[0])&&0===t[0].indexOf("0x")?"eth_getBlockByHash":"eth_getBlockByNumber"},_=function(t){return g.isString(t[0])&&0===t[0].indexOf("0x")?"eth_getTransactionByBlockHashAndIndex":"eth_getTransactionByBlockNumberAndIndex"},w=function(t){return g.isString(t[0])&&0===t[0].indexOf("0x")?"eth_getUncleByBlockHashAndIndex":"eth_getUncleByBlockNumberAndIndex"},x=function(t){return g.isString(t[0])&&0===t[0].indexOf("0x")?"eth_getBlockTransactionCountByHash":"eth_getBlockTransactionCountByNumber"},k=function(t){return g.isString(t[0])&&0===t[0].indexOf("0x")?"eth_getUncleCountByBlockHash":"eth_getUncleCountByBlockNumber"};function l(t){this._requestManager=t._requestManager;var e=this;p().forEach(function(t){t.attachToObject(e),t.setRequestManager(e._requestManager)}),d().forEach(function(t){t.attachToObject(e),t.setRequestManager(e._requestManager)}),this.iban=f,this.sendIBANTransaction=h.bind(null,this)}Object.defineProperty(l.prototype,"defaultBlock",{get:function(){return i.defaultBlock},set:function(t){return i.defaultBlock=t}}),Object.defineProperty(l.prototype,"defaultAccount",{get:function(){return i.defaultAccount},set:function(t){return i.defaultAccount=t}});var p=function(){var t=new v({name:"getBalance",call:"eth_getBalance",params:2,inputFormatter:[y.inputAddressFormatter,y.inputDefaultBlockNumberFormatter],outputFormatter:y.outputBigNumberFormatter}),e=new v({name:"getStorageAt",call:"eth_getStorageAt",params:3,inputFormatter:[null,g.toHex,y.inputDefaultBlockNumberFormatter]}),r=new v({name:"getCode",call:"eth_getCode",params:2,inputFormatter:[y.inputAddressFormatter,y.inputDefaultBlockNumberFormatter]}),n=new v({name:"getBlock",call:b,params:2,inputFormatter:[y.inputBlockNumberFormatter,function(t){return!!t}],outputFormatter:y.outputBlockFormatter}),i=new v({name:"getUncle",call:w,params:2,inputFormatter:[y.inputBlockNumberFormatter,g.toHex],outputFormatter:y.outputBlockFormatter}),o=new v({name:"getCompilers",call:"eth_getCompilers",params:0}),s=new v({name:"getBlockTransactionCount",call:x,params:1,inputFormatter:[y.inputBlockNumberFormatter],outputFormatter:g.toDecimal}),a=new v({name:"getBlockUncleCount",call:k,params:1,inputFormatter:[y.inputBlockNumberFormatter],outputFormatter:g.toDecimal}),u=new v({name:"getTransaction",call:"eth_getTransactionByHash",params:1,outputFormatter:y.outputTransactionFormatter}),c=new v({name:"getTransactionFromBlock",call:_,params:2,inputFormatter:[y.inputBlockNumberFormatter,g.toHex],outputFormatter:y.outputTransactionFormatter}),f=new v({name:"getTransactionReceipt",call:"eth_getTransactionReceipt",params:1,outputFormatter:y.outputTransactionReceiptFormatter}),h=new v({name:"getTransactionCount",call:"eth_getTransactionCount",params:2,inputFormatter:[null,y.inputDefaultBlockNumberFormatter],outputFormatter:g.toDecimal}),l=new v({name:"sendRawTransaction",call:"eth_sendRawTransaction",params:1,inputFormatter:[null]}),p=new v({name:"sendTransaction",call:"eth_sendTransaction",params:1,inputFormatter:[y.inputTransactionFormatter]}),d=new v({name:"signTransaction",call:"eth_signTransaction",params:1,inputFormatter:[y.inputTransactionFormatter]}),m=new v({name:"sign",call:"eth_sign",params:2,inputFormatter:[y.inputAddressFormatter,null]});return[t,e,r,n,i,o,s,a,u,c,f,h,new v({name:"call",call:"eth_call",params:2,inputFormatter:[y.inputCallFormatter,y.inputDefaultBlockNumberFormatter]}),new v({name:"estimateGas",call:"eth_estimateGas",params:1,inputFormatter:[y.inputCallFormatter],outputFormatter:g.toDecimal}),l,d,p,m,new v({name:"compile.solidity",call:"eth_compileSolidity",params:1}),new v({name:"compile.lll",call:"eth_compileLLL",params:1}),new v({name:"compile.serpent",call:"eth_compileSerpent",params:1}),new v({name:"submitWork",call:"eth_submitWork",params:3}),new v({name:"getWork",call:"eth_getWork",params:0})]},d=function(){return[new n({name:"coinbase",getter:"eth_coinbase"}),new n({name:"mining",getter:"eth_mining"}),new n({name:"hashrate",getter:"eth_hashrate",outputFormatter:g.toDecimal}),new n({name:"syncing",getter:"eth_syncing",outputFormatter:y.outputSyncingFormatter}),new n({name:"gasPrice",getter:"eth_gasPrice",outputFormatter:y.outputBigNumberFormatter}),new n({name:"accounts",getter:"eth_accounts"}),new n({name:"blockNumber",getter:"eth_blockNumber",outputFormatter:g.toDecimal}),new n({name:"protocolVersion",getter:"eth_protocolVersion"})]};l.prototype.contract=function(t){return new o(this,t)},l.prototype.filter=function(t,e,r){return new a(t,"eth",this._requestManager,s.eth(),y.outputLogFormatter,e,r)},l.prototype.namereg=function(){return this.contract(c.global.abi).at(c.global.address)},l.prototype.icapNamereg=function(){return this.contract(c.icap.abi).at(c.icap.address)},l.prototype.isSyncing=function(t){return new u(this._requestManager,t)},e.exports=l},{"../../utils/config":18,"../../utils/utils":20,"../contract":25,"../filter":29,"../formatters":30,"../iban":33,"../method":36,"../namereg":44,"../property":45,"../syncing":48,"../transfer":49,"./watches":43}],39:[function(t,e,r){var n=t("../../utils/utils"),i=t("../property"),o=function(){return[new i({name:"listening",getter:"net_listening"}),new i({name:"peerCount",getter:"net_peerCount",outputFormatter:n.toDecimal})]};e.exports=function(e){this._requestManager=e._requestManager;var r=this;o().forEach(function(t){t.attachToObject(r),t.setRequestManager(e._requestManager)})}},{"../../utils/utils":20,"../property":45}],40:[function(t,e,r){"use strict";var c=t("../method"),f=t("../property"),h=t("../formatters");e.exports=function(t){this._requestManager=t._requestManager;var e,r,n,i,o,s,a,u=this;(e=new c({name:"newAccount",call:"personal_newAccount",params:1,inputFormatter:[null]}),r=new c({name:"importRawKey",call:"personal_importRawKey",params:2}),n=new c({name:"sign",call:"personal_sign",params:3,inputFormatter:[null,h.inputAddressFormatter,null]}),i=new c({name:"ecRecover",call:"personal_ecRecover",params:2}),o=new c({name:"unlockAccount",call:"personal_unlockAccount",params:3,inputFormatter:[h.inputAddressFormatter,null,null]}),s=new c({name:"sendTransaction",call:"personal_sendTransaction",params:2,inputFormatter:[h.inputTransactionFormatter,null]}),a=new c({name:"lockAccount",call:"personal_lockAccount",params:1,inputFormatter:[h.inputAddressFormatter]}),[e,r,o,i,n,s,a]).forEach(function(t){t.attachToObject(u),t.setRequestManager(u._requestManager)}),[new f({name:"listAccounts",getter:"personal_listAccounts"})].forEach(function(t){t.attachToObject(u),t.setRequestManager(u._requestManager)})}},{"../formatters":30,"../method":36,"../property":45}],41:[function(t,e,r){var n=t("../method"),i=t("../filter"),o=t("./watches"),s=function(t){this._requestManager=t._requestManager;var e=this;a().forEach(function(t){t.attachToObject(e),t.setRequestManager(e._requestManager)})};s.prototype.newMessageFilter=function(t,e,r){return new i(t,"shh",this._requestManager,o.shh(),null,e,r)};var a=function(){return[new n({name:"version",call:"shh_version",params:0}),new n({name:"info",call:"shh_info",params:0}),new n({name:"setMaxMessageSize",call:"shh_setMaxMessageSize",params:1}),new n({name:"setMinPoW",call:"shh_setMinPoW",params:1}),new n({name:"markTrustedPeer",call:"shh_markTrustedPeer",params:1}),new n({name:"newKeyPair",call:"shh_newKeyPair",params:0}),new n({name:"addPrivateKey",call:"shh_addPrivateKey",params:1}),new n({name:"deleteKeyPair",call:"shh_deleteKeyPair",params:1}),new n({name:"hasKeyPair",call:"shh_hasKeyPair",params:1}),new n({name:"getPublicKey",call:"shh_getPublicKey",params:1}),new n({name:"getPrivateKey",call:"shh_getPrivateKey",params:1}),new n({name:"newSymKey",call:"shh_newSymKey",params:0}),new n({name:"addSymKey",call:"shh_addSymKey",params:1}),new n({name:"generateSymKeyFromPassword",call:"shh_generateSymKeyFromPassword",params:1}),new n({name:"hasSymKey",call:"shh_hasSymKey",params:1}),new n({name:"getSymKey",call:"shh_getSymKey",params:1}),new n({name:"deleteSymKey",call:"shh_deleteSymKey",params:1}),new n({name:"post",call:"shh_post",params:1,inputFormatter:[null]})]};e.exports=s},{"../filter":29,"../method":36,"./watches":43}],42:[function(t,e,r){"use strict";var l=t("../method"),p=t("../property");e.exports=function(t){this._requestManager=t._requestManager;var e,r,n,i,o,s,a,u,c,f,h=this;(e=new l({name:"blockNetworkRead",call:"bzz_blockNetworkRead",params:1,inputFormatter:[null]}),r=new l({name:"syncEnabled",call:"bzz_syncEnabled",params:1,inputFormatter:[null]}),n=new l({name:"swapEnabled",call:"bzz_swapEnabled",params:1,inputFormatter:[null]}),i=new l({name:"download",call:"bzz_download",params:2,inputFormatter:[null,null]}),o=new l({name:"upload",call:"bzz_upload",params:2,inputFormatter:[null,null]}),s=new l({name:"retrieve",call:"bzz_retrieve",params:1,inputFormatter:[null]}),a=new l({name:"store",call:"bzz_store",params:2,inputFormatter:[null,null]}),u=new l({name:"get",call:"bzz_get",params:1,inputFormatter:[null]}),c=new l({name:"put",call:"bzz_put",params:2,inputFormatter:[null,null]}),f=new l({name:"modify",call:"bzz_modify",params:4,inputFormatter:[null,null,null,null]}),[e,r,n,i,o,s,a,u,c,f]).forEach(function(t){t.attachToObject(h),t.setRequestManager(h._requestManager)}),[new p({name:"hive",getter:"bzz_hive"}),new p({name:"info",getter:"bzz_info"})].forEach(function(t){t.attachToObject(h),t.setRequestManager(h._requestManager)})}},{"../method":36,"../property":45}],43:[function(t,e,r){var n=t("../method");e.exports={eth:function(){return[new n({name:"newFilter",call:function(t){switch(t[0]){case"latest":return t.shift(),this.params=0,"eth_newBlockFilter";case"pending":return t.shift(),this.params=0,"eth_newPendingTransactionFilter";default:return"eth_newFilter"}},params:1}),new n({name:"uninstallFilter",call:"eth_uninstallFilter",params:1}),new n({name:"getLogs",call:"eth_getFilterLogs",params:1}),new n({name:"poll",call:"eth_getFilterChanges",params:1})]},shh:function(){return[new n({name:"newFilter",call:"shh_newMessageFilter",params:1}),new n({name:"uninstallFilter",call:"shh_deleteMessageFilter",params:1}),new n({name:"getLogs",call:"shh_getFilterMessages",params:1}),new n({name:"poll",call:"shh_getFilterMessages",params:1})]}}},{"../method":36}],44:[function(t,e,r){var n=t("../contracts/GlobalRegistrar.json"),i=t("../contracts/ICAPRegistrar.json");e.exports={global:{abi:n,address:"0xc6d9d2cd449a754c494264e1809c50e34d64562b"},icap:{abi:i,address:"0xa1a111bc074c9cfa781f0c38e63bd51c91b8af00"}}},{"../contracts/GlobalRegistrar.json":1,"../contracts/ICAPRegistrar.json":2}],45:[function(t,e,r){var n=t("../utils/utils"),i=function(t){this.name=t.name,this.getter=t.getter,this.setter=t.setter,this.outputFormatter=t.outputFormatter,this.inputFormatter=t.inputFormatter,this.requestManager=null};i.prototype.setRequestManager=function(t){this.requestManager=t},i.prototype.formatInput=function(t){return this.inputFormatter?this.inputFormatter(t):t},i.prototype.formatOutput=function(t){return this.outputFormatter&&null!=t?this.outputFormatter(t):t},i.prototype.extractCallback=function(t){if(n.isFunction(t[t.length-1]))return t.pop()},i.prototype.attachToObject=function(t){var e={get:this.buildGet(),enumerable:!0},r=this.name.split("."),n=r[0];1<r.length&&(t[r[0]]=t[r[0]]||{},t=t[r[0]],n=r[1]),Object.defineProperty(t,n,e),t[o(n)]=this.buildAsyncGet()};var o=function(t){return"get"+t.charAt(0).toUpperCase()+t.slice(1)};i.prototype.buildGet=function(){var t=this;return function(){return t.formatOutput(t.requestManager.send({method:t.getter}))}},i.prototype.buildAsyncGet=function(){var n=this,t=function(r){n.requestManager.sendAsync({method:n.getter},function(t,e){r(t,n.formatOutput(e))})};return t.request=this.request.bind(this),t},i.prototype.request=function(){var t={method:this.getter,params:[],callback:this.extractCallback(Array.prototype.slice.call(arguments))};return t.format=this.formatOutput.bind(this),t},e.exports=i},{"../utils/utils":20}],46:[function(t,e,r){var s=t("./jsonrpc"),a=t("../utils/utils"),u=t("../utils/config"),c=t("./errors"),n=function(t){this.provider=t,this.polls={},this.timeout=null};n.prototype.send=function(t){if(!this.provider)return console.error(c.InvalidProvider()),null;var e=s.toPayload(t.method,t.params),r=this.provider.send(e);if(!s.isValidResponse(r))throw c.InvalidResponse(r);return r.result},n.prototype.sendAsync=function(t,r){if(!this.provider)return r(c.InvalidProvider());var e=s.toPayload(t.method,t.params);this.provider.sendAsync(e,function(t,e){return t?r(t):s.isValidResponse(e)?void r(null,e.result):r(c.InvalidResponse(e))})},n.prototype.sendBatch=function(t,r){if(!this.provider)return r(c.InvalidProvider());var e=s.toBatchPayload(t);this.provider.sendAsync(e,function(t,e){return t?r(t):a.isArray(e)?void r(t,e):r(c.InvalidResponse(e))})},n.prototype.setProvider=function(t){this.provider=t},n.prototype.startPolling=function(t,e,r,n){this.polls[e]={data:t,id:e,callback:r,uninstall:n},this.timeout||this.poll()},n.prototype.stopPolling=function(t){delete this.polls[t],0===Object.keys(this.polls).length&&this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},n.prototype.reset=function(t){for(var e in this.polls)t&&-1!==e.indexOf("syncPoll_")||(this.polls[e].uninstall(),delete this.polls[e]);0===Object.keys(this.polls).length&&this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},n.prototype.poll=function(){if(this.timeout=setTimeout(this.poll.bind(this),u.ETH_POLLING_TIMEOUT),0!==Object.keys(this.polls).length)if(this.provider){var t=[],r=[];for(var e in this.polls)t.push(this.polls[e].data),r.push(e);if(0!==t.length){var n=s.toBatchPayload(t),i={};n.forEach(function(t,e){i[t.id]=r[e]});var o=this;this.provider.sendAsync(n,function(t,e){if(!t){if(!a.isArray(e))throw c.InvalidResponse(e);e.map(function(t){var e=i[t.id];return!!o.polls[e]&&(t.callback=o.polls[e].callback,t)}).filter(function(t){return!!t}).filter(function(t){var e=s.isValidResponse(t);return e||t.callback(c.InvalidResponse(t)),e}).forEach(function(t){t.callback(null,t.result)})}})}}else console.error(c.InvalidProvider())},e.exports=n},{"../utils/config":18,"../utils/utils":20,"./errors":26,"./jsonrpc":35}],47:[function(t,e,r){e.exports=function(){this.defaultBlock="latest",this.defaultAccount=void 0}},{}],48:[function(t,e,r){var i=t("./formatters"),o=t("../utils/utils"),s=1,n=function(t,e){var n;return this.requestManager=t,this.pollId="syncPoll_"+s++,this.callbacks=[],this.addCallback(e),this.lastSyncState=!1,(n=this).requestManager.startPolling({method:"eth_syncing",params:[]},n.pollId,function(e,r){if(e)return n.callbacks.forEach(function(t){t(e)});o.isObject(r)&&r.startingBlock&&(r=i.outputSyncingFormatter(r)),n.callbacks.forEach(function(t){n.lastSyncState!==r&&(!n.lastSyncState&&o.isObject(r)&&t(null,!0),setTimeout(function(){t(null,r)},0),n.lastSyncState=r)})},n.stopWatching.bind(n)),this};n.prototype.addCallback=function(t){return t&&this.callbacks.push(t),this},n.prototype.stopWatching=function(){this.requestManager.stopPolling(this.pollId),this.callbacks=[]},e.exports=n},{"../utils/utils":20,"./formatters":30}],49:[function(t,e,r){var a=t("./iban"),u=t("../contracts/SmartExchange.json"),c=function(t,e,r,n,i){return t.sendTransaction({address:r,from:e,value:n},i)},f=function(t,e,r,n,i,o){var s=u;return t.contract(s).at(r).deposit(i,{from:e,value:n},o)};e.exports=function(r,n,t,i,o){var s=new a(t);if(!s.isValid())throw new Error("invalid iban address");if(s.isDirect())return c(r,n,s.address(),i,o);if(!o){var e=r.icapNamereg().addr(s.institution());return f(r,n,e,i,s.client())}r.icapNamereg().addr(s.institution(),function(t,e){return f(r,n,e,i,s.client(),o)})}},{"../contracts/SmartExchange.json":3,"./iban":33}],50:[function(t,e,r){"use strict";r.byteLength=function(t){var e=p(t),r=e[0],n=e[1];return 3*(r+n)/4-n},r.toByteArray=function(t){for(var e,r=p(t),n=r[0],i=r[1],o=new l((c=n,f=i,3*(c+f)/4-f)),s=0,a=0<i?n-4:n,u=0;u<a;u+=4)e=h[t.charCodeAt(u)]<<18|h[t.charCodeAt(u+1)]<<12|h[t.charCodeAt(u+2)]<<6|h[t.charCodeAt(u+3)],o[s++]=e>>16&255,o[s++]=e>>8&255,o[s++]=255&e;var c,f;2===i&&(e=h[t.charCodeAt(u)]<<2|h[t.charCodeAt(u+1)]>>4,o[s++]=255&e);1===i&&(e=h[t.charCodeAt(u)]<<10|h[t.charCodeAt(u+1)]<<4|h[t.charCodeAt(u+2)]>>2,o[s++]=e>>8&255,o[s++]=255&e);return o},r.fromByteArray=function(t){for(var e,r=t.length,n=r%3,i=[],o=0,s=r-n;o<s;o+=16383)i.push(u(t,o,s<o+16383?s:o+16383));1===n?(e=t[r-1],i.push(a[e>>2]+a[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(a[e>>10]+a[e>>4&63]+a[e<<2&63]+"="));return i.join("")};for(var a=[],h=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,o=n.length;i<o;++i)a[i]=n[i],h[n.charCodeAt(i)]=i;function p(t){var e=t.length;if(0<e%4)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,r){for(var n,i,o=[],s=e;s<r;s+=3)n=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),o.push(a[(i=n)>>18&63]+a[i>>12&63]+a[i>>6&63]+a[63&i]);return o.join("")}h["-".charCodeAt(0)]=62,h["_".charCodeAt(0)]=63},{}],51:[function(t,e,r){},{}],52:[function(t,e,r){arguments[4][51][0].apply(r,arguments)},{dup:51}],53:[function(t,e,r){"use strict";var n=t("base64-js"),o=t("ieee754");r.Buffer=h,r.SlowBuffer=function(t){+t!=t&&(t=0);return h.alloc(+t)},r.INSPECT_MAX_BYTES=50;var i=2147483647;function s(t){if(i<t)throw new RangeError("Invalid typed array length");var e=new Uint8Array(t);return e.__proto__=h.prototype,e}function h(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return c(t)}return a(t,e,r)}function a(t,e,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return j(t)||t&&j(t.buffer)?function(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;n=void 0===e&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,e):new Uint8Array(t,e,r);return n.__proto__=h.prototype,n}(t,e,r):"string"==typeof t?function(t,e){"string"==typeof e&&""!==e||(e="utf8");if(!h.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|p(t,e),n=s(r),i=n.write(t,e);i!==r&&(n=n.slice(0,i));return n}(t,e):function(t){if(h.isBuffer(t)){var e=0|l(t.length),r=s(e);return 0===r.length||t.copy(r,0,0,e),r}if(t){if(ArrayBuffer.isView(t)||"length"in t)return"number"!=typeof t.length||F(t.length)?s(0):f(t);if("Buffer"===t.type&&Array.isArray(t.data))return f(t.data)}throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object.")}(t)}function u(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('"size" argument must not be negative')}function c(t){return u(t),s(t<0?0:0|l(t))}function f(t){for(var e=t.length<0?0:0|l(t.length),r=s(e),n=0;n<e;n+=1)r[n]=255&t[n];return r}function l(t){if(i<=t)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|t}function p(t,e){if(h.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||j(t))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return N(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return I(t).length;default:if(n)return N(t).length;e=(""+e).toLowerCase(),n=!0}}function d(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function m(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):2147483647<r?r=2147483647:r<-2147483648&&(r=-2147483648),F(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=h.from(e,n)),h.isBuffer(e))return 0===e.length?-1:y(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):y(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function y(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a/=s=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var f=-1;for(o=r;o<a;o++)if(c(t,o)===c(e,-1===f?0:o-f)){if(-1===f&&(f=o),o-f+1===u)return f*s}else-1!==f&&(o-=o-f),f=-1}else for(a<r+u&&(r=a-u),o=r;0<=o;o--){for(var h=!0,l=0;l<u;l++)if(c(t,o+l)!==c(e,l)){h=!1;break}if(h)return o}return-1}function g(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?i<(n=Number(n))&&(n=i):n=i;var o=e.length;o/2<n&&(n=o/2);for(var s=0;s<n;++s){var a=parseInt(e.substr(2*s,2),16);if(F(a))return s;t[r+s]=a}return s}function v(t,e,r,n){return P(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function b(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function _(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var o,s,a,u,c=t[i],f=null,h=239<c?4:223<c?3:191<c?2:1;if(i+h<=r)switch(h){case 1:c<128&&(f=c);break;case 2:128==(192&(o=t[i+1]))&&127<(u=(31&c)<<6|63&o)&&(f=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&2047<(u=(15&c)<<12|(63&o)<<6|63&s)&&(u<55296||57343<u)&&(f=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&65535<(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)&&u<1114112&&(f=u)}null===f?(f=65533,h=1):65535<f&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),i+=h}return function(t){var e=t.length;if(e<=w)return String.fromCharCode.apply(String,t);var r="",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=w));return r}(n)}r.kMaxLength=i,(h.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(t){return!1}}())||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(h.prototype,"parent",{get:function(){if(this instanceof h)return this.buffer}}),Object.defineProperty(h.prototype,"offset",{get:function(){if(this instanceof h)return this.byteOffset}}),"undefined"!=typeof Symbol&&Symbol.species&&h[Symbol.species]===h&&Object.defineProperty(h,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),h.poolSize=8192,h.from=function(t,e,r){return a(t,e,r)},h.prototype.__proto__=Uint8Array.prototype,h.__proto__=Uint8Array,h.alloc=function(t,e,r){return i=e,o=r,u(n=t),n<=0?s(n):void 0!==i?"string"==typeof o?s(n).fill(i,o):s(n).fill(i):s(n);var n,i,o},h.allocUnsafe=function(t){return c(t)},h.allocUnsafeSlow=function(t){return c(t)},h.isBuffer=function(t){return null!=t&&!0===t._isBuffer},h.compare=function(t,e){if(!h.isBuffer(t)||!h.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i<o;++i)if(t[i]!==e[i]){r=t[i],n=e[i];break}return r<n?-1:n<r?1:0},h.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},h.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return h.alloc(0);var r;if(void 0===e)for(r=e=0;r<t.length;++r)e+=t[r].length;var n=h.allocUnsafe(e),i=0;for(r=0;r<t.length;++r){var o=t[r];if(ArrayBuffer.isView(o)&&(o=h.from(o)),!h.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,i),i+=o.length}return n},h.byteLength=p,h.prototype._isBuffer=!0,h.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)d(this,e,e+1);return this},h.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)d(this,e,e+3),d(this,e+1,e+2);return this},h.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)d(this,e,e+7),d(this,e+1,e+6),d(this,e+2,e+5),d(this,e+3,e+4);return this},h.prototype.toLocaleString=h.prototype.toString=function(){var t=this.length;return 0===t?"":0===arguments.length?_(this,0,t):function(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,e,r);case"utf8":case"utf-8":return _(this,e,r);case"ascii":return x(this,e,r);case"latin1":case"binary":return k(this,e,r);case"base64":return b(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}.apply(this,arguments)},h.prototype.equals=function(t){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===h.compare(this,t)},h.prototype.inspect=function(){var t="",e=r.INSPECT_MAX_BYTES;return 0<this.length&&(t=this.toString("hex",0,e).match(/.{2}/g).join(" "),this.length>e&&(t+=" ... ")),"<Buffer "+t+">"},h.prototype.compare=function(t,e,r,n,i){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(i<=n&&r<=e)return 0;if(i<=n)return-1;if(r<=e)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),u=this.slice(n,i),c=t.slice(e,r),f=0;f<a;++f)if(u[f]!==c[f]){o=u[f],s=c[f];break}return o<s?-1:s<o?1:0},h.prototype.includes=function(t,e,r){return-1!==this.indexOf(t,e,r)},h.prototype.indexOf=function(t,e,r){return m(this,t,e,r,!0)},h.prototype.lastIndexOf=function(t,e,r){return m(this,t,e,r,!1)},h.prototype.write=function(t,e,r,n){if(void 0===e)n="utf8",r=this.length,e=0;else if(void 0===r&&"string"==typeof e)n=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||i<r)&&(r=i),0<t.length&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o,s,a,u,c,f,h,l,p,d=!1;;)switch(n){case"hex":return g(this,t,e,r);case"utf8":case"utf-8":return l=e,p=r,P(N(t,(h=this).length-l),h,l,p);case"ascii":return v(this,t,e,r);case"latin1":case"binary":return v(this,t,e,r);case"base64":return u=this,c=e,f=r,P(I(t),u,c,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s=e,a=r,P(function(t,e){for(var r,n,i,o=[],s=0;s<t.length&&!((e-=2)<0);++s)r=t.charCodeAt(s),n=r>>8,i=r%256,o.push(i),o.push(n);return o}(t,(o=this).length-s),o,s,a);default:if(d)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),d=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function x(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(127&t[i]);return n}function k(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function S(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||n<r)&&(r=n);for(var i="",o=e;o<r;++o)i+=M(t[o]);return i}function E(t,e,r){for(var n=t.slice(e,r),i="",o=0;o<n.length;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function A(t,e,r){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(r<t+e)throw new RangeError("Trying to access beyond buffer length")}function C(t,e,r,n,i,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(i<e||e<o)throw new RangeError('"value" argument is out of bounds');if(r+n>t.length)throw new RangeError("Index out of range")}function B(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function T(t,e,r,n,i){return e=+e,r>>>=0,i||B(t,0,r,4),o.write(t,e,r,n,23,4),r+4}function O(t,e,r,n,i){return e=+e,r>>>=0,i||B(t,0,r,8),o.write(t,e,r,n,52,8),r+8}h.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):r<t&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):r<e&&(e=r),e<t&&(e=t);var n=this.subarray(t,e);return n.__proto__=h.prototype,n},h.prototype.readUIntLE=function(t,e,r){t>>>=0,e>>>=0,r||A(t,e,this.length);for(var n=this[t],i=1,o=0;++o<e&&(i*=256);)n+=this[t+o]*i;return n},h.prototype.readUIntBE=function(t,e,r){t>>>=0,e>>>=0,r||A(t,e,this.length);for(var n=this[t+--e],i=1;0<e&&(i*=256);)n+=this[t+--e]*i;return n},h.prototype.readUInt8=function(t,e){return t>>>=0,e||A(t,1,this.length),this[t]},h.prototype.readUInt16LE=function(t,e){return t>>>=0,e||A(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUInt16BE=function(t,e){return t>>>=0,e||A(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUInt32LE=function(t,e){return t>>>=0,e||A(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUInt32BE=function(t,e){return t>>>=0,e||A(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||A(t,e,this.length);for(var n=this[t],i=1,o=0;++o<e&&(i*=256);)n+=this[t+o]*i;return(i*=128)<=n&&(n-=Math.pow(2,8*e)),n},h.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||A(t,e,this.length);for(var n=e,i=1,o=this[t+--n];0<n&&(i*=256);)o+=this[t+--n]*i;return(i*=128)<=o&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return t>>>=0,e||A(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){t>>>=0,e||A(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){t>>>=0,e||A(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return t>>>=0,e||A(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return t>>>=0,e||A(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readFloatLE=function(t,e){return t>>>=0,e||A(t,4,this.length),o.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return t>>>=0,e||A(t,4,this.length),o.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return t>>>=0,e||A(t,8,this.length),o.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return t>>>=0,e||A(t,8,this.length),o.read(this,t,!1,52,8)},h.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||C(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o<r&&(i*=256);)this[e+o]=t/i&255;return e+r},h.prototype.writeUIntBE=function(t,e,r,n){(t=+t,e>>>=0,r>>>=0,n)||C(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[e+i]=255&t;0<=--i&&(o*=256);)this[e+i]=t/o&255;return e+r},h.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||C(this,t,e,1,255,0),this[e]=255&t,e+1},h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||C(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||C(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||C(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||C(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);C(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o<r&&(s*=256);)t<0&&0===a&&0!==this[e+o-1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},h.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);C(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;0<=--o&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||C(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||C(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||C(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||C(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||C(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeFloatLE=function(t,e,r){return T(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return T(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return O(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return O(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,n){if(!h.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),0<n&&n<r&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var i=n-r;if(this===t&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(e,r,n);else if(this===t&&r<e&&e<n)for(var o=i-1;0<=o;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},h.prototype.fill=function(t,e,r,n){if("string"==typeof t){if("string"==typeof e?(n=e,e=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!h.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===t.length){var i=t.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(t=i)}}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<r)throw new RangeError("Out of range index");if(r<=e)return this;var o;if(e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o<r;++o)this[o]=t;else{var s=h.isBuffer(t)?t:new h(t,n),a=s.length;if(0===a)throw new TypeError('The value "'+t+'" is invalid for argument "value"');for(o=0;o<r-e;++o)this[o+e]=s[o%a]}return this};var R=/[^+/0-9A-Za-z-_]/g;function M(t){return t<16?"0"+t.toString(16):t.toString(16)}function N(t,e){var r;e=e||1/0;for(var n=t.length,i=null,o=[],s=0;s<n;++s){if(55295<(r=t.charCodeAt(s))&&r<57344){if(!i){if(56319<r){-1<(e-=3)&&o.push(239,191,189);continue}if(s+1===n){-1<(e-=3)&&o.push(239,191,189);continue}i=r;continue}if(r<56320){-1<(e-=3)&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&-1<(e-=3)&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function I(t){return n.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(R,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function P(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function j(t){return t instanceof ArrayBuffer||null!=t&&null!=t.constructor&&"ArrayBuffer"===t.constructor.name&&"number"==typeof t.byteLength}function F(t){return t!=t}},{"base64-js":50,ieee754:93}],54:[function(t,e,r){e.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},{}],55:[function(t,e,r){!function(){"use strict";function i(t,e,r,n){return this instanceof i?(this.domain=t||void 0,this.path=e||"/",this.secure=!!r,this.script=!!n,this):new i(t,e,r,n)}function u(t,e,r){return t instanceof u?t:this instanceof u?(this.name=null,this.value=null,this.expiration_date=1/0,this.path=String(r||"/"),this.explicit_path=!1,this.domain=e||null,this.explicit_domain=!1,this.secure=!1,this.noscript=!1,t&&this.parse(t,e,r),this):new u(t,e,r)}i.All=Object.freeze(Object.create(null)),r.CookieAccessInfo=i,(r.Cookie=u).prototype.toString=function(){var t=[this.name+"="+this.value];return this.expiration_date!==1/0&&t.push("expires="+new Date(this.expiration_date).toGMTString()),this.domain&&t.push("domain="+this.domain),this.path&&t.push("path="+this.path),this.secure&&t.push("secure"),this.noscript&&t.push("httponly"),t.join("; ")},u.prototype.toValueString=function(){return this.name+"="+this.value};var s=/[:](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g;function t(){var o,s;return this instanceof t?(o=Object.create(null),this.setCookie=function(t,e,r){var n,i;if(n=(t=new u(t,e,r)).expiration_date<=Date.now(),void 0!==o[t.name]){for(s=o[t.name],i=0;i<s.length;i+=1)if(s[i].collidesWith(t))return n?(s.splice(i,1),0===s.length&&delete o[t.name],!1):s[i]=t;return!n&&(s.push(t),t)}return!n&&(o[t.name]=[t],o[t.name])},this.getCookie=function(t,e){var r,n;if(s=o[t])for(n=0;n<s.length;n+=1)if((r=s[n]).expiration_date<=Date.now())0===s.length&&delete o[r.name];else if(r.matches(e))return r},this.getCookies=function(t){var e,r,n=[];for(e in o)(r=this.getCookie(e,t))&&n.push(r);return n.toString=function(){return n.join(":")},n.toValueString=function(){return n.map(function(t){return t.toValueString()}).join(";")},n},this):new t}u.prototype.parse=function(t,e,r){if(this instanceof u){var n,i=t.split(";").filter(function(t){return!!t}),o=i[0].match(/([^=]+)=([\s\S]*)/);if(!o)return void console.warn("Invalid cookie header encountered. Header: '"+t+"'");var s=o[1],a=o[2];if("string"!=typeof s||0===s.length||"string"!=typeof a)return void console.warn("Unable to extract values from cookie header. Cookie: '"+t+"'");for(this.name=s,this.value=a,n=1;n<i.length;n+=1)switch(s=(o=i[n].match(/([^=]+)(?:=([\s\S]*))?/))[1].trim().toLowerCase(),a=o[2],s){case"httponly":this.noscript=!0;break;case"expires":this.expiration_date=a?Number(Date.parse(a)):1/0;break;case"path":this.path=a?a.trim():"",this.explicit_path=!0;break;case"domain":this.domain=a?a.trim():"",this.explicit_domain=!!this.domain;break;case"secure":this.secure=!0}return this.explicit_path||(this.path=r||"/"),this.explicit_domain||(this.domain=e),this}return(new u).parse(t,e,r)},u.prototype.matches=function(t){return t===i.All||!(this.noscript&&t.script||this.secure&&!t.secure||!this.collidesWith(t))},u.prototype.collidesWith=function(t){if(this.path&&!t.path||this.domain&&!t.domain)return!1;if(this.path&&0!==t.path.indexOf(this.path))return!1;if(this.explicit_path&&0!==t.path.indexOf(this.path))return!1;var e=t.domain&&t.domain.replace(/^[\.]/,""),r=this.domain&&this.domain.replace(/^[\.]/,"");if(r===e)return!0;if(r){if(!this.explicit_domain)return!1;var n=e.indexOf(r);return-1!==n&&n===e.length-r.length}return!0},(r.CookieJar=t).prototype.setCookies=function(t,e,r){var n,i,o=[];for(t=(t=Array.isArray(t)?t:t.split(s)).map(function(t){return new u(t,e,r)}),n=0;n<t.length;n+=1)i=t[n],this.setCookie(i,e,r)&&o.push(i);return o}}()},{}],56:[function(t,e,r){(function(t){function e(t){return Object.prototype.toString.call(t)}r.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===e(t)},r.isBoolean=function(t){return"boolean"==typeof t},r.isNull=function(t){return null===t},r.isNullOrUndefined=function(t){return null==t},r.isNumber=function(t){return"number"==typeof t},r.isString=function(t){return"string"==typeof t},r.isSymbol=function(t){return"symbol"==typeof t},r.isUndefined=function(t){return void 0===t},r.isRegExp=function(t){return"[object RegExp]"===e(t)},r.isObject=function(t){return"object"==typeof t&&null!==t},r.isDate=function(t){return"[object Date]"===e(t)},r.isError=function(t){return"[object Error]"===e(t)||t instanceof Error},r.isFunction=function(t){return"function"==typeof t},r.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},r.isBuffer=t.isBuffer}).call(this,{isBuffer:t("../../is-buffer/index.js")})},{"../../is-buffer/index.js":95}],57:[function(t,e,r){var n,i;n=this,i=function(i){return function(){var t=i,e=t.lib.BlockCipher,r=t.algo,c=[],f=[],h=[],l=[],p=[],d=[],m=[],y=[],g=[],v=[];!function(){for(var t=[],e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;var r=0,n=0;for(e=0;e<256;e++){var i=n^n<<1^n<<2^n<<3^n<<4;i=i>>>8^255&i^99,c[r]=i;var o=t[f[i]=r],s=t[o],a=t[s],u=257*t[i]^16843008*i;h[r]=u<<24|u>>>8,l[r]=u<<16|u>>>16,p[r]=u<<8|u>>>24,d[r]=u;u=16843009*a^65537*s^257*o^16843008*r;m[i]=u<<24|u>>>8,y[i]=u<<16|u>>>16,g[i]=u<<8|u>>>24,v[i]=u,r?(r=o^t[t[t[a^o]]],n^=t[t[n]]):r=n=1}}();var b=[0,1,2,4,8,16,32,64,128,27,54],n=r.AES=e.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,r=t.sigBytes/4,n=4*((this._nRounds=r+6)+1),i=this._keySchedule=[],o=0;o<n;o++)if(o<r)i[o]=e[o];else{var s=i[o-1];o%r?6<r&&o%r==4&&(s=c[s>>>24]<<24|c[s>>>16&255]<<16|c[s>>>8&255]<<8|c[255&s]):(s=c[(s=s<<8|s>>>24)>>>24]<<24|c[s>>>16&255]<<16|c[s>>>8&255]<<8|c[255&s],s^=b[o/r|0]<<24),i[o]=i[o-r]^s}for(var a=this._invKeySchedule=[],u=0;u<n;u++){o=n-u;if(u%4)s=i[o];else s=i[o-4];a[u]=u<4||o<=4?s:m[c[s>>>24]]^y[c[s>>>16&255]]^g[c[s>>>8&255]]^v[c[255&s]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,h,l,p,d,c)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,m,y,g,v,f);r=t[e+1];t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,n,i,o,s,a){for(var u=this._nRounds,c=t[e]^r[0],f=t[e+1]^r[1],h=t[e+2]^r[2],l=t[e+3]^r[3],p=4,d=1;d<u;d++){var m=n[c>>>24]^i[f>>>16&255]^o[h>>>8&255]^s[255&l]^r[p++],y=n[f>>>24]^i[h>>>16&255]^o[l>>>8&255]^s[255&c]^r[p++],g=n[h>>>24]^i[l>>>16&255]^o[c>>>8&255]^s[255&f]^r[p++],v=n[l>>>24]^i[c>>>16&255]^o[f>>>8&255]^s[255&h]^r[p++];c=m,f=y,h=g,l=v}m=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[h>>>8&255]<<8|a[255&l])^r[p++],y=(a[f>>>24]<<24|a[h>>>16&255]<<16|a[l>>>8&255]<<8|a[255&c])^r[p++],g=(a[h>>>24]<<24|a[l>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^r[p++],v=(a[l>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&h])^r[p++];t[e]=m,t[e+1]=y,t[e+2]=g,t[e+3]=v},keySize:8});t.AES=e._createHelper(n)}(),i.AES},"object"==typeof r?e.exports=r=i(t("./core"),t("./enc-base64"),t("./md5"),t("./evpkdf"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59,"./enc-base64":60,"./evpkdf":62,"./md5":67}],58:[function(t,e,r){var n,i;n=this,i=function(t){var e,r,n,u,i,o,s,a,c,f,h,l,p,d,m,y,g,v;t.lib.Cipher||(r=(e=t).lib,n=r.Base,u=r.WordArray,i=r.BufferedBlockAlgorithm,(o=e.enc).Utf8,s=o.Base64,a=e.algo.EvpKDF,c=r.Cipher=i.extend({cfg:n.extend(),createEncryptor:function(t,e){return this.create(this._ENC_XFORM_MODE,t,e)},createDecryptor:function(t,e){return this.create(this._DEC_XFORM_MODE,t,e)},init:function(t,e,r){this.cfg=this.cfg.extend(r),this._xformMode=t,this._key=e,this.reset()},reset:function(){i.reset.call(this),this._doReset()},process:function(t){return this._append(t),this._process()},finalize:function(t){return t&&this._append(t),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function i(t){return"string"==typeof t?v:y}return function(n){return{encrypt:function(t,e,r){return i(e).encrypt(n,t,e,r)},decrypt:function(t,e,r){return i(e).decrypt(n,t,e,r)}}}}()}),r.StreamCipher=c.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),f=e.mode={},h=r.BlockCipherMode=n.extend({createEncryptor:function(t,e){return this.Encryptor.create(t,e)},createDecryptor:function(t,e){return this.Decryptor.create(t,e)},init:function(t,e){this._cipher=t,this._iv=e}}),l=f.CBC=function(){var t=h.extend();function o(t,e,r){var n=this._iv;if(n){var i=n;this._iv=void 0}else i=this._prevBlock;for(var o=0;o<r;o++)t[e+o]^=i[o]}return t.Encryptor=t.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize;o.call(this,t,e,n),r.encryptBlock(t,e),this._prevBlock=t.slice(e,e+n)}}),t.Decryptor=t.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize,i=t.slice(e,e+n);r.decryptBlock(t,e),o.call(this,t,e,n),this._prevBlock=i}}),t}(),p=(e.pad={}).Pkcs7={pad:function(t,e){for(var r=4*e,n=r-t.sigBytes%r,i=n<<24|n<<16|n<<8|n,o=[],s=0;s<n;s+=4)o.push(i);var a=u.create(o,n);t.concat(a)},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},r.BlockCipher=c.extend({cfg:c.cfg.extend({mode:l,padding:p}),reset:function(){c.reset.call(this);var t=this.cfg,e=t.iv,r=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=r.createEncryptor;else{n=r.createDecryptor;this._minBufferSize=1}this._mode=n.call(r,this,e&&e.words)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){t.pad(this._data,this.blockSize);var e=this._process(!0)}else{e=this._process(!0);t.unpad(e)}return e},blockSize:4}),d=r.CipherParams=n.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}}),m=(e.format={}).OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;if(r)var n=u.create([1398893684,1701076831]).concat(r).concat(e);else n=e;return n.toString(s)},parse:function(t){var e=s.parse(t),r=e.words;if(1398893684==r[0]&&1701076831==r[1]){var n=u.create(r.slice(2,4));r.splice(0,4),e.sigBytes-=16}return d.create({ciphertext:e,salt:n})}},y=r.SerializableCipher=n.extend({cfg:n.extend({format:m}),encrypt:function(t,e,r,n){n=this.cfg.extend(n);var i=t.createEncryptor(r,n),o=i.finalize(e),s=i.cfg;return d.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:n.format})},decrypt:function(t,e,r,n){return n=this.cfg.extend(n),e=this._parse(e,n.format),t.createDecryptor(r,n).finalize(e.ciphertext)},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),g=(e.kdf={}).OpenSSL={execute:function(t,e,r,n){n||(n=u.random(8));var i=a.create({keySize:e+r}).compute(t,n),o=u.create(i.words.slice(e),4*r);return i.sigBytes=4*e,d.create({key:i,iv:o,salt:n})}},v=r.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:g}),encrypt:function(t,e,r,n){var i=(n=this.cfg.extend(n)).kdf.execute(r,t.keySize,t.ivSize);n.iv=i.iv;var o=y.encrypt.call(this,t,e,i.key,n);return o.mixIn(i),o},decrypt:function(t,e,r,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var i=n.kdf.execute(r,t.keySize,t.ivSize,e.salt);return n.iv=i.iv,y.decrypt.call(this,t,e,i.key,n)}}))},"object"==typeof r?e.exports=r=i(t("./core")):"function"==typeof define&&define.amd?define(["./core"],i):i(n.CryptoJS)},{"./core":59}],59:[function(t,e,r){var n,i;n=this,i=function(){var f,r,t,e,n,h,i,o,s,a,u,c,l=l||(f=Math,r=Object.create||function(){function r(){}return function(t){var e;return r.prototype=t,e=new r,r.prototype=null,e}}(),e=(t={}).lib={},n=e.Base={extend:function(t){var e=r(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),(e.init.prototype=e).$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},h=e.WordArray=n.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=null!=e?e:4*t.length},toString:function(t){return(t||o).stringify(this)},concat:function(t){var e=this.words,r=t.words,n=this.sigBytes,i=t.sigBytes;if(this.clamp(),n%4)for(var o=0;o<i;o++){var s=r[o>>>2]>>>24-o%4*8&255;e[n+o>>>2]|=s<<24-(n+o)%4*8}else for(o=0;o<i;o+=4)e[n+o>>>2]=r[o>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,e=this.sigBytes;t[e>>>2]&=4294967295<<32-e%4*8,t.length=f.ceil(e/4)},clone:function(){var t=n.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e,r=[],n=function(e){e=e;var r=987654321,n=4294967295;return function(){var t=((r=36969*(65535&r)+(r>>16)&n)<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n;return t/=4294967296,(t+=.5)*(.5<f.random()?1:-1)}},i=0;i<t;i+=4){var o=n(4294967296*(e||f.random()));e=987654071*o(),r.push(4294967296*o()|0)}return new h.init(r,t)}}),i=t.enc={},o=i.Hex={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i<r;i++){var o=e[i>>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n<e;n+=2)r[n>>>3]|=parseInt(t.substr(n,2),16)<<24-n%8*4;return new h.init(r,e/2)}},s=i.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i<r;i++){var o=e[i>>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n<e;n++)r[n>>>2]|=(255&t.charCodeAt(n))<<24-n%4*8;return new h.init(r,e)}},a=i.Utf8={stringify:function(t){try{return decodeURIComponent(escape(s.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return s.parse(unescape(encodeURIComponent(t)))}},u=e.BufferedBlockAlgorithm=n.extend({reset:function(){this._data=new h.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=a.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var e=this._data,r=e.words,n=e.sigBytes,i=this.blockSize,o=n/(4*i),s=(o=t?f.ceil(o):f.max((0|o)-this._minBufferSize,0))*i,a=f.min(4*s,n);if(s){for(var u=0;u<s;u+=i)this._doProcessBlock(r,u);var c=r.splice(0,s);e.sigBytes-=a}return new h.init(c,a)},clone:function(){var t=n.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0}),e.Hasher=u.extend({cfg:n.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){u.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){return t&&this._append(t),this._doFinalize()},blockSize:16,_createHelper:function(r){return function(t,e){return new r.init(e).finalize(t)}},_createHmacHelper:function(r){return function(t,e){return new c.HMAC.init(r,e).finalize(t)}}}),c=t.algo={},t);return l},"object"==typeof r?e.exports=r=i():"function"==typeof define&&define.amd?define([],i):n.CryptoJS=i()},{}],60:[function(t,e,r){var n,i;n=this,i=function(t){var e,u;return u=(e=t).lib.WordArray,e.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,n=this._map;t.clamp();for(var i=[],o=0;o<r;o+=3)for(var s=(e[o>>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;a<4&&o+.75*a<r;a++)i.push(n.charAt(s>>>6*(3-a)&63));var u=n.charAt(64);if(u)for(;i.length%4;)i.push(u);return i.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var i=0;i<r.length;i++)n[r.charCodeAt(i)]=i}var o=r.charAt(64);if(o){var s=t.indexOf(o);-1!==s&&(e=s)}return function(t,e,r){for(var n=[],i=0,o=0;o<e;o++)if(o%4){var s=r[t.charCodeAt(o-1)]<<o%4*2,a=r[t.charCodeAt(o)]>>>6-o%4*2;n[i>>>2]|=(s|a)<<24-i%4*8,i++}return u.create(n,i)}(t,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},t.enc.Base64},"object"==typeof r?e.exports=r=i(t("./core")):"function"==typeof define&&define.amd?define(["./core"],i):i(n.CryptoJS)},{"./core":59}],61:[function(t,e,r){var n,i;n=this,i=function(r){return function(){var t=r,i=t.lib.WordArray,e=t.enc;e.Utf16=e.Utf16BE={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i<r;i+=2){var o=e[i>>>2]>>>16-i%4*8&65535;n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n<e;n++)r[n>>>1]|=t.charCodeAt(n)<<16-n%2*16;return i.create(r,2*e)}};function s(t){return t<<8&4278255360|t>>>8&16711935}e.Utf16LE={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i<r;i+=2){var o=s(e[i>>>2]>>>16-i%4*8&65535);n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n<e;n++)r[n>>>1]|=s(t.charCodeAt(n)<<16-n%2*16);return i.create(r,2*e)}}}(),r.enc.Utf16},"object"==typeof r?e.exports=r=i(t("./core")):"function"==typeof define&&define.amd?define(["./core"],i):i(n.CryptoJS)},{"./core":59}],62:[function(t,e,r){var n,i;n=this,i=function(t){var e,r,n,f,i,o,s;return r=(e=t).lib,n=r.Base,f=r.WordArray,i=e.algo,o=i.MD5,s=i.EvpKDF=n.extend({cfg:n.extend({keySize:4,hasher:o,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var r=this.cfg,n=r.hasher.create(),i=f.create(),o=i.words,s=r.keySize,a=r.iterations;o.length<s;){u&&n.update(u);var u=n.update(t).finalize(e);n.reset();for(var c=1;c<a;c++)u=n.finalize(u),n.reset();i.concat(u)}return i.sigBytes=4*s,i}}),e.EvpKDF=function(t,e,r){return s.create(r).compute(t,e)},t.EvpKDF},"object"==typeof r?e.exports=r=i(t("./core"),t("./sha1"),t("./hmac")):"function"==typeof define&&define.amd?define(["./core","./sha1","./hmac"],i):i(n.CryptoJS)},{"./core":59,"./hmac":64,"./sha1":83}],63:[function(t,e,r){var n,i;n=this,i=function(t){var e,r,n;return r=(e=t).lib.CipherParams,n=e.enc.Hex,e.format.Hex={stringify:function(t){return t.ciphertext.toString(n)},parse:function(t){var e=n.parse(t);return r.create({ciphertext:e})}},t.format.Hex},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],64:[function(t,e,r){var n,i;n=this,i=function(t){var e,r,c;r=(e=t).lib.Base,c=e.enc.Utf8,e.algo.HMAC=r.extend({init:function(t,e){t=this._hasher=new t.init,"string"==typeof e&&(e=c.parse(e));var r=t.blockSize,n=4*r;e.sigBytes>n&&(e=t.finalize(e)),e.clamp();for(var i=this._oKey=e.clone(),o=this._iKey=e.clone(),s=i.words,a=o.words,u=0;u<r;u++)s[u]^=1549556828,a[u]^=909522486;i.sigBytes=o.sigBytes=n,this.reset()},reset:function(){var t=this._hasher;t.reset(),t.update(this._iKey)},update:function(t){return this._hasher.update(t),this},finalize:function(t){var e=this._hasher,r=e.finalize(t);return e.reset(),e.finalize(this._oKey.clone().concat(r))}})},"object"==typeof r?e.exports=r=i(t("./core")):"function"==typeof define&&define.amd?define(["./core"],i):i(n.CryptoJS)},{"./core":59}],65:[function(t,e,r){var n,i;n=this,i=function(t){return t},"object"==typeof r?e.exports=r=i(t("./core"),t("./x64-core"),t("./lib-typedarrays"),t("./enc-utf16"),t("./enc-base64"),t("./md5"),t("./sha1"),t("./sha256"),t("./sha224"),t("./sha512"),t("./sha384"),t("./sha3"),t("./ripemd160"),t("./hmac"),t("./pbkdf2"),t("./evpkdf"),t("./cipher-core"),t("./mode-cfb"),t("./mode-ctr"),t("./mode-ctr-gladman"),t("./mode-ofb"),t("./mode-ecb"),t("./pad-ansix923"),t("./pad-iso10126"),t("./pad-iso97971"),t("./pad-zeropadding"),t("./pad-nopadding"),t("./format-hex"),t("./aes"),t("./tripledes"),t("./rc4"),t("./rabbit"),t("./rabbit-legacy")):"function"==typeof define&&define.amd?define(["./core","./x64-core","./lib-typedarrays","./enc-utf16","./enc-base64","./md5","./sha1","./sha256","./sha224","./sha512","./sha384","./sha3","./ripemd160","./hmac","./pbkdf2","./evpkdf","./cipher-core","./mode-cfb","./mode-ctr","./mode-ctr-gladman","./mode-ofb","./mode-ecb","./pad-ansix923","./pad-iso10126","./pad-iso97971","./pad-zeropadding","./pad-nopadding","./format-hex","./aes","./tripledes","./rc4","./rabbit","./rabbit-legacy"],i):n.CryptoJS=i(n.CryptoJS)},{"./aes":57,"./cipher-core":58,"./core":59,"./enc-base64":60,"./enc-utf16":61,"./evpkdf":62,"./format-hex":63,"./hmac":64,"./lib-typedarrays":66,"./md5":67,"./mode-cfb":68,"./mode-ctr":70,"./mode-ctr-gladman":69,"./mode-ecb":71,"./mode-ofb":72,"./pad-ansix923":73,"./pad-iso10126":74,"./pad-iso97971":75,"./pad-nopadding":76,"./pad-zeropadding":77,"./pbkdf2":78,"./rabbit":80,"./rabbit-legacy":79,"./rc4":81,"./ripemd160":82,"./sha1":83,"./sha224":84,"./sha256":85,"./sha3":86,"./sha384":87,"./sha512":88,"./tripledes":89,"./x64-core":90}],66:[function(t,e,r){var n,i;n=this,i=function(e){return function(){if("function"==typeof ArrayBuffer){var t=e.lib.WordArray,i=t.init;(t.init=function(t){if(t instanceof ArrayBuffer&&(t=new Uint8Array(t)),(t instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)&&(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),t instanceof Uint8Array){for(var e=t.byteLength,r=[],n=0;n<e;n++)r[n>>>2]|=t[n]<<24-n%4*8;i.call(this,r,e)}else i.apply(this,arguments)}).prototype=t}}(),e.lib.WordArray},"object"==typeof r?e.exports=r=i(t("./core")):"function"==typeof define&&define.amd?define(["./core"],i):i(n.CryptoJS)},{"./core":59}],67:[function(t,e,r){var n,i;n=this,i=function(s){return function(f){var t=s,e=t.lib,r=e.WordArray,n=e.Hasher,i=t.algo,A=[];!function(){for(var t=0;t<64;t++)A[t]=4294967296*f.abs(f.sin(t+1))|0}();var o=i.MD5=n.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var n=e+r,i=t[n];t[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o=this._hash.words,s=t[e+0],a=t[e+1],u=t[e+2],c=t[e+3],f=t[e+4],h=t[e+5],l=t[e+6],p=t[e+7],d=t[e+8],m=t[e+9],y=t[e+10],g=t[e+11],v=t[e+12],b=t[e+13],_=t[e+14],w=t[e+15],x=o[0],k=o[1],S=o[2],E=o[3];k=O(k=O(k=O(k=O(k=T(k=T(k=T(k=T(k=B(k=B(k=B(k=B(k=C(k=C(k=C(k=C(k,S=C(S,E=C(E,x=C(x,k,S,E,s,7,A[0]),k,S,a,12,A[1]),x,k,u,17,A[2]),E,x,c,22,A[3]),S=C(S,E=C(E,x=C(x,k,S,E,f,7,A[4]),k,S,h,12,A[5]),x,k,l,17,A[6]),E,x,p,22,A[7]),S=C(S,E=C(E,x=C(x,k,S,E,d,7,A[8]),k,S,m,12,A[9]),x,k,y,17,A[10]),E,x,g,22,A[11]),S=C(S,E=C(E,x=C(x,k,S,E,v,7,A[12]),k,S,b,12,A[13]),x,k,_,17,A[14]),E,x,w,22,A[15]),S=B(S,E=B(E,x=B(x,k,S,E,a,5,A[16]),k,S,l,9,A[17]),x,k,g,14,A[18]),E,x,s,20,A[19]),S=B(S,E=B(E,x=B(x,k,S,E,h,5,A[20]),k,S,y,9,A[21]),x,k,w,14,A[22]),E,x,f,20,A[23]),S=B(S,E=B(E,x=B(x,k,S,E,m,5,A[24]),k,S,_,9,A[25]),x,k,c,14,A[26]),E,x,d,20,A[27]),S=B(S,E=B(E,x=B(x,k,S,E,b,5,A[28]),k,S,u,9,A[29]),x,k,p,14,A[30]),E,x,v,20,A[31]),S=T(S,E=T(E,x=T(x,k,S,E,h,4,A[32]),k,S,d,11,A[33]),x,k,g,16,A[34]),E,x,_,23,A[35]),S=T(S,E=T(E,x=T(x,k,S,E,a,4,A[36]),k,S,f,11,A[37]),x,k,p,16,A[38]),E,x,y,23,A[39]),S=T(S,E=T(E,x=T(x,k,S,E,b,4,A[40]),k,S,s,11,A[41]),x,k,c,16,A[42]),E,x,l,23,A[43]),S=T(S,E=T(E,x=T(x,k,S,E,m,4,A[44]),k,S,v,11,A[45]),x,k,w,16,A[46]),E,x,u,23,A[47]),S=O(S,E=O(E,x=O(x,k,S,E,s,6,A[48]),k,S,p,10,A[49]),x,k,_,15,A[50]),E,x,h,21,A[51]),S=O(S,E=O(E,x=O(x,k,S,E,v,6,A[52]),k,S,c,10,A[53]),x,k,y,15,A[54]),E,x,a,21,A[55]),S=O(S,E=O(E,x=O(x,k,S,E,d,6,A[56]),k,S,w,10,A[57]),x,k,l,15,A[58]),E,x,b,21,A[59]),S=O(S,E=O(E,x=O(x,k,S,E,f,6,A[60]),k,S,g,10,A[61]),x,k,u,15,A[62]),E,x,m,21,A[63]),o[0]=o[0]+x|0,o[1]=o[1]+k|0,o[2]=o[2]+S|0,o[3]=o[3]+E|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32;var i=f.floor(r/4294967296),o=r;e[15+(n+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(e.length+1),this._process();for(var s=this._hash,a=s.words,u=0;u<4;u++){var c=a[u];a[u]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return s},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});function C(t,e,r,n,i,o,s){var a=t+(e&r|~e&n)+i+s;return(a<<o|a>>>32-o)+e}function B(t,e,r,n,i,o,s){var a=t+(e&n|r&~n)+i+s;return(a<<o|a>>>32-o)+e}function T(t,e,r,n,i,o,s){var a=t+(e^r^n)+i+s;return(a<<o|a>>>32-o)+e}function O(t,e,r,n,i,o,s){var a=t+(r^(e|~n))+i+s;return(a<<o|a>>>32-o)+e}t.MD5=n._createHelper(o),t.HmacMD5=n._createHmacHelper(o)}(Math),s.MD5},"object"==typeof r?e.exports=r=i(t("./core")):"function"==typeof define&&define.amd?define(["./core"],i):i(n.CryptoJS)},{"./core":59}],68:[function(t,e,r){var n,i;n=this,i=function(e){return e.mode.CFB=function(){var t=e.lib.BlockCipherMode.extend();function o(t,e,r,n){var i=this._iv;if(i){var o=i.slice(0);this._iv=void 0}else o=this._prevBlock;n.encryptBlock(o,0);for(var s=0;s<r;s++)t[e+s]^=o[s]}return t.Encryptor=t.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize;o.call(this,t,e,n,r),this._prevBlock=t.slice(e,e+n)}}),t.Decryptor=t.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize,i=t.slice(e,e+n);o.call(this,t,e,n,r),this._prevBlock=i}}),t}(),e.mode.CFB},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],69:[function(t,e,r){var n,i;n=this,i=function(r){return r.mode.CTRGladman=function(){var t=r.lib.BlockCipherMode.extend();function c(t){if(255==(t>>24&255)){var e=t>>16&255,r=t>>8&255,n=255&t;255===e?(e=0,255===r?(r=0,255===n?n=0:++n):++r):++e,t=0,t+=e<<16,t+=r<<8,t+=n}else t+=1<<24;return t}var e=t.Encryptor=t.extend({processBlock:function(t,e){var r,n=this._cipher,i=n.blockSize,o=this._iv,s=this._counter;o&&(s=this._counter=o.slice(0),this._iv=void 0),0===((r=s)[0]=c(r[0]))&&(r[1]=c(r[1]));var a=s.slice(0);n.encryptBlock(a,0);for(var u=0;u<i;u++)t[e+u]^=a[u]}});return t.Decryptor=e,t}(),r.mode.CTRGladman},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],70:[function(t,e,r){var n,i;n=this,i=function(t){var e,r;return t.mode.CTR=(e=t.lib.BlockCipherMode.extend(),r=e.Encryptor=e.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize,i=this._iv,o=this._counter;i&&(o=this._counter=i.slice(0),this._iv=void 0);var s=o.slice(0);r.encryptBlock(s,0),o[n-1]=o[n-1]+1|0;for(var a=0;a<n;a++)t[e+a]^=s[a]}}),e.Decryptor=r,e),t.mode.CTR},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],71:[function(t,e,r){var n,i;n=this,i=function(t){var e;return t.mode.ECB=((e=t.lib.BlockCipherMode.extend()).Encryptor=e.extend({processBlock:function(t,e){this._cipher.encryptBlock(t,e)}}),e.Decryptor=e.extend({processBlock:function(t,e){this._cipher.decryptBlock(t,e)}}),e),t.mode.ECB},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],72:[function(t,e,r){var n,i;n=this,i=function(t){var e,r;return t.mode.OFB=(e=t.lib.BlockCipherMode.extend(),r=e.Encryptor=e.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize,i=this._iv,o=this._keystream;i&&(o=this._keystream=i.slice(0),this._iv=void 0),r.encryptBlock(o,0);for(var s=0;s<n;s++)t[e+s]^=o[s]}}),e.Decryptor=r,e),t.mode.OFB},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],73:[function(t,e,r){var n,i;n=this,i=function(t){return t.pad.AnsiX923={pad:function(t,e){var r=t.sigBytes,n=4*e,i=n-r%n,o=r+i-1;t.clamp(),t.words[o>>>2]|=i<<24-o%4*8,t.sigBytes+=i},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},t.pad.Ansix923},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],74:[function(t,e,r){var n,i;n=this,i=function(i){return i.pad.Iso10126={pad:function(t,e){var r=4*e,n=r-t.sigBytes%r;t.concat(i.lib.WordArray.random(n-1)).concat(i.lib.WordArray.create([n<<24],1))},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},i.pad.Iso10126},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],75:[function(t,e,r){var n,i;n=this,i=function(r){return r.pad.Iso97971={pad:function(t,e){t.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(t,e)},unpad:function(t){r.pad.ZeroPadding.unpad(t),t.sigBytes--}},r.pad.Iso97971},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],76:[function(t,e,r){var n,i;n=this,i=function(t){return t.pad.NoPadding={pad:function(){},unpad:function(){}},t.pad.NoPadding},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],77:[function(t,e,r){var n,i;n=this,i=function(t){return t.pad.ZeroPadding={pad:function(t,e){var r=4*e;t.clamp(),t.sigBytes+=r-(t.sigBytes%r||r)},unpad:function(t){for(var e=t.words,r=t.sigBytes-1;!(e[r>>>2]>>>24-r%4*8&255);)r--;t.sigBytes=r+1}},t.pad.ZeroPadding},"object"==typeof r?e.exports=r=i(t("./core"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59}],78:[function(t,e,r){var n,i;n=this,i=function(t){var e,r,n,g,i,o,v,s;return r=(e=t).lib,n=r.Base,g=r.WordArray,i=e.algo,o=i.SHA1,v=i.HMAC,s=i.PBKDF2=n.extend({cfg:n.extend({keySize:4,hasher:o,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var r=this.cfg,n=v.create(r.hasher,t),i=g.create(),o=g.create([1]),s=i.words,a=o.words,u=r.keySize,c=r.iterations;s.length<u;){var f=n.update(e).finalize(o);n.reset();for(var h=f.words,l=h.length,p=f,d=1;d<c;d++){p=n.finalize(p),n.reset();for(var m=p.words,y=0;y<l;y++)h[y]^=m[y]}i.concat(f),a[0]++}return i.sigBytes=4*u,i}}),e.PBKDF2=function(t,e,r){return s.create(r).compute(t,e)},t.PBKDF2},"object"==typeof r?e.exports=r=i(t("./core"),t("./sha1"),t("./hmac")):"function"==typeof define&&define.amd?define(["./core","./sha1","./hmac"],i):i(n.CryptoJS)},{"./core":59,"./hmac":64,"./sha1":83}],79:[function(t,e,r){var n,i;n=this,i=function(o){return function(){var t=o,e=t.lib.StreamCipher,r=t.algo,i=[],u=[],c=[],n=r.RabbitLegacy=e.extend({_doReset:function(){for(var t=this._key.words,e=this.cfg.iv,r=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],n=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]],i=this._b=0;i<4;i++)l.call(this);for(i=0;i<8;i++)n[i]^=r[i+4&7];if(e){var o=e.words,s=o[0],a=o[1],u=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=u>>>16|4294901760&c,h=c<<16|65535&u;n[0]^=u,n[1]^=f,n[2]^=c,n[3]^=h,n[4]^=u,n[5]^=f,n[6]^=c,n[7]^=h;for(i=0;i<4;i++)l.call(this)}},_doProcessBlock:function(t,e){var r=this._X;l.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),t[e+n]^=i[n]},blockSize:4,ivSize:2});function l(){for(var t=this._X,e=this._C,r=0;r<8;r++)u[r]=e[r];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0<u[0]>>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0<u[1]>>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0<u[2]>>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0<u[3]>>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0<u[4]>>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0<u[5]>>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0<u[6]>>>0?1:0)|0,this._b=e[7]>>>0<u[7]>>>0?1:0;for(r=0;r<8;r++){var n=t[r]+e[r],i=65535&n,o=n>>>16,s=((i*i>>>17)+i*o>>>15)+o*o,a=((4294901760&n)*n|0)+((65535&n)*n|0);c[r]=s^a}t[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,t[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,t[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,t[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,t[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,t[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,t[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,t[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}t.RabbitLegacy=e._createHelper(n)}(),o.RabbitLegacy},"object"==typeof r?e.exports=r=i(t("./core"),t("./enc-base64"),t("./md5"),t("./evpkdf"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59,"./enc-base64":60,"./evpkdf":62,"./md5":67}],80:[function(t,e,r){var n,i;n=this,i=function(o){return function(){var t=o,e=t.lib.StreamCipher,r=t.algo,i=[],u=[],c=[],n=r.Rabbit=e.extend({_doReset:function(){for(var t=this._key.words,e=this.cfg.iv,r=0;r<4;r++)t[r]=16711935&(t[r]<<8|t[r]>>>24)|4278255360&(t[r]<<24|t[r]>>>8);var n=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],i=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];for(r=this._b=0;r<4;r++)l.call(this);for(r=0;r<8;r++)i[r]^=n[r+4&7];if(e){var o=e.words,s=o[0],a=o[1],u=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),f=u>>>16|4294901760&c,h=c<<16|65535&u;i[0]^=u,i[1]^=f,i[2]^=c,i[3]^=h,i[4]^=u,i[5]^=f,i[6]^=c,i[7]^=h;for(r=0;r<4;r++)l.call(this)}},_doProcessBlock:function(t,e){var r=this._X;l.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),t[e+n]^=i[n]},blockSize:4,ivSize:2});function l(){for(var t=this._X,e=this._C,r=0;r<8;r++)u[r]=e[r];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0<u[0]>>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0<u[1]>>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0<u[2]>>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0<u[3]>>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0<u[4]>>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0<u[5]>>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0<u[6]>>>0?1:0)|0,this._b=e[7]>>>0<u[7]>>>0?1:0;for(r=0;r<8;r++){var n=t[r]+e[r],i=65535&n,o=n>>>16,s=((i*i>>>17)+i*o>>>15)+o*o,a=((4294901760&n)*n|0)+((65535&n)*n|0);c[r]=s^a}t[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,t[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,t[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,t[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,t[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,t[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,t[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,t[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}t.Rabbit=e._createHelper(n)}(),o.Rabbit},"object"==typeof r?e.exports=r=i(t("./core"),t("./enc-base64"),t("./md5"),t("./evpkdf"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59,"./enc-base64":60,"./evpkdf":62,"./md5":67}],81:[function(t,e,r){var n,i;n=this,i=function(s){return function(){var t=s,e=t.lib.StreamCipher,r=t.algo,n=r.RC4=e.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes,n=this._S=[],i=0;i<256;i++)n[i]=i;i=0;for(var o=0;i<256;i++){var s=i%r,a=e[s>>>2]>>>24-s%4*8&255;o=(o+n[i]+a)%256;var u=n[i];n[i]=n[o],n[o]=u}this._i=this._j=0},_doProcessBlock:function(t,e){t[e]^=i.call(this)},keySize:8,ivSize:0});function i(){for(var t=this._S,e=this._i,r=this._j,n=0,i=0;i<4;i++){r=(r+t[e=(e+1)%256])%256;var o=t[e];t[e]=t[r],t[r]=o,n|=t[(t[e]+t[r])%256]<<24-8*i}return this._i=e,this._j=r,n}t.RC4=e._createHelper(n);var o=r.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var t=this.cfg.drop;0<t;t--)i.call(this)}});t.RC4Drop=e._createHelper(o)}(),s.RC4},"object"==typeof r?e.exports=r=i(t("./core"),t("./enc-base64"),t("./md5"),t("./evpkdf"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59,"./enc-base64":60,"./evpkdf":62,"./md5":67}],82:[function(t,e,r){var n,i;n=this,i=function(a){return function(t){var e=a,r=e.lib,n=r.WordArray,i=r.Hasher,o=e.algo,k=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),S=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),E=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),A=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),C=n.create([0,1518500249,1859775393,2400959708,2840853838]),B=n.create([1352829926,1548603684,1836072691,2053994217,0]),s=o.RIPEMD160=i.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var n=e+r,i=t[n];t[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o,s,a,u,c,f,h,l,p,d,m,y=this._hash.words,g=C.words,v=B.words,b=k.words,_=S.words,w=E.words,x=A.words;f=o=y[0],h=s=y[1],l=a=y[2],p=u=y[3],d=c=y[4];for(r=0;r<80;r+=1)m=o+t[e+b[r]]|0,m+=r<16?T(s,a,u)+g[0]:r<32?O(s,a,u)+g[1]:r<48?R(s,a,u)+g[2]:r<64?M(s,a,u)+g[3]:N(s,a,u)+g[4],m=(m=I(m|=0,w[r]))+c|0,o=c,c=u,u=I(a,10),a=s,s=m,m=f+t[e+_[r]]|0,m+=r<16?N(h,l,p)+v[0]:r<32?M(h,l,p)+v[1]:r<48?R(h,l,p)+v[2]:r<64?O(h,l,p)+v[3]:T(h,l,p)+v[4],m=(m=I(m|=0,x[r]))+d|0,f=d,d=p,p=I(l,10),l=h,h=m;m=y[1]+a+p|0,y[1]=y[2]+u+d|0,y[2]=y[3]+c+f|0,y[3]=y[4]+o+h|0,y[4]=y[0]+s+l|0,y[0]=m},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(e.length+1),this._process();for(var i=this._hash,o=i.words,s=0;s<5;s++){var a=o[s];o[s]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return i},clone:function(){var t=i.clone.call(this);return t._hash=this._hash.clone(),t}});function T(t,e,r){return t^e^r}function O(t,e,r){return t&e|~t&r}function R(t,e,r){return(t|~e)^r}function M(t,e,r){return t&r|e&~r}function N(t,e,r){return t^(e|~r)}function I(t,e){return t<<e|t>>>32-e}e.RIPEMD160=i._createHelper(s),e.HmacRIPEMD160=i._createHmacHelper(s)}(Math),a.RIPEMD160},"object"==typeof r?e.exports=r=i(t("./core")):"function"==typeof define&&define.amd?define(["./core"],i):i(n.CryptoJS)},{"./core":59}],83:[function(t,e,r){var n,i;n=this,i=function(t){var e,r,n,i,o,h,s;return r=(e=t).lib,n=r.WordArray,i=r.Hasher,o=e.algo,h=[],s=o.SHA1=i.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],u=0;u<80;u++){if(u<16)h[u]=0|t[e+u];else{var c=h[u-3]^h[u-8]^h[u-14]^h[u-16];h[u]=c<<1|c>>>31}var f=(n<<5|n>>>27)+a+h[u];f+=u<20?1518500249+(i&o|~i&s):u<40?1859775393+(i^o^s):u<60?(i&o|i&s|o&s)-1894007588:(i^o^s)-899497514,a=s,s=o,o=i<<30|i>>>2,i=n,n=f}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=Math.floor(r/4294967296),e[15+(n+64>>>9<<4)]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=i.clone.call(this);return t._hash=this._hash.clone(),t}}),e.SHA1=i._createHelper(s),e.HmacSHA1=i._createHmacHelper(s),t.SHA1},"object"==typeof r?e.exports=r=i(t("./core")):"function"==typeof define&&define.amd?define(["./core"],i):i(n.CryptoJS)},{"./core":59}],84:[function(t,e,r){var n,i;n=this,i=function(t){var e,r,n,i,o;return r=(e=t).lib.WordArray,n=e.algo,i=n.SHA256,o=n.SHA224=i.extend({_doReset:function(){this._hash=new r.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var t=i._doFinalize.call(this);return t.sigBytes-=4,t}}),e.SHA224=i._createHelper(o),e.HmacSHA224=i._createHmacHelper(o),t.SHA224},"object"==typeof r?e.exports=r=i(t("./core"),t("./sha256")):"function"==typeof define&&define.amd?define(["./core","./sha256"],i):i(n.CryptoJS)},{"./core":59,"./sha256":85}],85:[function(t,e,r){var n,i;n=this,i=function(u){return function(i){var t=u,e=t.lib,r=e.WordArray,n=e.Hasher,o=t.algo,s=[],b=[];!function(){function t(t){for(var e=i.sqrt(t),r=2;r<=e;r++)if(!(t%r))return!1;return!0}function e(t){return 4294967296*(t-(0|t))|0}for(var r=2,n=0;n<64;)t(r)&&(n<8&&(s[n]=e(i.pow(r,.5))),b[n]=e(i.pow(r,1/3)),n++),r++}();var _=[],a=o.SHA256=n.extend({_doReset:function(){this._hash=new r.init(s.slice(0))},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],u=r[5],c=r[6],f=r[7],h=0;h<64;h++){if(h<16)_[h]=0|t[e+h];else{var l=_[h-15],p=(l<<25|l>>>7)^(l<<14|l>>>18)^l>>>3,d=_[h-2],m=(d<<15|d>>>17)^(d<<13|d>>>19)^d>>>10;_[h]=p+_[h-7]+m+_[h-16]}var y=n&i^n&o^i&o,g=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),v=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+b[h]+_[h];f=c,c=u,u=a,a=s+v|0,s=o,o=i,i=n,n=v+(g+y)|0}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0,r[5]=r[5]+u|0,r[6]=r[6]+c|0,r[7]=r[7]+f|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=i.floor(r/4294967296),e[15+(n+64>>>9<<4)]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});t.SHA256=n._createHelper(a),t.HmacSHA256=n._createHmacHelper(a)}(Math),u.SHA256},"object"==typeof r?e.exports=r=i(t("./core")):"function"==typeof define&&define.amd?define(["./core"],i):i(n.CryptoJS)},{"./core":59}],86:[function(t,e,r){var n,i;n=this,i=function(o){return function(l){var t=o,e=t.lib,p=e.WordArray,n=e.Hasher,f=t.x64.Word,r=t.algo,T=[],O=[],R=[];!function(){for(var t=1,e=0,r=0;r<24;r++){T[t+5*e]=(r+1)*(r+2)/2%64;var n=(2*t+3*e)%5;t=e%5,e=n}for(t=0;t<5;t++)for(e=0;e<5;e++)O[t+5*e]=e+(2*t+3*e)%5*5;for(var i=1,o=0;o<24;o++){for(var s=0,a=0,u=0;u<7;u++){if(1&i){var c=(1<<u)-1;c<32?a^=1<<c:s^=1<<c-32}128&i?i=i<<1^113:i<<=1}R[o]=f.create(s,a)}}();var M=[];!function(){for(var t=0;t<25;t++)M[t]=f.create()}();var i=r.SHA3=n.extend({cfg:n.cfg.extend({outputLength:512}),_doReset:function(){for(var t=this._state=[],e=0;e<25;e++)t[e]=new f.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(t,e){for(var r=this._state,n=this.blockSize/2,i=0;i<n;i++){var o=t[e+2*i],s=t[e+2*i+1];o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),(S=r[i]).high^=s,S.low^=o}for(var a=0;a<24;a++){for(var u=0;u<5;u++){for(var c=0,f=0,h=0;h<5;h++){c^=(S=r[u+5*h]).high,f^=S.low}var l=M[u];l.high=c,l.low=f}for(u=0;u<5;u++){var p=M[(u+4)%5],d=M[(u+1)%5],m=d.high,y=d.low;for(c=p.high^(m<<1|y>>>31),f=p.low^(y<<1|m>>>31),h=0;h<5;h++){(S=r[u+5*h]).high^=c,S.low^=f}}for(var g=1;g<25;g++){var v=(S=r[g]).high,b=S.low,_=T[g];if(_<32)c=v<<_|b>>>32-_,f=b<<_|v>>>32-_;else c=b<<_-32|v>>>64-_,f=v<<_-32|b>>>64-_;var w=M[O[g]];w.high=c,w.low=f}var x=M[0],k=r[0];x.high=k.high,x.low=k.low;for(u=0;u<5;u++)for(h=0;h<5;h++){var S=r[g=u+5*h],E=M[g],A=M[(u+1)%5+5*h],C=M[(u+2)%5+5*h];S.high=E.high^~A.high&C.high,S.low=E.low^~A.low&C.low}S=r[0];var B=R[a];S.high^=B.high,S.low^=B.low}},_doFinalize:function(){var t=this._data,e=t.words,r=(this._nDataBytes,8*t.sigBytes),n=32*this.blockSize;e[r>>>5]|=1<<24-r%32,e[(l.ceil((r+1)/n)*n>>>5)-1]|=128,t.sigBytes=4*e.length,this._process();for(var i=this._state,o=this.cfg.outputLength/8,s=o/8,a=[],u=0;u<s;u++){var c=i[u],f=c.high,h=c.low;f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),h=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8),a.push(h),a.push(f)}return new p.init(a,o)},clone:function(){for(var t=n.clone.call(this),e=t._state=this._state.slice(0),r=0;r<25;r++)e[r]=e[r].clone();return t}});t.SHA3=n._createHelper(i),t.HmacSHA3=n._createHmacHelper(i)}(Math),o.SHA3},"object"==typeof r?e.exports=r=i(t("./core"),t("./x64-core")):"function"==typeof define&&define.amd?define(["./core","./x64-core"],i):i(n.CryptoJS)},{"./core":59,"./x64-core":90}],87:[function(t,e,r){var n,i;n=this,i=function(t){var e,r,n,i,o,s,a;return r=(e=t).x64,n=r.Word,i=r.WordArray,o=e.algo,s=o.SHA512,a=o.SHA384=s.extend({_doReset:function(){this._hash=new i.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var t=s._doFinalize.call(this);return t.sigBytes-=16,t}}),e.SHA384=s._createHelper(a),e.HmacSHA384=s._createHmacHelper(a),t.SHA384},"object"==typeof r?e.exports=r=i(t("./core"),t("./x64-core"),t("./sha512")):"function"==typeof define&&define.amd?define(["./core","./x64-core","./sha512"],i):i(n.CryptoJS)},{"./core":59,"./sha512":88,"./x64-core":90}],88:[function(t,e,r){var n,i;n=this,i=function(u){return function(){var t=u,e=t.lib.Hasher,r=t.x64,n=r.Word,i=r.WordArray,o=t.algo;function s(){return n.create.apply(n,arguments)}var kt=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],St=[];!function(){for(var t=0;t<80;t++)St[t]=s()}();var a=o.SHA512=e.extend({_doReset:function(){this._hash=new i.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],u=r[5],c=r[6],f=r[7],h=n.high,l=n.low,p=i.high,d=i.low,m=o.high,y=o.low,g=s.high,v=s.low,b=a.high,_=a.low,w=u.high,x=u.low,k=c.high,S=c.low,E=f.high,A=f.low,C=h,B=l,T=p,O=d,R=m,M=y,N=g,I=v,P=b,j=_,F=w,D=x,H=k,L=S,q=E,U=A,z=0;z<80;z++){var W=St[z];if(z<16)var G=W.high=0|t[e+2*z],X=W.low=0|t[e+2*z+1];else{var J=St[z-15],K=J.high,V=J.low,$=(K>>>1|V<<31)^(K>>>8|V<<24)^K>>>7,Z=(V>>>1|K<<31)^(V>>>8|K<<24)^(V>>>7|K<<25),Y=St[z-2],Q=Y.high,tt=Y.low,et=(Q>>>19|tt<<13)^(Q<<3|tt>>>29)^Q>>>6,rt=(tt>>>19|Q<<13)^(tt<<3|Q>>>29)^(tt>>>6|Q<<26),nt=St[z-7],it=nt.high,ot=nt.low,st=St[z-16],at=st.high,ut=st.low;G=(G=(G=$+it+((X=Z+ot)>>>0<Z>>>0?1:0))+et+((X=X+rt)>>>0<rt>>>0?1:0))+at+((X=X+ut)>>>0<ut>>>0?1:0);W.high=G,W.low=X}var ct,ft=P&F^~P&H,ht=j&D^~j&L,lt=C&T^C&R^T&R,pt=B&O^B&M^O&M,dt=(C>>>28|B<<4)^(C<<30|B>>>2)^(C<<25|B>>>7),mt=(B>>>28|C<<4)^(B<<30|C>>>2)^(B<<25|C>>>7),yt=(P>>>14|j<<18)^(P>>>18|j<<14)^(P<<23|j>>>9),gt=(j>>>14|P<<18)^(j>>>18|P<<14)^(j<<23|P>>>9),vt=kt[z],bt=vt.high,_t=vt.low,wt=q+yt+((ct=U+gt)>>>0<U>>>0?1:0),xt=mt+pt;q=H,U=L,H=F,L=D,F=P,D=j,P=N+(wt=(wt=(wt=wt+ft+((ct=ct+ht)>>>0<ht>>>0?1:0))+bt+((ct=ct+_t)>>>0<_t>>>0?1:0))+G+((ct=ct+X)>>>0<X>>>0?1:0))+((j=I+ct|0)>>>0<I>>>0?1:0)|0,N=R,I=M,R=T,M=O,T=C,O=B,C=wt+(dt+lt+(xt>>>0<mt>>>0?1:0))+((B=ct+xt|0)>>>0<ct>>>0?1:0)|0}l=n.low=l+B,n.high=h+C+(l>>>0<B>>>0?1:0),d=i.low=d+O,i.high=p+T+(d>>>0<O>>>0?1:0),y=o.low=y+M,o.high=m+R+(y>>>0<M>>>0?1:0),v=s.low=v+I,s.high=g+N+(v>>>0<I>>>0?1:0),_=a.low=_+j,a.high=b+P+(_>>>0<j>>>0?1:0),x=u.low=x+D,u.high=w+F+(x>>>0<D>>>0?1:0),S=c.low=S+L,c.high=k+H+(S>>>0<L>>>0?1:0),A=f.low=A+U,f.high=E+q+(A>>>0<U>>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[30+(n+128>>>10<<5)]=Math.floor(r/4294967296),e[31+(n+128>>>10<<5)]=r,t.sigBytes=4*e.length,this._process(),this._hash.toX32()},clone:function(){var t=e.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});t.SHA512=e._createHelper(a),t.HmacSHA512=e._createHmacHelper(a)}(),u.SHA512},"object"==typeof r?e.exports=r=i(t("./core"),t("./x64-core")):"function"==typeof define&&define.amd?define(["./core","./x64-core"],i):i(n.CryptoJS)},{"./core":59,"./x64-core":90}],89:[function(t,e,r){var n,i;n=this,i=function(a){return function(){var t=a,e=t.lib,r=e.WordArray,n=e.BlockCipher,i=t.algo,c=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],f=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],h=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],p=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],o=i.DES=n.extend({_doReset:function(){for(var t=this._key.words,e=[],r=0;r<56;r++){var n=c[r]-1;e[r]=t[n>>>5]>>>31-n%32&1}for(var i=this._subKeys=[],o=0;o<16;o++){var s=i[o]=[],a=h[o];for(r=0;r<24;r++)s[r/6|0]|=e[(f[r]-1+a)%28]<<31-r%6,s[4+(r/6|0)]|=e[28+(f[r+24]-1+a)%28]<<31-r%6;s[0]=s[0]<<1|s[0]>>>31;for(r=1;r<7;r++)s[r]=s[r]>>>4*(r-1)+3;s[7]=s[7]<<5|s[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=i[15-r]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,r){this._lBlock=t[e],this._rBlock=t[e+1],d.call(this,4,252645135),d.call(this,16,65535),m.call(this,2,858993459),m.call(this,8,16711935),d.call(this,1,1431655765);for(var n=0;n<16;n++){for(var i=r[n],o=this._lBlock,s=this._rBlock,a=0,u=0;u<8;u++)a|=l[u][((s^i[u])&p[u])>>>0];this._lBlock=s,this._rBlock=o^a}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,d.call(this,1,1431655765),m.call(this,8,16711935),m.call(this,2,858993459),d.call(this,16,65535),d.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function d(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<<t}function m(t,e){var r=(this._rBlock>>>t^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<<t}t.DES=n._createHelper(o);var s=i.TripleDES=n.extend({_doReset:function(){var t=this._key.words;this._des1=o.createEncryptor(r.create(t.slice(0,2))),this._des2=o.createEncryptor(r.create(t.slice(2,4))),this._des3=o.createEncryptor(r.create(t.slice(4,6)))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});t.TripleDES=n._createHelper(s)}(),a.TripleDES},"object"==typeof r?e.exports=r=i(t("./core"),t("./enc-base64"),t("./md5"),t("./evpkdf"),t("./cipher-core")):"function"==typeof define&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],i):i(n.CryptoJS)},{"./cipher-core":58,"./core":59,"./enc-base64":60,"./evpkdf":62,"./md5":67}],90:[function(t,e,r){var n,i;n=this,i=function(t){var e,r,i,o,n;return r=(e=t).lib,i=r.Base,o=r.WordArray,(n=e.x64={}).Word=i.extend({init:function(t,e){this.high=t,this.low=e}}),n.WordArray=i.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=null!=e?e:8*t.length},toX32:function(){for(var t=this.words,e=t.length,r=[],n=0;n<e;n++){var i=t[n];r.push(i.high),r.push(i.low)}return o.create(r,this.sigBytes)},clone:function(){for(var t=i.clone.call(this),e=t.words=this.words.slice(0),r=e.length,n=0;n<r;n++)e[n]=e[n].clone();return t}}),t},"object"==typeof r?e.exports=r=i(t("./core")):"function"==typeof define&&define.amd?define(["./core"],i):i(n.CryptoJS)},{"./core":59}],91:[function(t,e,r){var u=Object.create||function(t){var e=function(){};return e.prototype=t,new e},s=Object.keys||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.push(r);return r},o=Function.prototype.bind||function(t){var e=this;return function(){return e.apply(t,arguments)}};function n(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=u(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}((e.exports=n).EventEmitter=n).prototype._events=void 0,n.prototype._maxListeners=void 0;var i,a=10;try{var c={};Object.defineProperty&&Object.defineProperty(c,"x",{value:0}),i=0===c.x}catch(t){i=!1}function f(t){return void 0===t._maxListeners?n.defaultMaxListeners:t._maxListeners}function h(t,e,r,n){var i,o,s;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((o=t._events)?(o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]):(o=t._events=u(null),t._eventsCount=0),s){if("function"==typeof s?s=o[e]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),!s.warned&&(i=f(t))&&0<i&&s.length>i){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+' "'+String(e)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');a.name="MaxListenersExceededWarning",a.emitter=t,a.type=e,a.count=s.length,"object"==typeof console&&console.warn&&console.warn("%s: %s",a.name,a.message)}}else s=o[e]=r,++t._eventsCount;return t}function l(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var t=new Array(arguments.length),e=0;e<t.length;++e)t[e]=arguments[e];this.listener.apply(this.target,t)}}function p(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},i=o.call(l,n);return i.listener=r,n.wrapFn=i}function d(t,e,r){var n=t._events;if(!n)return[];var i=n[e];return i?"function"==typeof i?r?[i.listener||i]:[i]:r?function(t){for(var e=new Array(t.length),r=0;r<e.length;++r)e[r]=t[r].listener||t[r];return e}(i):y(i,i.length):[]}function m(t){var e=this._events;if(e){var r=e[t];if("function"==typeof r)return 1;if(r)return r.length}return 0}function y(t,e){for(var r=new Array(e),n=0;n<e;++n)r[n]=t[n];return r}i?Object.defineProperty(n,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(t){if("number"!=typeof t||t<0||t!=t)throw new TypeError('"defaultMaxListeners" must be a positive number');a=t}}):n.defaultMaxListeners=a,n.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||isNaN(t))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=t,this},n.prototype.getMaxListeners=function(){return f(this)},n.prototype.emit=function(t){var e,r,n,i,o,s,a="error"===t;if(s=this._events)a=a&&null==s.error;else if(!a)return!1;if(a){if(1<arguments.length&&(e=arguments[1]),e instanceof Error)throw e;var u=new Error('Unhandled "error" event. ('+e+")");throw u.context=e,u}if(!(r=s[t]))return!1;var c="function"==typeof r;switch(n=arguments.length){case 1:!function(t,e,r){if(e)t.call(r);else for(var n=t.length,i=y(t,n),o=0;o<n;++o)i[o].call(r)}(r,c,this);break;case 2:!function(t,e,r,n){if(e)t.call(r,n);else for(var i=t.length,o=y(t,i),s=0;s<i;++s)o[s].call(r,n)}(r,c,this,arguments[1]);break;case 3:!function(t,e,r,n,i){if(e)t.call(r,n,i);else for(var o=t.length,s=y(t,o),a=0;a<o;++a)s[a].call(r,n,i)}(r,c,this,arguments[1],arguments[2]);break;case 4:!function(t,e,r,n,i,o){if(e)t.call(r,n,i,o);else for(var s=t.length,a=y(t,s),u=0;u<s;++u)a[u].call(r,n,i,o)}(r,c,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),o=1;o<n;o++)i[o-1]=arguments[o];!function(t,e,r,n){if(e)t.apply(r,n);else for(var i=t.length,o=y(t,i),s=0;s<i;++s)o[s].apply(r,n)}(r,c,this,i)}return!0},n.prototype.on=n.prototype.addListener=function(t,e){return h(this,t,e,!1)},n.prototype.prependListener=function(t,e){return h(this,t,e,!0)},n.prototype.once=function(t,e){if("function"!=typeof e)throw new TypeError('"listener" argument must be a function');return this.on(t,p(this,t,e)),this},n.prototype.prependOnceListener=function(t,e){if("function"!=typeof e)throw new TypeError('"listener" argument must be a function');return this.prependListener(t,p(this,t,e)),this},n.prototype.removeListener=function(t,e){var r,n,i,o,s;if("function"!=typeof e)throw new TypeError('"listener" argument must be a function');if(!(n=this._events))return this;if(!(r=n[t]))return this;if(r===e||r.listener===e)0==--this._eventsCount?this._events=u(null):(delete n[t],n.removeListener&&this.emit("removeListener",t,r.listener||e));else if("function"!=typeof r){for(i=-1,o=r.length-1;0<=o;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():function(t,e){for(var r=e,n=r+1,i=t.length;n<i;r+=1,n+=1)t[r]=t[n];t.pop()}(r,i),1===r.length&&(n[t]=r[0]),n.removeListener&&this.emit("removeListener",t,s||e)}return this},n.prototype.removeAllListeners=function(t){var e,r,n;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=u(null),this._eventsCount=0):r[t]&&(0==--this._eventsCount?this._events=u(null):delete r[t]),this;if(0===arguments.length){var i,o=s(r);for(n=0;n<o.length;++n)"removeListener"!==(i=o[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=u(null),this._eventsCount=0,this}if("function"==typeof(e=r[t]))this.removeListener(t,e);else if(e)for(n=e.length-1;0<=n;n--)this.removeListener(t,e[n]);return this},n.prototype.listeners=function(t){return d(this,t,!0)},n.prototype.rawListeners=function(t){return d(this,t,!1)},n.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},n.prototype.listenerCount=m,n.prototype.eventNames=function(){return 0<this._eventsCount?Reflect.ownKeys(this._events):[]}},{}],92:[function(t,e,r){var n=t("http"),i=t("url"),o=e.exports;for(var s in n)n.hasOwnProperty(s)&&(o[s]=n[s]);function a(t){if("string"==typeof t&&(t=i.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}o.request=function(t,e){return t=a(t),n.request.call(this,t,e)},o.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},{http:114,url:121}],93:[function(t,e,r){r.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<<a)-1,c=u>>1,f=-7,h=r?i-1:0,l=r?-1:1,p=t[e+h];for(h+=l,o=p&(1<<-f)-1,p>>=-f,f+=a;0<f;o=256*o+t[e+h],h+=l,f-=8);for(s=o&(1<<-f)-1,o>>=-f,f+=n;0<f;s=256*s+t[e+h],h+=l,f-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),o-=c}return(p?-1:1)*s*Math.pow(2,o-n)},r.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,f=(1<<c)-1,h=f>>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=f):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),2<=(e+=1<=s+h?l/u:l*Math.pow(2,1-h))*u&&(s++,u/=2),f<=s+h?(a=0,s=f):1<=s+h?(a=(e*u-1)*Math.pow(2,i),s+=h):(a=e*Math.pow(2,h-1)*Math.pow(2,i),s=0));8<=i;t[r+p]=255&a,p+=d,a/=256,i-=8);for(s=s<<i|a,c+=i;0<c;t[r+p]=255&s,p+=d,s/=256,c-=8);t[r+p-d]|=128*m}},{}],94:[function(t,e,r){"function"==typeof Object.create?e.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],95:[function(t,e,r){function n(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}e.exports=function(t){return null!=t&&(n(t)||"function"==typeof(e=t).readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))||!!t._isBuffer);var e}},{}],96:[function(t,e,r){var n={}.toString;e.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},{}],97:[function(t,e,r){r.endianness=function(){return"LE"},r.hostname=function(){return"undefined"!=typeof location?location.hostname:""},r.loadavg=function(){return[]},r.uptime=function(){return 0},r.freemem=function(){return Number.MAX_VALUE},r.totalmem=function(){return Number.MAX_VALUE},r.cpus=function(){return[]},r.type=function(){return"Browser"},r.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},r.networkInterfaces=r.getNetworkInterfaces=function(){return{}},r.arch=function(){return"javascript"},r.platform=function(){return"browser"},r.tmpdir=r.tmpDir=function(){return"/tmp"},r.EOL="\n",r.homedir=function(){return"/"}},{}],98:[function(t,e,r){(function(a){"use strict";!a.version||0===a.version.indexOf("v0.")||0===a.version.indexOf("v1.")&&0!==a.version.indexOf("v1.8.")?e.exports={nextTick:function(t,e,r,n){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var i,o,s=arguments.length;switch(s){case 0:case 1:return a.nextTick(t);case 2:return a.nextTick(function(){t.call(null,e)});case 3:return a.nextTick(function(){t.call(null,e,r)});case 4:return a.nextTick(function(){t.call(null,e,r,n)});default:for(i=new Array(s-1),o=0;o<i.length;)i[o++]=arguments[o];return a.nextTick(function(){t.apply(null,i)})}}}:e.exports=a}).call(this,t("_process"))},{_process:99}],99:[function(t,e,r){var n,i,o=e.exports={};function s(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function u(e){if(n===setTimeout)return setTimeout(e,0);if((n===s||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:s}catch(t){n=s}try{i="function"==typeof clearTimeout?clearTimeout:a}catch(t){i=a}}();var c,f=[],h=!1,l=-1;function p(){h&&c&&(h=!1,c.length?f=c.concat(f):l=-1,f.length&&d())}function d(){if(!h){var t=u(p);h=!0;for(var e=f.length;e;){for(c=f,f=[];++l<e;)c&&c[l].run();l=-1,e=f.length}c=null,h=!1,function(e){if(i===clearTimeout)return clearTimeout(e);if((i===a||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(e);try{i(e)}catch(t){try{return i.call(null,e)}catch(t){return i.call(this,e)}}}(t)}}function m(t,e){this.fun=t,this.array=e}function y(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];f.push(new m(t,e)),1!==f.length||h||u(d)},m.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=y,o.addListener=y,o.once=y,o.off=y,o.removeListener=y,o.removeAllListeners=y,o.emit=y,o.prependListener=y,o.prependOnceListener=y,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],100:[function(t,M,N){(function(R){!function(t){var e="object"==typeof N&&N&&!N.nodeType&&N,r="object"==typeof M&&M&&!M.nodeType&&M,n="object"==typeof R&&R;n.global!==n&&n.window!==n&&n.self!==n||(t=n);var i,o,g=2147483647,v=36,b=1,_=26,s=38,a=700,w=72,x=128,k="-",u=/^xn--/,c=/[^\x20-\x7E]/,f=/[\x2E\u3002\uFF0E\uFF61]/g,h={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},l=v-b,S=Math.floor,E=String.fromCharCode;function A(t){throw new RangeError(h[t])}function p(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function d(t,e){var r=t.split("@"),n="";return 1<r.length&&(n=r[0]+"@",t=r[1]),n+p((t=t.replace(f,".")).split("."),e).join(".")}function C(t){for(var e,r,n=[],i=0,o=t.length;i<o;)55296<=(e=t.charCodeAt(i++))&&e<=56319&&i<o?56320==(64512&(r=t.charCodeAt(i++)))?n.push(((1023&e)<<10)+(1023&r)+65536):(n.push(e),i--):n.push(e);return n}function B(t){return p(t,function(t){var e="";return 65535<t&&(e+=E((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=E(t)}).join("")}function T(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function O(t,e,r){var n=0;for(t=r?S(t/a):t>>1,t+=S(t/e);l*_>>1<t;n+=v)t=S(t/l);return S(n+(l+1)*t/(t+s))}function m(t){var e,r,n,i,o,s,a,u,c,f,h,l=[],p=t.length,d=0,m=x,y=w;for((r=t.lastIndexOf(k))<0&&(r=0),n=0;n<r;++n)128<=t.charCodeAt(n)&&A("not-basic"),l.push(t.charCodeAt(n));for(i=0<r?r+1:0;i<p;){for(o=d,s=1,a=v;p<=i&&A("invalid-input"),h=t.charCodeAt(i++),(v<=(u=h-48<10?h-22:h-65<26?h-65:h-97<26?h-97:v)||u>S((g-d)/s))&&A("overflow"),d+=u*s,!(u<(c=a<=y?b:y+_<=a?_:a-y));a+=v)s>S(g/(f=v-c))&&A("overflow"),s*=f;y=O(d-o,e=l.length+1,0==o),S(d/e)>g-m&&A("overflow"),m+=S(d/e),d%=e,l.splice(d++,0,m)}return B(l)}function y(t){var e,r,n,i,o,s,a,u,c,f,h,l,p,d,m,y=[];for(l=(t=C(t)).length,e=x,o=w,s=r=0;s<l;++s)(h=t[s])<128&&y.push(E(h));for(n=i=y.length,i&&y.push(k);n<l;){for(a=g,s=0;s<l;++s)e<=(h=t[s])&&h<a&&(a=h);for(a-e>S((g-r)/(p=n+1))&&A("overflow"),r+=(a-e)*p,e=a,s=0;s<l;++s)if((h=t[s])<e&&++r>g&&A("overflow"),h==e){for(u=r,c=v;!(u<(f=c<=o?b:o+_<=c?_:c-o));c+=v)m=u-f,d=v-f,y.push(E(T(f+m%d,0))),u=S(m/d);y.push(E(T(u,0))),o=O(r,p,n==i),r=0,++n}++r,++e}return y.join("")}if(i={version:"1.4.1",ucs2:{decode:C,encode:B},decode:m,encode:y,toASCII:function(t){return d(t,function(t){return c.test(t)?"xn--"+y(t):t})},toUnicode:function(t){return d(t,function(t){return u.test(t)?m(t.slice(4).toLowerCase()):t})}},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return i});else if(e&&r)if(M.exports==e)r.exports=i;else for(o in i)i.hasOwnProperty(o)&&(e[o]=i[o]);else t.punycode=i}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],101:[function(t,e,r){"use strict";e.exports=function(t,e,r,n){e=e||"&",r=r||"=";var i={};if("string"!=typeof t||0===t.length)return i;var o=/\+/g;t=t.split(e);var s=1e3;n&&"number"==typeof n.maxKeys&&(s=n.maxKeys);var a,u,c=t.length;0<s&&s<c&&(c=s);for(var f=0;f<c;++f){var h,l,p,d,m=t[f].replace(o,"%20"),y=m.indexOf(r);0<=y?(h=m.substr(0,y),l=m.substr(y+1)):(h=m,l=""),p=decodeURIComponent(h),d=decodeURIComponent(l),a=i,u=p,Object.prototype.hasOwnProperty.call(a,u)?g(i[p])?i[p].push(d):i[p]=[i[p],d]:i[p]=d}return i};var g=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},{}],102:[function(t,e,r){"use strict";var o=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};e.exports=function(r,n,i,t){return n=n||"&",i=i||"=",null===r&&(r=void 0),"object"==typeof r?a(u(r),function(t){var e=encodeURIComponent(o(t))+i;return s(r[t])?a(r[t],function(t){return e+encodeURIComponent(o(t))}).join(n):e+encodeURIComponent(o(r[t]))}).join(n):t?encodeURIComponent(o(t))+i+encodeURIComponent(o(r)):""};var s=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function a(t,e){if(t.map)return t.map(e);for(var r=[],n=0;n<t.length;n++)r.push(e(t[n],n));return r}var u=Object.keys||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.push(r);return e}},{}],103:[function(t,e,r){"use strict";r.decode=r.parse=t("./decode"),r.encode=r.stringify=t("./encode")},{"./decode":101,"./encode":102}],104:[function(t,e,r){"use strict";var n=t("process-nextick-args"),i=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};e.exports=h;var o=t("core-util-is");o.inherits=t("inherits");var s=t("./_stream_readable"),a=t("./_stream_writable");o.inherits(h,s);for(var u=i(a.prototype),c=0;c<u.length;c++){var f=u[c];h.prototype[f]||(h.prototype[f]=a.prototype[f])}function h(t){if(!(this instanceof h))return new h(t);s.call(this,t),a.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",l)}function l(){this.allowHalfOpen||this._writableState.ended||n.nextTick(p,this)}function p(t){t.end()}Object.defineProperty(h.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(h.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),h.prototype._destroy=function(t,e){this.push(null),this.end(),n.nextTick(e,t)}},{"./_stream_readable":106,"./_stream_writable":108,"core-util-is":56,inherits:94,"process-nextick-args":98}],105:[function(t,e,r){"use strict";e.exports=o;var n=t("./_stream_transform"),i=t("core-util-is");function o(t){if(!(this instanceof o))return new o(t);n.call(this,t)}i.inherits=t("inherits"),i.inherits(o,n),o.prototype._transform=function(t,e,r){r(null,t)}},{"./_stream_transform":107,"core-util-is":56,inherits:94}],106:[function(N,I,t){(function(y,t){"use strict";var g=N("process-nextick-args");I.exports=l;var s,v=N("isarray");l.ReadableState=o;N("events").EventEmitter;var b=function(t,e){return t.listeners(e).length},i=N("./internal/streams/stream"),c=N("safe-buffer").Buffer,f=t.Uint8Array||function(){};var e=N("core-util-is");e.inherits=N("inherits");var r=N("util"),_=void 0;_=r&&r.debuglog?r.debuglog("stream"):function(){};var a,u=N("./internal/streams/BufferList"),n=N("./internal/streams/destroy");e.inherits(l,i);var h=["error","close","destroy","pause","resume"];function o(t,e){t=t||{};var r=e instanceof(s=s||N("./_stream_duplex"));this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var n=t.highWaterMark,i=t.readableHighWaterMark,o=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:r&&(i||0===i)?i:o,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new u,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(a||(a=N("string_decoder/").StringDecoder),this.decoder=new a(t.encoding),this.encoding=t.encoding)}function l(t){if(s=s||N("./_stream_duplex"),!(this instanceof l))return new l(t);this._readableState=new o(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),i.call(this)}function p(t,e,r,n,i){var o,s,a,u=t._readableState;null===e?(u.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,x(t)}(t,u)):(i||(o=function(t,e){var r;n=e,c.isBuffer(n)||n instanceof f||"string"==typeof e||void 0===e||t.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));var n;return r}(u,e)),o?t.emit("error",o):u.objectMode||e&&0<e.length?("string"==typeof e||u.objectMode||Object.getPrototypeOf(e)===c.prototype||(s=e,e=c.from(s)),n?u.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):d(t,u,e,!0):u.ended?t.emit("error",new Error("stream.push() after EOF")):(u.reading=!1,u.decoder&&!r?(e=u.decoder.write(e),u.objectMode||0!==e.length?d(t,u,e,!1):S(t,u)):d(t,u,e,!1))):n||(u.reading=!1));return!(a=u).ended&&(a.needReadable||a.length<a.highWaterMark||0===a.length)}function d(t,e,r,n){e.flowing&&0===e.length&&!e.sync?(t.emit("data",r),t.read(0)):(e.length+=e.objectMode?1:r.length,n?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&x(t)),S(t,e)}Object.defineProperty(l.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),l.prototype.destroy=n.destroy,l.prototype._undestroy=n.undestroy,l.prototype._destroy=function(t,e){this.push(null),e(t)},l.prototype.push=function(t,e){var r,n=this._readableState;return n.objectMode?r=!0:"string"==typeof t&&((e=e||n.defaultEncoding)!==n.encoding&&(t=c.from(t,e),e=""),r=!0),p(this,t,e,!1,r)},l.prototype.unshift=function(t){return p(this,t,null,!0,!1)},l.prototype.isPaused=function(){return!1===this._readableState.flowing},l.prototype.setEncoding=function(t){return a||(a=N("string_decoder/").StringDecoder),this._readableState.decoder=new a(t),this._readableState.encoding=t,this};var m=8388608;function w(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=(m<=(r=t)?r=m:(r--,r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,r|=r>>>16,r++),r)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0));var r}function x(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(_("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?g.nextTick(k,t):k(t))}function k(t){_("emit readable"),t.emit("readable"),B(t)}function S(t,e){e.readingMore||(e.readingMore=!0,g.nextTick(E,t,e))}function E(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(_("maybeReadMore read 0"),t.read(0),r!==e.length);)r=e.length;e.readingMore=!1}function A(t){_("readable nexttick read 0"),t.read(0)}function C(t,e){e.reading||(_("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),B(t),e.flowing&&!e.reading&&t.read(0)}function B(t){var e=t._readableState;for(_("flow",e.flowing);e.flowing&&null!==t.read(););}function T(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=function(t,e,r){var n;t<e.head.data.length?(n=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):n=t===e.head.data.length?e.shift():r?function(t,e){var r=e.head,n=1,i=r.data;t-=i.length;for(;r=r.next;){var o=r.data,s=t>o.length?o.length:t;if(s===o.length?i+=o:i+=o.slice(0,t),0===(t-=s)){s===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r).data=o.slice(s);break}++n}return e.length-=n,i}(t,e):function(t,e){var r=c.allocUnsafe(t),n=e.head,i=1;n.data.copy(r),t-=n.data.length;for(;n=n.next;){var o=n.data,s=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,s),0===(t-=s)){s===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n).data=o.slice(s);break}++i}return e.length-=i,r}(t,e);return n}(t,e.buffer,e.decoder),r);var r}function O(t){var e=t._readableState;if(0<e.length)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,g.nextTick(R,e,t))}function R(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function M(t,e){for(var r=0,n=t.length;r<n;r++)if(t[r]===e)return r;return-1}l.prototype.read=function(t){_("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return _("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?O(this):x(this),null;if(0===(t=w(t,e))&&e.ended)return 0===e.length&&O(this),null;var n,i=e.needReadable;return _("need readable",i),(0===e.length||e.length-t<e.highWaterMark)&&_("length less than watermark",i=!0),e.ended||e.reading?_("reading or ended",i=!1):i&&(_("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=w(r,e))),null===(n=0<t?T(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&O(this)),null!==n&&this.emit("data",n),n},l.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},l.prototype.pipe=function(r,t){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=r;break;case 1:i.pipes=[i.pipes,r];break;default:i.pipes.push(r)}i.pipesCount+=1,_("pipe count=%d opts=%j",i.pipesCount,t);var e=(!t||!1!==t.end)&&r!==y.stdout&&r!==y.stderr?s:m;function o(t,e){_("onunpipe"),t===n&&e&&!1===e.hasUnpiped&&(e.hasUnpiped=!0,_("cleanup"),r.removeListener("close",p),r.removeListener("finish",d),r.removeListener("drain",u),r.removeListener("error",l),r.removeListener("unpipe",o),n.removeListener("end",s),n.removeListener("end",m),n.removeListener("data",h),c=!0,!i.awaitDrain||r._writableState&&!r._writableState.needDrain||u())}function s(){_("onend"),r.end()}i.endEmitted?g.nextTick(e):n.once("end",e),r.on("unpipe",o);var a,u=(a=n,function(){var t=a._readableState;_("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&b(a,"data")&&(t.flowing=!0,B(a))});r.on("drain",u);var c=!1;var f=!1;function h(t){_("ondata"),(f=!1)!==r.write(t)||f||((1===i.pipesCount&&i.pipes===r||1<i.pipesCount&&-1!==M(i.pipes,r))&&!c&&(_("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,f=!0),n.pause())}function l(t){_("onerror",t),m(),r.removeListener("error",l),0===b(r,"error")&&r.emit("error",t)}function p(){r.removeListener("finish",d),m()}function d(){_("onfinish"),r.removeListener("close",p),m()}function m(){_("unpipe"),n.unpipe(r)}return n.on("data",h),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?v(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(r,"error",l),r.once("close",p),r.once("finish",d),r.emit("pipe",n),i.flowing||(_("pipe resume"),n.resume()),r},l.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o<i;o++)n[o].emit("unpipe",this,r);return this}var s=M(e.pipes,t);return-1===s||(e.pipes.splice(s,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,r)),this},l.prototype.addListener=l.prototype.on=function(t,e){var r=i.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var n=this._readableState;n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&x(this):g.nextTick(A,this))}return r},l.prototype.resume=function(){var t,e,r=this._readableState;return r.flowing||(_("resume"),r.flowing=!0,t=this,(e=r).resumeScheduled||(e.resumeScheduled=!0,g.nextTick(C,t,e))),this},l.prototype.pause=function(){return _("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(_("pause"),this._readableState.flowing=!1,this.emit("pause")),this},l.prototype.wrap=function(e){var r=this,n=this._readableState,i=!1;for(var t in e.on("end",function(){if(_("wrapped end"),n.decoder&&!n.ended){var t=n.decoder.end();t&&t.length&&r.push(t)}r.push(null)}),e.on("data",function(t){(_("wrapped data"),n.decoder&&(t=n.decoder.write(t)),n.objectMode&&null==t)||(n.objectMode||t&&t.length)&&(r.push(t)||(i=!0,e.pause()))}),e)void 0===this[t]&&"function"==typeof e[t]&&(this[t]=function(t){return function(){return e[t].apply(e,arguments)}}(t));for(var o=0;o<h.length;o++)e.on(h[o],this.emit.bind(this,h[o]));return this._read=function(t){_("wrapped _read",t),i&&(i=!1,e.resume())},this},Object.defineProperty(l.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),l._fromList=T}).call(this,N("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./_stream_duplex":104,"./internal/streams/BufferList":109,"./internal/streams/destroy":110,"./internal/streams/stream":111,_process:99,"core-util-is":56,events:91,inherits:94,isarray:96,"process-nextick-args":98,"safe-buffer":113,"string_decoder/":118,util:51}],107:[function(t,e,r){"use strict";e.exports=o;var n=t("./_stream_duplex"),i=t("core-util-is");function o(t){if(!(this instanceof o))return new o(t);n.call(this,t),this._transformState={afterTransform:function(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit("error",new Error("write callback called multiple times"));r.writechunk=null,(r.writecb=null)!=e&&this.push(e),n(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",s)}function s(){var r=this;"function"==typeof this._flush?this._flush(function(t,e){a(r,t,e)}):a(this,null,null)}function a(t,e,r){if(e)return t.emit("error",e);if(null!=r&&t.push(r),t._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(t._transformState.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}i.inherits=t("inherits"),i.inherits(o,n),o.prototype.push=function(t,e){return this._transformState.needTransform=!1,n.prototype.push.call(this,t,e)},o.prototype._transform=function(t,e,r){throw new Error("_transform() is not implemented")},o.prototype._write=function(t,e,r){var n=this._transformState;if(n.writecb=r,n.writechunk=t,n.writeencoding=e,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},o.prototype._destroy=function(t,e){var r=this;n.prototype._destroy.call(this,t,function(t){e(t),r.emit("close")})}},{"./_stream_duplex":104,"core-util-is":56,inherits:94}],108:[function(k,S,t){(function(t,e,r){"use strict";var g=k("process-nextick-args");function h(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var n=t.entry;t.entry=null;for(;n;){var i=n.callback;e.pendingcb--,i(r),n=n.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}S.exports=f;var a,l=!t.browser&&-1<["v0.10","v0.9."].indexOf(t.version.slice(0,5))?r:g.nextTick;f.WritableState=c;var n=k("core-util-is");n.inherits=k("inherits");var i={deprecate:k("util-deprecate")},o=k("./internal/streams/stream"),v=k("safe-buffer").Buffer,b=e.Uint8Array||function(){};var s,u=k("./internal/streams/destroy");function _(){}function c(t,e){a=a||k("./_stream_duplex"),t=t||{};var r=e instanceof a;this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var n=t.highWaterMark,i=t.writableHighWaterMark,o=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:r&&(i||0===i)?i:o,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var s=(this.destroyed=!1)===t.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,n=r.sync,i=r.writecb;if(h=r,h.writing=!1,h.writecb=null,h.length-=h.writelen,h.writelen=0,e)s=t,a=r,u=n,c=e,f=i,--a.pendingcb,u?(g.nextTick(f,c),g.nextTick(x,s,a),s._writableState.errorEmitted=!0,s.emit("error",c)):(f(c),s._writableState.errorEmitted=!0,s.emit("error",c),x(s,a));else{var o=m(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||d(t,r),n?l(p,t,r,o,i):p(t,r,o,i)}var s,a,u,c,f;var h}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new h(this)}function f(t){if(a=a||k("./_stream_duplex"),!(s.call(f,this)||this instanceof a))return new f(t);this._writableState=new c(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),o.call(this)}function w(t,e,r,n,i,o,s){e.writelen=n,e.writecb=s,e.writing=!0,e.sync=!0,r?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function p(t,e,r,n){var i,o;r||(i=t,0===(o=e).length&&o.needDrain&&(o.needDrain=!1,i.emit("drain"))),e.pendingcb--,n(),x(t,e)}function d(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var n=e.bufferedRequestCount,i=new Array(n),o=e.corkedRequestsFree;o.entry=r;for(var s=0,a=!0;r;)(i[s]=r).isBuf||(a=!1),r=r.next,s+=1;i.allBuffers=a,w(t,e,!0,e.length,i,"",o.finish),e.pendingcb++,e.lastBufferedRequest=null,o.next?(e.corkedRequestsFree=o.next,o.next=null):e.corkedRequestsFree=new h(e),e.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,c=r.encoding,f=r.callback;if(w(t,e,!1,e.objectMode?1:u.length,u,c,f),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function m(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function y(e,r){e._final(function(t){r.pendingcb--,t&&e.emit("error",t),r.prefinished=!0,e.emit("prefinish"),x(e,r)})}function x(t,e){var r,n,i=m(e);return i&&(r=t,(n=e).prefinished||n.finalCalled||("function"==typeof r._final?(n.pendingcb++,n.finalCalled=!0,g.nextTick(y,r,n)):(n.prefinished=!0,r.emit("prefinish"))),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),i}n.inherits(f,o),c.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(c.prototype,"buffer",{get:i.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(s=Function.prototype[Symbol.hasInstance],Object.defineProperty(f,Symbol.hasInstance,{value:function(t){return!!s.call(this,t)||this===f&&(t&&t._writableState instanceof c)}})):s=function(t){return t instanceof this},f.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},f.prototype.write=function(t,e,r){var n,i,o,s,a,u,c,f,h,l,p,d=this._writableState,m=!1,y=!d.objectMode&&(n=t,v.isBuffer(n)||n instanceof b);return y&&!v.isBuffer(t)&&(i=t,t=v.from(i)),"function"==typeof e&&(r=e,e=null),y?e="buffer":e||(e=d.defaultEncoding),"function"!=typeof r&&(r=_),d.ended?(h=this,l=r,p=new Error("write after end"),h.emit("error",p),g.nextTick(l,p)):(y||(o=this,s=d,u=r,f=!(c=!0),null===(a=t)?f=new TypeError("May not write null values to stream"):"string"==typeof a||void 0===a||s.objectMode||(f=new TypeError("Invalid non-string/buffer chunk")),f&&(o.emit("error",f),g.nextTick(u,f),c=!1),c))&&(d.pendingcb++,m=function(t,e,r,n,i,o){if(!r){var s=function(t,e,r){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=v.from(e,r));return e}(e,n,i);n!==s&&(r=!0,i="buffer",n=s)}var a=e.objectMode?1:n.length;e.length+=a;var u=e.length<e.highWaterMark;u||(e.needDrain=!0);if(e.writing||e.corked){var c=e.lastBufferedRequest;e.lastBufferedRequest={chunk:n,encoding:i,isBuf:r,callback:o,next:null},c?c.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else w(t,e,!1,a,n,i,o);return u}(this,d,y,t,e,r)),m},f.prototype.cork=function(){this._writableState.corked++},f.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||d(this,t))},f.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(-1<["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(f.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),f.prototype._write=function(t,e,r){r(new Error("_write() is not implemented"))},f.prototype._writev=null,f.prototype.end=function(t,e,r){var n=this._writableState;"function"==typeof t?(r=t,e=t=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(t,e,r){e.ending=!0,x(t,e),r&&(e.finished?g.nextTick(r):t.once("finish",r));e.ended=!0,t.writable=!1}(this,n,r)},Object.defineProperty(f.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),f.prototype.destroy=u.destroy,f.prototype._undestroy=u.undestroy,f.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,k("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},k("timers").setImmediate)},{"./_stream_duplex":104,"./internal/streams/destroy":110,"./internal/streams/stream":111,_process:99,"core-util-is":56,inherits:94,"process-nextick-args":98,"safe-buffer":113,timers:119,"util-deprecate":124}],109:[function(t,e,r){"use strict";var a=t("safe-buffer").Buffer,n=t("util");e.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};0<this.length?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return a.alloc(0);if(1===this.length)return this.head.data;for(var e,r,n,i=a.allocUnsafe(t>>>0),o=this.head,s=0;o;)e=o.data,r=i,n=s,e.copy(r,n),s+=o.data.length,o=o.next;return i},t}(),n&&n.inspect&&n.inspect.custom&&(e.exports.prototype[n.inspect.custom]=function(){var t=n.inspect({length:this.length});return this.constructor.name+" "+t})},{"safe-buffer":113,util:51}],110:[function(t,e,r){"use strict";var o=t("process-nextick-args");function s(t,e){t.emit("error",e)}e.exports={destroy:function(t,e){var r=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?e?e(t):!t||this._writableState&&this._writableState.errorEmitted||o.nextTick(s,this,t):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?(o.nextTick(s,r,t),r._writableState&&(r._writableState.errorEmitted=!0)):e&&e(t)})),this},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{"process-nextick-args":98}],111:[function(t,e,r){e.exports=t("events").EventEmitter},{events:91}],112:[function(t,e,r){(((r=e.exports=t("./lib/_stream_readable.js")).Stream=r).Readable=r).Writable=t("./lib/_stream_writable.js"),r.Duplex=t("./lib/_stream_duplex.js"),r.Transform=t("./lib/_stream_transform.js"),r.PassThrough=t("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":104,"./lib/_stream_passthrough.js":105,"./lib/_stream_readable.js":106,"./lib/_stream_transform.js":107,"./lib/_stream_writable.js":108}],113:[function(t,e,r){var n=t("buffer"),i=n.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return i(t,e,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=n:(o(n,r),r.Buffer=s),o(i,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return i(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var n=i(t);return void 0!==e?"string"==typeof r?n.fill(e,r):n.fill(e):n.fill(0),n},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n.SlowBuffer(t)}},{buffer:53}],114:[function(r,t,i){(function(u){var c=r("./lib/request"),t=r("./lib/response"),f=r("xtend"),e=r("builtin-status-codes"),h=r("url"),n=i;n.request=function(t,e){t="string"==typeof t?h.parse(t):f(t);var r=-1===u.location.protocol.search(/^https?:$/)?"http:":"",n=t.protocol||r,i=t.hostname||t.host,o=t.port,s=t.path||"/";i&&-1!==i.indexOf(":")&&(i="["+i+"]"),t.url=(i?n+"//"+i:"")+(o?":"+o:"")+s,t.method=(t.method||"GET").toUpperCase(),t.headers=t.headers||{};var a=new c(t);return e&&a.on("response",e),a},n.get=function(t,e){var r=n.request(t,e);return r.end(),r},n.ClientRequest=c,n.IncomingMessage=t.IncomingMessage,n.Agent=function(){},n.Agent.defaultMaxSockets=4,n.globalAgent=new n.Agent,n.STATUS_CODES=e,n.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./lib/request":116,"./lib/response":117,"builtin-status-codes":54,url:121,xtend:131}],115:[function(t,e,a){(function(t){a.fetch=s(t.fetch)&&s(t.ReadableStream),a.writableStream=s(t.WritableStream),a.abortController=s(t.AbortController),a.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),a.blobConstructor=!0}catch(t){}var e;function r(){if(void 0!==e)return e;if(t.XMLHttpRequest){e=new t.XMLHttpRequest;try{e.open("GET",t.XDomainRequest?"/":"https://example.com")}catch(t){e=null}}else e=null;return e}function n(t){var e=r();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}var i=void 0!==t.ArrayBuffer,o=i&&s(t.ArrayBuffer.prototype.slice);function s(t){return"function"==typeof t}a.arraybuffer=a.fetch||i&&n("arraybuffer"),a.msstream=!a.fetch&&o&&n("ms-stream"),a.mozchunkedarraybuffer=!a.fetch&&i&&n("moz-chunked-arraybuffer"),a.overrideMimeType=a.fetch||!!r()&&s(r().overrideMimeType),a.vbArray=s(t.VBArray),e=null}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],116:[function(o,a,t){(function(u,c,f){var h=o("./capability"),t=o("inherits"),e=o("./response"),s=o("readable-stream"),l=o("to-arraybuffer"),r=e.IncomingMessage,p=e.readyStates;var n=a.exports=function(e){var t,r=this;s.Writable.call(r),r._opts=e,r._body=[],r._headers={},e.auth&&r.setHeader("Authorization","Basic "+new f(e.auth).toString("base64")),Object.keys(e.headers).forEach(function(t){r.setHeader(t,e.headers[t])});var n,i,o=!0;if("disable-fetch"===e.mode||"requestTimeout"in e&&!h.abortController)t=!(o=!1);else if("prefer-streaming"===e.mode)t=!1;else if("allow-wrong-content-type"===e.mode)t=!h.overrideMimeType;else{if(e.mode&&"default"!==e.mode&&"prefer-fast"!==e.mode)throw new Error("Invalid value for opts.mode");t=!0}r._mode=(n=t,i=o,h.fetch&&i?"fetch":h.mozchunkedarraybuffer?"moz-chunked-arraybuffer":h.msstream?"ms-stream":h.arraybuffer&&n?"arraybuffer":h.vbArray&&n?"text:vbarray":"text"),r._fetchTimer=null,r.on("finish",function(){r._onFinish()})};t(n,s.Writable),n.prototype.setHeader=function(t,e){var r=t.toLowerCase();-1===i.indexOf(r)&&(this._headers[r]={name:t,value:e})},n.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},n.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},n.prototype._onFinish=function(){var e=this;if(!e._destroyed){var t=e._opts,n=e._headers,r=null;"GET"!==t.method&&"HEAD"!==t.method&&(r=h.arraybuffer?l(f.concat(e._body)):h.blobConstructor?new c.Blob(e._body.map(function(t){return l(t)}),{type:(n["content-type"]||{}).value||""}):f.concat(e._body).toString());var i=[];if(Object.keys(n).forEach(function(t){var e=n[t].name,r=n[t].value;Array.isArray(r)?r.forEach(function(t){i.push([e,t])}):i.push([e,r])}),"fetch"===e._mode){var o=null;if(h.abortController){var s=new AbortController;o=s.signal,e._fetchAbortController=s,"requestTimeout"in t&&0!==t.requestTimeout&&(e._fetchTimer=c.setTimeout(function(){e.emit("requestTimeout"),e._fetchAbortController&&e._fetchAbortController.abort()},t.requestTimeout))}c.fetch(e._opts.url,{method:e._opts.method,headers:i,body:r||void 0,mode:"cors",credentials:t.withCredentials?"include":"same-origin",signal:o}).then(function(t){e._fetchResponse=t,e._connect()},function(t){c.clearTimeout(e._fetchTimer),e._destroyed||e.emit("error",t)})}else{var a=e._xhr=new c.XMLHttpRequest;try{a.open(e._opts.method,e._opts.url,!0)}catch(t){return void u.nextTick(function(){e.emit("error",t)})}"responseType"in a&&(a.responseType=e._mode.split(":")[0]),"withCredentials"in a&&(a.withCredentials=!!t.withCredentials),"text"===e._mode&&"overrideMimeType"in a&&a.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in t&&(a.timeout=t.requestTimeout,a.ontimeout=function(){e.emit("requestTimeout")}),i.forEach(function(t){a.setRequestHeader(t[0],t[1])}),e._response=null,a.onreadystatechange=function(){switch(a.readyState){case p.LOADING:case p.DONE:e._onXHRProgress()}},"moz-chunked-arraybuffer"===e._mode&&(a.onprogress=function(){e._onXHRProgress()}),a.onerror=function(){e._destroyed||e.emit("error",new Error("XHR error"))};try{a.send(r)}catch(t){return void u.nextTick(function(){e.emit("error",t)})}}}},n.prototype._onXHRProgress=function(){(function(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}})(this._xhr)&&!this._destroyed&&(this._response||this._connect(),this._response._onXHRProgress())},n.prototype._connect=function(){var e=this;e._destroyed||(e._response=new r(e._xhr,e._fetchResponse,e._mode,e._fetchTimer),e._response.on("error",function(t){e.emit("error",t)}),e.emit("response",e._response))},n.prototype._write=function(t,e,r){this._body.push(t),r()},n.prototype.abort=n.prototype.destroy=function(){this._destroyed=!0,c.clearTimeout(this._fetchTimer),this._response&&(this._response._destroyed=!0),this._xhr?this._xhr.abort():this._fetchAbortController&&this._fetchAbortController.abort()},n.prototype.end=function(t,e,r){"function"==typeof t&&(r=t,t=void 0),s.Writable.prototype.end.call(this,t,e,r)},n.prototype.flushHeaders=function(){},n.prototype.setTimeout=function(){},n.prototype.setNoDelay=function(){},n.prototype.setSocketKeepAlive=function(){};var i=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]}).call(this,o("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},o("buffer").Buffer)},{"./capability":115,"./response":117,_process:99,buffer:53,inherits:94,"readable-stream":112,"to-arraybuffer":120}],117:[function(r,t,n){(function(c,f,h){var l=r("./capability"),t=r("inherits"),p=r("readable-stream"),a=n.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},e=n.IncomingMessage=function(t,e,r,n){var i=this;if(p.Readable.call(i),i._mode=r,i.headers={},i.rawHeaders=[],i.trailers={},i.rawTrailers=[],i.on("end",function(){c.nextTick(function(){i.emit("close")})}),"fetch"===r){if(i._fetchResponse=e,i.url=e.url,i.statusCode=e.status,i.statusMessage=e.statusText,e.headers.forEach(function(t,e){i.headers[e.toLowerCase()]=t,i.rawHeaders.push(e,t)}),l.writableStream){var o=new WritableStream({write:function(r){return new Promise(function(t,e){i._destroyed?e():i.push(new h(r))?t():i._resumeFetch=t})},close:function(){f.clearTimeout(n),i._destroyed||i.push(null)},abort:function(t){i._destroyed||i.emit("error",t)}});try{return void e.body.pipeTo(o).catch(function(t){f.clearTimeout(n),i._destroyed||i.emit("error",t)})}catch(t){}}var s=e.body.getReader();!function e(){s.read().then(function(t){if(!i._destroyed){if(t.done)return f.clearTimeout(n),void i.push(null);i.push(new h(t.value)),e()}}).catch(function(t){f.clearTimeout(n),i._destroyed||i.emit("error",t)})}()}else{if(i._xhr=t,i._pos=0,i.url=t.responseURL,i.statusCode=t.status,i.statusMessage=t.statusText,t.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var r=e[1].toLowerCase();"set-cookie"===r?(void 0===i.headers[r]&&(i.headers[r]=[]),i.headers[r].push(e[2])):void 0!==i.headers[r]?i.headers[r]+=", "+e[2]:i.headers[r]=e[2],i.rawHeaders.push(e[1],e[2])}}),i._charset="x-user-defined",!l.overrideMimeType){var a=i.rawHeaders["mime-type"];if(a){var u=a.match(/;\s*charset=([^;])(;|$)/);u&&(i._charset=u[1].toLowerCase())}i._charset||(i._charset="utf-8")}}};t(e,p.Readable),e.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},e.prototype._onXHRProgress=function(){var e=this,t=e._xhr,r=null;switch(e._mode){case"text:vbarray":if(t.readyState!==a.DONE)break;try{r=new f.VBArray(t.responseBody).toArray()}catch(t){}if(null!==r){e.push(new h(r));break}case"text":try{r=t.responseText}catch(t){e._mode="text:vbarray";break}if(r.length>e._pos){var n=r.substr(e._pos);if("x-user-defined"===e._charset){for(var i=new h(n.length),o=0;o<n.length;o++)i[o]=255&n.charCodeAt(o);e.push(i)}else e.push(n,e._charset);e._pos=r.length}break;case"arraybuffer":if(t.readyState!==a.DONE||!t.response)break;r=t.response,e.push(new h(new Uint8Array(r)));break;case"moz-chunked-arraybuffer":if(r=t.response,t.readyState!==a.LOADING||!r)break;e.push(new h(new Uint8Array(r)));break;case"ms-stream":if(r=t.response,t.readyState!==a.LOADING)break;var s=new f.MSStreamReader;s.onprogress=function(){s.result.byteLength>e._pos&&(e.push(new h(new Uint8Array(s.result.slice(e._pos)))),e._pos=s.result.byteLength)},s.onload=function(){e.push(null)},s.readAsArrayBuffer(r)}e._xhr.readyState===a.DONE&&"ms-stream"!==e._mode&&e.push(null)}}).call(this,r("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},r("buffer").Buffer)},{"./capability":115,_process:99,buffer:53,inherits:94,"readable-stream":112}],118:[function(t,e,r){"use strict";var n=t("safe-buffer").Buffer,i=n.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(n.isEncoding===i||!i(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=u,this.end=c,e=4;break;case"utf8":this.fillLast=a,e=4;break;case"base64":this.text=f,this.end=h,e=3;break;default:return this.write=l,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(1<t.lastNeed&&1<e.length){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(2<t.lastNeed&&2<e.length&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function u(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(55296<=n&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function f(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function h(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function l(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):""}(r.StringDecoder=o).prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||""},o.prototype.end=function(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e},o.prototype.text=function(t,e){var r=function(t,e,r){var n=e.length-1;if(n<r)return 0;var i=s(e[n]);if(0<=i)return 0<i&&(t.lastNeed=i-1),i;if(--n<r||-2===i)return 0;if(0<=(i=s(e[n])))return 0<i&&(t.lastNeed=i-2),i;if(--n<r||-2===i)return 0;if(0<=(i=s(e[n])))return 0<i&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},{"safe-buffer":113}],119:[function(u,t,c){(function(t,e){var n=u("process/browser.js").nextTick,r=Function.prototype.apply,i=Array.prototype.slice,o={},s=0;function a(t,e){this._id=t,this._clearFn=e}c.setTimeout=function(){return new a(r.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new a(r.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(t){t.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},c.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},c._unrefActive=c.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;0<=e&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},c.setImmediate="function"==typeof t?t:function(t){var e=s++,r=!(arguments.length<2)&&i.call(arguments,1);return o[e]=!0,n(function(){o[e]&&(r?t.apply(null,r):t.call(null),c.clearImmediate(e))}),e},c.clearImmediate="function"==typeof e?e:function(t){delete o[t]}}).call(this,u("timers").setImmediate,u("timers").clearImmediate)},{"process/browser.js":99,timers:119}],120:[function(t,e,r){var i=t("buffer").Buffer;e.exports=function(t){if(t instanceof Uint8Array){if(0===t.byteOffset&&t.byteLength===t.buffer.byteLength)return t.buffer;if("function"==typeof t.buffer.slice)return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}if(i.isBuffer(t)){for(var e=new Uint8Array(t.length),r=t.length,n=0;n<r;n++)e[n]=t[n];return e.buffer}throw new Error("Argument must be a Buffer")}},{buffer:53}],121:[function(t,e,r){"use strict";var N=t("punycode"),I=t("./util");function C(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}r.parse=o,r.resolve=function(t,e){return o(t,!1,!0).resolve(e)},r.resolveObject=function(t,e){return t?o(t,!1,!0).resolveObject(e):e},r.format=function(t){I.isString(t)&&(t=o(t));return t instanceof C?t.format():C.prototype.format.call(t)},r.Url=C;var P=/^([a-z0-9.+-]+:)/i,n=/:[0-9]*$/,j=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,i=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),F=["'"].concat(i),D=["%","/","?",";","#"].concat(F),H=["/","?","#"],L=/^[+a-z0-9A-Z_-]{0,63}$/,q=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,U={javascript:!0,"javascript:":!0},z={javascript:!0,"javascript:":!0},W={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},G=t("querystring");function o(t,e,r){if(t&&I.isObject(t)&&t instanceof C)return t;var n=new C;return n.parse(t,e,r),n}C.prototype.parse=function(t,e,r){if(!I.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var n=t.indexOf("?"),i=-1!==n&&n<t.indexOf("#")?"?":"#",o=t.split(i);o[0]=o[0].replace(/\\/g,"/");var s=t=o.join(i);if(s=s.trim(),!r&&1===t.split("#").length){var a=j.exec(s);if(a)return this.path=s,this.href=s,this.pathname=a[1],a[2]?(this.search=a[2],this.query=e?G.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var u=P.exec(s);if(u){var c=(u=u[0]).toLowerCase();this.protocol=c,s=s.substr(u.length)}if(r||u||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var f="//"===s.substr(0,2);!f||u&&z[u]||(s=s.substr(2),this.slashes=!0)}if(!z[u]&&(f||u&&!W[u])){for(var h,l,p=-1,d=0;d<H.length;d++){-1!==(m=s.indexOf(H[d]))&&(-1===p||m<p)&&(p=m)}-1!==(l=-1===p?s.lastIndexOf("@"):s.lastIndexOf("@",p))&&(h=s.slice(0,l),s=s.slice(l+1),this.auth=decodeURIComponent(h)),p=-1;for(d=0;d<D.length;d++){var m;-1!==(m=s.indexOf(D[d]))&&(-1===p||m<p)&&(p=m)}-1===p&&(p=s.length),this.host=s.slice(0,p),s=s.slice(p),this.parseHost(),this.hostname=this.hostname||"";var y="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!y)for(var g=this.hostname.split(/\./),v=(d=0,g.length);d<v;d++){var b=g[d];if(b&&!b.match(L)){for(var _="",w=0,x=b.length;w<x;w++)127<b.charCodeAt(w)?_+="x":_+=b[w];if(!_.match(L)){var k=g.slice(0,d),S=g.slice(d+1),E=b.match(q);E&&(k.push(E[1]),S.unshift(E[2])),S.length&&(s="/"+S.join(".")+s),this.hostname=k.join(".");break}}}255<this.hostname.length?this.hostname="":this.hostname=this.hostname.toLowerCase(),y||(this.hostname=N.toASCII(this.hostname));var A=this.port?":"+this.port:"",C=this.hostname||"";this.host=C+A,this.href+=this.host,y&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!U[c])for(d=0,v=F.length;d<v;d++){var B=F[d];if(-1!==s.indexOf(B)){var T=encodeURIComponent(B);T===B&&(T=escape(B)),s=s.split(B).join(T)}}var O=s.indexOf("#");-1!==O&&(this.hash=s.substr(O),s=s.slice(0,O));var R=s.indexOf("?");if(-1!==R?(this.search=s.substr(R),this.query=s.substr(R+1),e&&(this.query=G.parse(this.query)),s=s.slice(0,R)):e&&(this.search="",this.query={}),s&&(this.pathname=s),W[c]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){A=this.pathname||"";var M=this.search||"";this.path=A+M}return this.href=this.format(),this},C.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",r=this.pathname||"",n=this.hash||"",i=!1,o="";this.host?i=t+this.host:this.hostname&&(i=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&I.isObject(this.query)&&Object.keys(this.query).length&&(o=G.stringify(this.query));var s=this.search||o&&"?"+o||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||W[e])&&!1!==i?(i="//"+(i||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):i||(i=""),n&&"#"!==n.charAt(0)&&(n="#"+n),s&&"?"!==s.charAt(0)&&(s="?"+s),e+i+(r=r.replace(/[?#]/g,function(t){return encodeURIComponent(t)}))+(s=s.replace("#","%23"))+n},C.prototype.resolve=function(t){return this.resolveObject(o(t,!1,!0)).format()},C.prototype.resolveObject=function(t){if(I.isString(t)){var e=new C;e.parse(t,!1,!0),t=e}for(var r=new C,n=Object.keys(this),i=0;i<n.length;i++){var o=n[i];r[o]=this[o]}if(r.hash=t.hash,""===t.href)return r.href=r.format(),r;if(t.slashes&&!t.protocol){for(var s=Object.keys(t),a=0;a<s.length;a++){var u=s[a];"protocol"!==u&&(r[u]=t[u])}return W[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(t.protocol&&t.protocol!==r.protocol){if(!W[t.protocol]){for(var c=Object.keys(t),f=0;f<c.length;f++){var h=c[f];r[h]=t[h]}return r.href=r.format(),r}if(r.protocol=t.protocol,t.host||z[t.protocol])r.pathname=t.pathname;else{for(var l=(t.pathname||"").split("/");l.length&&!(t.host=l.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==l[0]&&l.unshift(""),l.length<2&&l.unshift(""),r.pathname=l.join("/")}if(r.search=t.search,r.query=t.query,r.host=t.host||"",r.auth=t.auth,r.hostname=t.hostname||t.host,r.port=t.port,r.pathname||r.search){var p=r.pathname||"",d=r.search||"";r.path=p+d}return r.slashes=r.slashes||t.slashes,r.href=r.format(),r}var m=r.pathname&&"/"===r.pathname.charAt(0),y=t.host||t.pathname&&"/"===t.pathname.charAt(0),g=y||m||r.host&&t.pathname,v=g,b=r.pathname&&r.pathname.split("/")||[],_=(l=t.pathname&&t.pathname.split("/")||[],r.protocol&&!W[r.protocol]);if(_&&(r.hostname="",r.port=null,r.host&&(""===b[0]?b[0]=r.host:b.unshift(r.host)),r.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===l[0]?l[0]=t.host:l.unshift(t.host)),t.host=null),g=g&&(""===l[0]||""===b[0])),y)r.host=t.host||""===t.host?t.host:r.host,r.hostname=t.hostname||""===t.hostname?t.hostname:r.hostname,r.search=t.search,r.query=t.query,b=l;else if(l.length)b||(b=[]),b.pop(),b=b.concat(l),r.search=t.search,r.query=t.query;else if(!I.isNullOrUndefined(t.search)){if(_)r.hostname=r.host=b.shift(),(E=!!(r.host&&0<r.host.indexOf("@"))&&r.host.split("@"))&&(r.auth=E.shift(),r.host=r.hostname=E.shift());return r.search=t.search,r.query=t.query,I.isNull(r.pathname)&&I.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!b.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var w=b.slice(-1)[0],x=(r.host||t.host||1<b.length)&&("."===w||".."===w)||""===w,k=0,S=b.length;0<=S;S--)"."===(w=b[S])?b.splice(S,1):".."===w?(b.splice(S,1),k++):k&&(b.splice(S,1),k--);if(!g&&!v)for(;k--;k)b.unshift("..");!g||""===b[0]||b[0]&&"/"===b[0].charAt(0)||b.unshift(""),x&&"/"!==b.join("/").substr(-1)&&b.push("");var E,A=""===b[0]||b[0]&&"/"===b[0].charAt(0);_&&(r.hostname=r.host=A?"":b.length?b.shift():"",(E=!!(r.host&&0<r.host.indexOf("@"))&&r.host.split("@"))&&(r.auth=E.shift(),r.host=r.hostname=E.shift()));return(g=g||r.host&&b.length)&&!A&&b.unshift(""),b.length?r.pathname=b.join("/"):(r.pathname=null,r.path=null),I.isNull(r.pathname)&&I.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},C.prototype.parseHost=function(){var t=this.host,e=n.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},{"./util":122,punycode:100,querystring:103}],122:[function(t,e,r){"use strict";e.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},{}],123:[function(t,v,b){(function(g){!function(t){var e="object"==typeof b&&b,r="object"==typeof v&&v&&v.exports==e&&v,n="object"==typeof g&&g;n.global!==n&&n.window!==n||(t=n);var i,o,s,a=String.fromCharCode;function u(t){for(var e,r,n=[],i=0,o=t.length;i<o;)55296<=(e=t.charCodeAt(i++))&&e<=56319&&i<o?56320==(64512&(r=t.charCodeAt(i++)))?n.push(((1023&e)<<10)+(1023&r)+65536):(n.push(e),i--):n.push(e);return n}function c(t){if(55296<=t&&t<=57343)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value")}function f(t,e){return a(t>>e&63|128)}function h(t){if(0==(4294967168&t))return a(t);var e="";return 0==(4294965248&t)?e=a(t>>6&31|192):0==(4294901760&t)?(c(t),e=a(t>>12&15|224),e+=f(t,6)):0==(4292870144&t)&&(e=a(t>>18&7|240),e+=f(t,12),e+=f(t,6)),e+=a(63&t|128)}function l(){if(o<=s)throw Error("Invalid byte index");var t=255&i[s];if(s++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function p(){var t,e;if(o<s)throw Error("Invalid byte index");if(s==o)return!1;if(t=255&i[s],s++,0==(128&t))return t;if(192==(224&t)){if(128<=(e=(31&t)<<6|l()))return e;throw Error("Invalid continuation byte")}if(224==(240&t)){if(2048<=(e=(15&t)<<12|l()<<6|l()))return c(e),e;throw Error("Invalid continuation byte")}if(240==(248&t)&&65536<=(e=(7&t)<<18|l()<<12|l()<<6|l())&&e<=1114111)return e;throw Error("Invalid UTF-8 detected")}var d={version:"2.1.2",encode:function(t){for(var e=u(t),r=e.length,n=-1,i="";++n<r;)i+=h(e[n]);return i},decode:function(t){i=u(t),o=i.length,s=0;for(var e,r=[];!1!==(e=p());)r.push(e);return function(t){for(var e,r=t.length,n=-1,i="";++n<r;)65535<(e=t[n])&&(i+=a((e-=65536)>>>10&1023|55296),e=56320|1023&e),i+=a(e);return i}(r)}};if("function"==typeof define&&"object"==typeof define.amd&&define.amd)define(function(){return d});else if(e&&!e.nodeType)if(r)r.exports=d;else{var m={}.hasOwnProperty;for(var y in d)m.call(d,y)&&(e[y]=d[y])}else t.utf8=d}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],124:[function(t,e,r){(function(r){function n(t){try{if(!r.localStorage)return!1}catch(t){return!1}var e=r.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}e.exports=function(t,e){if(n("noDeprecation"))return t;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(e);n("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],125:[function(t,e,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(r,"__esModule",{value:!0});var o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(Error);r.SecurityError=o;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(Error);r.InvalidStateError=s;var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(Error);r.NetworkError=a;var u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(Error);r.SyntaxError=u},{}],126:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),function(t){for(var e in t)r.hasOwnProperty(e)||(r[e]=t[e])}(t("./xml-http-request"));var n=t("./xml-http-request-event-target");r.XMLHttpRequestEventTarget=n.XMLHttpRequestEventTarget},{"./xml-http-request":130,"./xml-http-request-event-target":128}],127:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=function(t){this.type=t,this.bubbles=!1,this.cancelable=!1,this.loaded=0,this.lengthComputable=!1,this.total=0};r.ProgressEvent=n},{}],128:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function t(){this.listeners={}}return t.prototype.addEventListener=function(t,e){t=t.toLowerCase(),this.listeners[t]=this.listeners[t]||[],this.listeners[t].push(e.handleEvent||e)},t.prototype.removeEventListener=function(t,e){if(t=t.toLowerCase(),this.listeners[t]){var r=this.listeners[t].indexOf(e.handleEvent||e);r<0||this.listeners[t].splice(r,1)}},t.prototype.dispatchEvent=function(t){var e=t.type.toLowerCase();if((t.target=this).listeners[e])for(var r=0,n=this.listeners[e];r<n.length;r++){n[r].call(this,t)}var i=this["on"+e];return i&&i.call(this,t),!0},t}();r.XMLHttpRequestEventTarget=n},{}],129:[function(e,t,i){(function(o){"use strict";var n,r=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(i,"__esModule",{value:!0});var t=function(e){function t(){var t=e.call(this)||this;return t._contentType=null,t._body=null,t._reset(),t}return r(t,e),t.prototype._reset=function(){this._contentType=null,this._body=null},t.prototype._setData=function(t){if(null!=t)if("string"==typeof t)0!==t.length&&(this._contentType="text/plain;charset=UTF-8"),this._body=new o(t,"utf-8");else if(o.isBuffer(t))this._body=t;else if(t instanceof ArrayBuffer){for(var e=new o(t.byteLength),r=new Uint8Array(t),n=0;n<t.byteLength;n++)e[n]=r[n];this._body=e}else{if(!(t.buffer&&t.buffer instanceof ArrayBuffer))throw new Error("Unsupported send() data "+t);e=new o(t.byteLength);var i=t.byteOffset;for(r=new Uint8Array(t.buffer),n=0;n<t.byteLength;n++)e[n]=r[n+i];this._body=e}},t.prototype._finalizeHeaders=function(t,e){this._contentType&&!e["content-type"]&&(t["Content-Type"]=this._contentType),this._body&&(t["Content-Length"]=this._body.length.toString())},t.prototype._startUpload=function(t){this._body&&t.write(this._body),t.end()},t}(e("./xml-http-request-event-target").XMLHttpRequestEventTarget);i.XMLHttpRequestUpload=t}).call(this,e("buffer").Buffer)},{"./xml-http-request-event-target":128,buffer:53}],130:[function(m,t,y){(function(n,i){"use strict";var o,t=this&&this.__extends||(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},function(t,e){function r(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),e=this&&this.__assign||Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var i in e=arguments[r])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t};Object.defineProperty(y,"__esModule",{value:!0});var a=m("http"),u=m("https"),c=m("os"),f=m("url"),h=m("./progress-event"),l=m("./errors"),r=m("./xml-http-request-event-target"),p=m("./xml-http-request-upload"),d=m("cookiejar"),s=function(r){function s(t){void 0===t&&(t={});var e=r.call(this)||this;return e.UNSENT=s.UNSENT,e.OPENED=s.OPENED,e.HEADERS_RECEIVED=s.HEADERS_RECEIVED,e.LOADING=s.LOADING,e.DONE=s.DONE,e.onreadystatechange=null,e.readyState=s.UNSENT,e.response=null,e.responseText="",e.responseType="",e.status=0,e.statusText="",e.timeout=0,e.upload=new p.XMLHttpRequestUpload,e.responseUrl="",e.withCredentials=!1,e._method=null,e._url=null,e._sync=!1,e._headers={},e._loweredHeaders={},e._mimeOverride=null,e._request=null,e._response=null,e._responseParts=null,e._responseHeaders=null,e._aborting=null,e._error=null,e._loadedBytes=0,e._totalBytes=0,e._lengthComputable=!1,e._restrictedMethods={CONNECT:!0,TRACE:!0,TRACK:!0},e._restrictedHeaders={"accept-charset":!0,"accept-encoding":!0,"access-control-request-headers":!0,"access-control-request-method":!0,connection:!0,"content-length":!0,cookie:!0,cookie2:!0,date:!0,dnt:!0,expect:!0,host:!0,"keep-alive":!0,origin:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,via:!0},e._privateHeaders={"set-cookie":!0,"set-cookie2":!0},e._userAgent="Mozilla/5.0 ("+c.type()+" "+c.arch()+") node.js/"+n.versions.node+" v8/"+n.versions.v8,e._anonymous=t.anon||!1,e}return t(s,r),s.prototype.open=function(t,e,r,n,i){if(void 0===r&&(r=!0),t=t.toUpperCase(),this._restrictedMethods[t])throw new s.SecurityError("HTTP method "+t+" is not allowed in XHR");var o=this._parseUrl(e,n,i);this.readyState===s.HEADERS_RECEIVED||this.readyState,this._method=t,this._url=o,this._sync=!r,this._headers={},this._loweredHeaders={},this._mimeOverride=null,this._setReadyState(s.OPENED),this._request=null,this._response=null,this.status=0,this.statusText="",this._responseParts=[],this._responseHeaders=null,this._loadedBytes=0,this._totalBytes=0,this._lengthComputable=!1},s.prototype.setRequestHeader=function(t,e){if(this.readyState!==s.OPENED)throw new s.InvalidStateError("XHR readyState must be OPENED");var r=t.toLowerCase();this._restrictedHeaders[r]||/^sec-/.test(r)||/^proxy-/.test(r)?console.warn('Refused to set unsafe header "'+t+'"'):(e=e.toString(),null!=this._loweredHeaders[r]?(t=this._loweredHeaders[r],this._headers[t]=this._headers[t]+", "+e):(this._loweredHeaders[r]=t,this._headers[t]=e))},s.prototype.send=function(t){if(this.readyState!==s.OPENED)throw new s.InvalidStateError("XHR readyState must be OPENED");if(this._request)throw new s.InvalidStateError("send() already called");switch(this._url.protocol){case"file:":return this._sendFile(t);case"http:":case"https:":return this._sendHttp(t);default:throw new s.NetworkError("Unsupported protocol "+this._url.protocol)}},s.prototype.abort=function(){null!=this._request&&(this._request.abort(),this._setError(),this._dispatchProgress("abort"),this._dispatchProgress("loadend"))},s.prototype.getResponseHeader=function(t){if(null==this._responseHeaders||null==t)return null;var e=t.toLowerCase();return this._responseHeaders.hasOwnProperty(e)?this._responseHeaders[t.toLowerCase()]:null},s.prototype.getAllResponseHeaders=function(){var e=this;return null==this._responseHeaders?"":Object.keys(this._responseHeaders).map(function(t){return t+": "+e._responseHeaders[t]}).join("\r\n")},s.prototype.overrideMimeType=function(t){if(this.readyState===s.LOADING||this.readyState===s.DONE)throw new s.InvalidStateError("overrideMimeType() not allowed in LOADING or DONE");this._mimeOverride=t.toLowerCase()},s.prototype.nodejsSet=function(t){if(this.nodejsHttpAgent=t.httpAgent||this.nodejsHttpAgent,this.nodejsHttpsAgent=t.httpsAgent||this.nodejsHttpsAgent,t.hasOwnProperty("baseUrl")){if(null!=t.baseUrl)if(!f.parse(t.baseUrl,!1,!0).protocol)throw new s.SyntaxError("baseUrl must be an absolute URL");this.nodejsBaseUrl=t.baseUrl}},s.nodejsSet=function(t){s.prototype.nodejsSet(t)},s.prototype._setReadyState=function(t){this.readyState=t,this.dispatchEvent(new h.ProgressEvent("readystatechange"))},s.prototype._sendFile=function(t){throw new Error("Protocol file: not implemented")},s.prototype._sendHttp=function(t){if(this._sync)throw new Error("Synchronous XHR processing not implemented");!t||"GET"!==this._method&&"HEAD"!==this._method?t=t||"":(console.warn("Discarding entity body for "+this._method+" requests"),t=null),this.upload._setData(t),this._finalizeHeaders(),this._sendHxxpRequest()},s.prototype._sendHxxpRequest=function(){var e=this;if(this.withCredentials){var t=s.cookieJar.getCookies(d.CookieAccessInfo(this._url.hostname,this._url.pathname,"https:"===this._url.protocol)).toValueString();this._headers.cookie=this._headers.cookie2=t}var r="http:"===this._url.protocol?[a,this.nodejsHttpAgent]:[u,this.nodejsHttpsAgent],n=r[0],i=r[1],o=n.request.bind(n)({hostname:this._url.hostname,port:+this._url.port,path:this._url.path,auth:this._url.auth,method:this._method,headers:this._headers,agent:i});this._request=o,this.timeout&&o.setTimeout(this.timeout,function(){return e._onHttpTimeout(o)}),o.on("response",function(t){return e._onHttpResponse(o,t)}),o.on("error",function(t){return e._onHttpRequestError(o,t)}),this.upload._startUpload(o),this._request===o&&this._dispatchProgress("loadstart")},s.prototype._finalizeHeaders=function(){this._headers=e({},this._headers,{Connection:"keep-alive",Host:this._url.host,"User-Agent":this._userAgent},this._anonymous?{Referer:"about:blank"}:{}),this.upload._finalizeHeaders(this._headers,this._loweredHeaders)},s.prototype._onHttpResponse=function(t,e){var r=this;if(this._request===t){if(this.withCredentials&&(e.headers["set-cookie"]||e.headers["set-cookie2"])&&s.cookieJar.setCookies(e.headers["set-cookie"]||e.headers["set-cookie2"]),0<=[301,302,303,307,308].indexOf(e.statusCode))return this._url=this._parseUrl(e.headers.location),this._method="GET",this._loweredHeaders["content-type"]&&(delete this._headers[this._loweredHeaders["content-type"]],delete this._loweredHeaders["content-type"]),null!=this._headers["Content-Type"]&&delete this._headers["Content-Type"],delete this._headers["Content-Length"],this.upload._reset(),this._finalizeHeaders(),void this._sendHxxpRequest();this._response=e,this._response.on("data",function(t){return r._onHttpResponseData(e,t)}),this._response.on("end",function(){return r._onHttpResponseEnd(e)}),this._response.on("close",function(){return r._onHttpResponseClose(e)}),this.responseUrl=this._url.href.split("#")[0],this.status=e.statusCode,this.statusText=a.STATUS_CODES[this.status],this._parseResponseHeaders(e);var n=this._responseHeaders["content-length"]||"";this._totalBytes=+n,this._lengthComputable=!!n,this._setReadyState(s.HEADERS_RECEIVED)}},s.prototype._onHttpResponseData=function(t,e){this._response===t&&(this._responseParts.push(new i(e)),this._loadedBytes+=e.length,this.readyState!==s.LOADING&&this._setReadyState(s.LOADING),this._dispatchProgress("progress"))},s.prototype._onHttpResponseEnd=function(t){this._response===t&&(this._parseResponse(),this._request=null,this._response=null,this._setReadyState(s.DONE),this._dispatchProgress("load"),this._dispatchProgress("loadend"))},s.prototype._onHttpResponseClose=function(t){if(this._response===t){var e=this._request;this._setError(),e.abort(),this._setReadyState(s.DONE),this._dispatchProgress("error"),this._dispatchProgress("loadend")}},s.prototype._onHttpTimeout=function(t){this._request===t&&(this._setError(),t.abort(),this._setReadyState(s.DONE),this._dispatchProgress("timeout"),this._dispatchProgress("loadend"))},s.prototype._onHttpRequestError=function(t,e){this._request===t&&(this._setError(),t.abort(),this._setReadyState(s.DONE),this._dispatchProgress("error"),this._dispatchProgress("loadend"))},s.prototype._dispatchProgress=function(t){var e=new s.ProgressEvent(t);e.lengthComputable=this._lengthComputable,e.loaded=this._loadedBytes,e.total=this._totalBytes,this.dispatchEvent(e)},s.prototype._setError=function(){this._request=null,this._response=null,this._responseHeaders=null,this._responseParts=null},s.prototype._parseUrl=function(t,e,r){var n=null==this.nodejsBaseUrl?t:f.resolve(this.nodejsBaseUrl,t),i=f.parse(n,!1,!0);i.hash=null;var o=(i.auth||"").split(":"),s=o[0],a=o[1];return(s||a||e||r)&&(i.auth=(e||s||"")+":"+(r||a||"")),i},s.prototype._parseResponseHeaders=function(t){for(var e in this._responseHeaders={},t.headers){var r=e.toLowerCase();this._privateHeaders[r]||(this._responseHeaders[r]=t.headers[e])}null!=this._mimeOverride&&(this._responseHeaders["content-type"]=this._mimeOverride)},s.prototype._parseResponse=function(){var e=i.concat(this._responseParts);switch(this._responseParts=null,this.responseType){case"json":this.responseText=null;try{this.response=JSON.parse(e.toString("utf-8"))}catch(t){this.response=null}return;case"buffer":return this.responseText=null,void(this.response=e);case"arraybuffer":this.responseText=null;for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),n=0;n<e.length;n++)r[n]=e[n];return void(this.response=t);case"text":default:try{this.responseText=e.toString(this._parseResponseEncoding())}catch(t){this.responseText=e.toString("binary")}this.response=this.responseText}},s.prototype._parseResponseEncoding=function(){return/;\s*charset=(.*)$/.exec(this._responseHeaders["content-type"]||"")[1]||"utf-8"},s.ProgressEvent=h.ProgressEvent,s.InvalidStateError=l.InvalidStateError,s.NetworkError=l.NetworkError,s.SecurityError=l.SecurityError,s.SyntaxError=l.SyntaxError,s.XMLHttpRequestUpload=p.XMLHttpRequestUpload,s.UNSENT=0,s.OPENED=1,s.HEADERS_RECEIVED=2,s.LOADING=3,s.DONE=4,s.cookieJar=d.CookieJar(),s}(r.XMLHttpRequestEventTarget);(y.XMLHttpRequest=s).prototype.nodejsHttpAgent=a.globalAgent,s.prototype.nodejsHttpsAgent=u.globalAgent,s.prototype.nodejsBaseUrl=null}).call(this,m("_process"),m("buffer").Buffer)},{"./errors":125,"./progress-event":127,"./xml-http-request-event-target":128,"./xml-http-request-upload":129,_process:99,buffer:53,cookiejar:55,http:114,https:92,os:97,url:121}],131:[function(t,e,r){e.exports=function(){for(var t={},e=0;e<arguments.length;e++){var r=arguments[e];for(var n in r)i.call(r,n)&&(t[n]=r[n])}return t};var i=Object.prototype.hasOwnProperty},{}],"bignumber.js":[function(r,n,t){!function(t){"use strict";var e,I,P,j=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,F=Math.ceil,D=Math.floor,H=" not a boolean or binary digit",L="rounding mode",q="number type has more than 15 significant digits",U="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_",z=1e14,W=14,o=9007199254740991,G=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],X=1e7,J=1e9;function K(t){var e=0|t;return 0<t||t===e?e:e-1}function V(t){for(var e,r,n=1,i=t.length,o=t[0]+"";n<i;){for(e=t[n++]+"",r=W-e.length;r--;e="0"+e);o+=e}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function $(t,e){var r,n,i=t.c,o=e.c,s=t.s,a=e.s,u=t.e,c=e.e;if(!s||!a)return null;if(r=i&&!i[0],n=o&&!o[0],r||n)return r?n?0:-a:s;if(s!=a)return s;if(r=s<0,n=u==c,!i||!o)return n?0:!i^r?1:-1;if(!n)return c<u^r?1:-1;for(a=(u=i.length)<(c=o.length)?u:c,s=0;s<a;s++)if(i[s]!=o[s])return i[s]>o[s]^r?1:-1;return u==c?0:c<u^r?1:-1}function Z(t,e,r){return(t=rt(t))>=e&&t<=r}function Y(t){return"[object Array]"==Object.prototype.toString.call(t)}function Q(t,e,r){for(var n,i,o=[0],s=0,a=t.length;s<a;){for(i=o.length;i--;o[i]*=e);for(o[n=0]+=U.indexOf(t.charAt(s++));n<o.length;n++)o[n]>r-1&&(null==o[n+1]&&(o[n+1]=0),o[n+1]+=o[n]/r|0,o[n]%=r)}return o.reverse()}function tt(t,e){return(1<t.length?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function et(t,e){var r,n;if(e<0){for(n="0.";++e;n+="0");t=n+t}else if(++e>(r=t.length)){for(n="0",e-=r;--e;n+="0");t+=n}else e<r&&(t=t.slice(0,e)+"."+t.slice(e));return t}function rt(t){return(t=parseFloat(t))<0?F(t):D(t)}if(e=function t(e){var m,r,c,s,a,u,f,h,b=0,n=B.prototype,y=new B(1),d=20,g=4,l=-7,p=21,v=-1e7,_=1e7,w=!0,x=O,k=!1,S=1,E=100,A={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0};function B(t,e){var r,n,i,o,s,a,u=this;if(!(u instanceof B))return w&&M(26,"constructor call without new",t),new B(t,e);if(null!=e&&x(e,2,64,b,"base")){if(a=t+"",10==(e|=0))return N(u=new B(t instanceof B?t:a),d+u.e+1,g);if((o="number"==typeof t)&&0*t!=0||!new RegExp("^-?"+(r="["+U.slice(0,e)+"]+")+"(?:\\."+r+")?$",e<37?"i":"").test(a))return P(u,a,o,e);o?(u.s=1/t<0?(a=a.slice(1),-1):1,w&&15<a.replace(/^0\.0*|\./,"").length&&M(b,q,t),o=!1):u.s=45===a.charCodeAt(0)?(a=a.slice(1),-1):1,a=C(a,10,e,u.s)}else{if(t instanceof B)return u.s=t.s,u.e=t.e,u.c=(t=t.c)?t.slice():t,void(b=0);if((o="number"==typeof t)&&0*t==0){if(u.s=1/t<0?(t=-t,-1):1,t===~~t){for(n=0,i=t;10<=i;i/=10,n++);return u.e=n,u.c=[t],void(b=0)}a=t+""}else{if(!j.test(a=t+""))return P(u,a,o);u.s=45===a.charCodeAt(0)?(a=a.slice(1),-1):1}}for(-1<(n=a.indexOf("."))&&(a=a.replace(".","")),0<(i=a.search(/e/i))?(n<0&&(n=i),n+=+a.slice(i+1),a=a.substring(0,i)):n<0&&(n=a.length),i=0;48===a.charCodeAt(i);i++);for(s=a.length;48===a.charCodeAt(--s););if(a=a.slice(i,s+1))if(s=a.length,o&&w&&15<s&&M(b,q,u.s*t),_<(n=n-i-1))u.c=u.e=null;else if(n<v)u.c=[u.e=0];else{if(u.e=n,u.c=[],i=(n+1)%W,n<0&&(i+=W),i<s){for(i&&u.c.push(+a.slice(0,i)),s-=W;i<s;)u.c.push(+a.slice(i,i+=W));a=a.slice(i),i=W-a.length}else i-=s;for(;i--;a+="0");u.c.push(+a)}else u.c=[u.e=0];b=0}function C(t,e,r,n){var i,o,s,a,u,c,f,h=t.indexOf("."),l=d,p=g;for(r<37&&(t=t.toLowerCase()),0<=h&&(s=E,E=0,t=t.replace(".",""),u=(f=new B(r)).pow(t.length-h),E=s,f.c=Q(et(V(u.c),u.e),10,e),f.e=f.c.length),o=s=(c=Q(t,r,e)).length;0==c[--s];c.pop());if(!c[0])return"0";if(h<0?--o:(u.c=c,u.e=o,u.s=n,c=(u=m(u,f,l,p,e)).c,a=u.r,o=u.e),h=c[i=o+l+1],s=e/2,a=a||i<0||null!=c[i+1],a=p<4?(null!=h||a)&&(0==p||p==(u.s<0?3:2)):s<h||h==s&&(4==p||a||6==p&&1&c[i-1]||p==(u.s<0?8:7)),i<1||!c[0])t=a?et("1",-l):"0";else{if(c.length=i,a)for(--e;++c[--i]>e;)c[i]=0,i||(++o,c.unshift(1));for(s=c.length;!c[--s];);for(h=0,t="";h<=s;t+=U.charAt(c[h++]));t=et(t,o)}return t}function T(t,e,r,n){var i,o,s,a,u;if(r=null!=r&&x(r,0,8,n,L)?0|r:g,!t.c)return t.toString();if(i=t.c[0],s=t.e,null==e)u=V(t.c),u=19==n||24==n&&s<=l?tt(u,s):et(u,s);else if(o=(t=N(new B(t),e,r)).e,a=(u=V(t.c)).length,19==n||24==n&&(e<=o||o<=l)){for(;a<e;u+="0",a++);u=tt(u,o)}else if(e-=s,u=et(u,o),a<o+1){if(0<--e)for(u+=".";e--;u+="0");}else if(0<(e+=o-a))for(o+1==a&&(u+=".");e--;u+="0");return t.s<0&&i?"-"+u:u}function i(t,e){var r,n,i=0;for(Y(t[0])&&(t=t[0]),r=new B(t[0]);++i<t.length;){if(!(n=new B(t[i])).s){r=n;break}e.call(r,n)&&(r=n)}return r}function O(t,e,r,n,i){return(t<e||r<t||t!=rt(t))&&M(n,(i||"decimal places")+(t<e||r<t?" out of range":" not an integer"),t),!0}function R(t,e,r){for(var n=1,i=e.length;!e[--i];e.pop());for(i=e[0];10<=i;i/=10,n++);return(r=n+r*W-1)>_?t.c=t.e=null:r<v?t.c=[t.e=0]:(t.e=r,t.c=e),t}function M(t,e,r){var n=new Error(["new BigNumber","cmp","config","div","divToInt","eq","gt","gte","lt","lte","minus","mod","plus","precision","random","round","shift","times","toDigits","toExponential","toFixed","toFormat","toFraction","pow","toPrecision","toString","BigNumber"][t]+"() "+e+": "+r);throw n.name="BigNumber Error",b=0,n}function N(t,e,r,n){var i,o,s,a,u,c,f,h=t.c,l=G;if(h){t:{for(i=1,a=h[0];10<=a;a/=10,i++);if((o=e-i)<0)o+=W,s=e,f=(u=h[c=0])/l[i-s-1]%10|0;else if((c=F((o+1)/W))>=h.length){if(!n)break t;for(;h.length<=c;h.push(0));u=f=0,s=(o%=W)-W+(i=1)}else{for(u=a=h[c],i=1;10<=a;a/=10,i++);f=(s=(o%=W)-W+i)<0?0:u/l[i-s-1]%10|0}if(n=n||e<0||null!=h[c+1]||(s<0?u:u%l[i-s-1]),n=r<4?(f||n)&&(0==r||r==(t.s<0?3:2)):5<f||5==f&&(4==r||n||6==r&&(0<o?0<s?u/l[i-s]:0:h[c-1])%10&1||r==(t.s<0?8:7)),e<1||!h[0])return h.length=0,n?(e-=t.e+1,h[0]=l[e%W],t.e=-e||0):h[0]=t.e=0,t;if(0==o?(h.length=c,a=1,c--):(h.length=c+1,a=l[W-o],h[c]=0<s?D(u/l[i-s]%l[s])*a:0),n)for(;;){if(0==c){for(o=1,s=h[0];10<=s;s/=10,o++);for(s=h[0]+=a,a=1;10<=s;s/=10,a++);o!=a&&(t.e++,h[0]==z&&(h[0]=1));break}if(h[c]+=a,h[c]!=z)break;h[c--]=0,a=1}for(o=h.length;0===h[--o];h.pop());}t.e>_?t.c=t.e=null:t.e<v&&(t.c=[t.e=0])}return t}return B.another=t,B.ROUND_UP=0,B.ROUND_DOWN=1,B.ROUND_CEIL=2,B.ROUND_FLOOR=3,B.ROUND_HALF_UP=4,B.ROUND_HALF_DOWN=5,B.ROUND_HALF_EVEN=6,B.ROUND_HALF_CEIL=7,B.ROUND_HALF_FLOOR=8,B.EUCLID=9,B.config=function(){var t,e,r=0,n={},i=arguments,o=i[0],s=o&&"object"==typeof o?function(){if(o.hasOwnProperty(e))return null!=(t=o[e])}:function(){if(i.length>r)return null!=(t=i[r++])};return s(e="DECIMAL_PLACES")&&x(t,0,J,2,e)&&(d=0|t),n[e]=d,s(e="ROUNDING_MODE")&&x(t,0,8,2,e)&&(g=0|t),n[e]=g,s(e="EXPONENTIAL_AT")&&(Y(t)?x(t[0],-J,0,2,e)&&x(t[1],0,J,2,e)&&(l=0|t[0],p=0|t[1]):x(t,-J,J,2,e)&&(l=-(p=0|(t<0?-t:t)))),n[e]=[l,p],s(e="RANGE")&&(Y(t)?x(t[0],-J,-1,2,e)&&x(t[1],1,J,2,e)&&(v=0|t[0],_=0|t[1]):x(t,-J,J,2,e)&&(0|t?v=-(_=0|(t<0?-t:t)):w&&M(2,e+" cannot be zero",t))),n[e]=[v,_],s(e="ERRORS")&&(t===!!t||1===t||0===t?(b=0,x=(w=!!t)?O:Z):w&&M(2,e+H,t)),n[e]=w,s(e="CRYPTO")&&(t===!!t||1===t||0===t?(k=!(!t||!I||"object"!=typeof I),t&&!k&&w&&M(2,"crypto unavailable",I)):w&&M(2,e+H,t)),n[e]=k,s(e="MODULO_MODE")&&x(t,0,9,2,e)&&(S=0|t),n[e]=S,s(e="POW_PRECISION")&&x(t,0,J,2,e)&&(E=0|t),n[e]=E,s(e="FORMAT")&&("object"==typeof t?A=t:w&&M(2,e+" not an object",t)),n[e]=A,n},B.max=function(){return i(arguments,n.lt)},B.min=function(){return i(arguments,n.gt)},B.random=(r=9007199254740992,c=Math.random()*r&2097151?function(){return D(Math.random()*r)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(t){var e,r,n,i,o,s=0,a=[],u=new B(y);if(t=null!=t&&x(t,0,J,14)?0|t:d,i=F(t/W),k)if(I&&I.getRandomValues){for(e=I.getRandomValues(new Uint32Array(i*=2));s<i;)9e15<=(o=131072*e[s]+(e[s+1]>>>11))?(r=I.getRandomValues(new Uint32Array(2)),e[s]=r[0],e[s+1]=r[1]):(a.push(o%1e14),s+=2);s=i/2}else if(I&&I.randomBytes){for(e=I.randomBytes(i*=7);s<i;)9e15<=(o=281474976710656*(31&e[s])+1099511627776*e[s+1]+4294967296*e[s+2]+16777216*e[s+3]+(e[s+4]<<16)+(e[s+5]<<8)+e[s+6])?I.randomBytes(7).copy(e,s):(a.push(o%1e14),s+=7);s=i/7}else w&&M(14,"crypto unavailable",I);if(!s)for(;s<i;)(o=c())<9e15&&(a[s++]=o%1e14);for(i=a[--s],t%=W,i&&t&&(o=G[W-t],a[s]=D(i/o)*o);0===a[s];a.pop(),s--);if(s<0)a=[n=0];else{for(n=-1;0===a[0];a.shift(),n-=W);for(s=1,o=a[0];10<=o;o/=10,s++);s<W&&(n-=W-s)}return u.e=n,u.c=a,u}),m=function(){function E(t,e,r){var n,i,o,s,a=0,u=t.length,c=e%X,f=e/X|0;for(t=t.slice();u--;)a=((i=c*(o=t[u]%X)+(n=f*o+(s=t[u]/X|0)*c)%X*X+a)/r|0)+(n/X|0)+f*s,t[u]=i%r;return a&&t.unshift(a),t}function A(t,e,r,n){var i,o;if(r!=n)o=n<r?1:-1;else for(i=o=0;i<r;i++)if(t[i]!=e[i]){o=t[i]>e[i]?1:-1;break}return o}function C(t,e,r,n){for(var i=0;r--;)t[r]-=i,i=t[r]<e[r]?1:0,t[r]=i*n+t[r]-e[r];for(;!t[0]&&1<t.length;t.shift());}return function(t,e,r,n,i){var o,s,a,u,c,f,h,l,p,d,m,y,g,v,b,_,w,x=t.s==e.s?1:-1,k=t.c,S=e.c;if(!(k&&k[0]&&S&&S[0]))return new B(t.s&&e.s&&(k?!S||k[0]!=S[0]:S)?k&&0==k[0]||!S?0*x:x/0:NaN);for(p=(l=new B(x)).c=[],x=r+(s=t.e-e.e)+1,i||(i=z,s=K(t.e/W)-K(e.e/W),x=x/W|0),a=0;S[a]==(k[a]||0);a++);if(S[a]>(k[a]||0)&&s--,x<0)p.push(1),u=!0;else{for(v=k.length,_=S.length,x+=2,1<(c=D(i/(S[a=0]+1)))&&(S=E(S,c,i),k=E(k,c,i),_=S.length,v=k.length),g=_,m=(d=k.slice(0,_)).length;m<_;d[m++]=0);(w=S.slice()).unshift(0),b=S[0],S[1]>=i/2&&b++;do{if(c=0,(o=A(S,d,_,m))<0){if(y=d[0],_!=m&&(y=y*i+(d[1]||0)),1<(c=D(y/b)))for(i<=c&&(c=i-1),h=(f=E(S,c,i)).length,m=d.length;1==A(f,d,h,m);)c--,C(f,_<h?w:S,h,i),h=f.length,o=1;else 0==c&&(o=c=1),h=(f=S.slice()).length;if(h<m&&f.unshift(0),C(d,f,m,i),m=d.length,-1==o)for(;A(S,d,_,m)<1;)c++,C(d,_<m?w:S,m,i),m=d.length}else 0===o&&(c++,d=[0]);p[a++]=c,d[0]?d[m++]=k[g]||0:(d=[k[g]],m=1)}while((g++<v||null!=d[0])&&x--);u=null!=d[0],p[0]||p.shift()}if(i==z){for(a=1,x=p[0];10<=x;x/=10,a++);N(l,r+(l.e=a+s*W-1)+1,n,u)}else l.e=s,l.r=+u;return l}}(),s=/^(-?)0([xbo])/i,a=/^([^.]+)\.$/,u=/^\.([^.]+)$/,f=/^-?(Infinity|NaN)$/,h=/^\s*\+|^\s+|\s+$/g,P=function(t,e,r,n){var i,o=r?e:e.replace(h,"");if(f.test(o))t.s=isNaN(o)?null:o<0?-1:1;else{if(!r&&(o=o.replace(s,function(t,e,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?t:e}),n&&(i=n,o=o.replace(a,"$1").replace(u,"0.$1")),e!=o))return new B(o,i);w&&M(b,"not a"+(n?" base "+n:"")+" number",e),t.s=null}t.c=t.e=null,b=0},n.absoluteValue=n.abs=function(){var t=new B(this);return t.s<0&&(t.s=1),t},n.ceil=function(){return N(new B(this),this.e+1,2)},n.comparedTo=n.cmp=function(t,e){return b=1,$(this,new B(t,e))},n.decimalPlaces=n.dp=function(){var t,e,r=this.c;if(!r)return null;if(t=((e=r.length-1)-K(this.e/W))*W,e=r[e])for(;e%10==0;e/=10,t--);return t<0&&(t=0),t},n.dividedBy=n.div=function(t,e){return b=3,m(this,new B(t,e),d,g)},n.dividedToIntegerBy=n.divToInt=function(t,e){return b=4,m(this,new B(t,e),0,1)},n.equals=n.eq=function(t,e){return b=5,0===$(this,new B(t,e))},n.floor=function(){return N(new B(this),this.e+1,3)},n.greaterThan=n.gt=function(t,e){return b=6,0<$(this,new B(t,e))},n.greaterThanOrEqualTo=n.gte=function(t,e){return b=7,1===(e=$(this,new B(t,e)))||0===e},n.isFinite=function(){return!!this.c},n.isInteger=n.isInt=function(){return!!this.c&&K(this.e/W)>this.c.length-2},n.isNaN=function(){return!this.s},n.isNegative=n.isNeg=function(){return this.s<0},n.isZero=function(){return!!this.c&&0==this.c[0]},n.lessThan=n.lt=function(t,e){return b=8,$(this,new B(t,e))<0},n.lessThanOrEqualTo=n.lte=function(t,e){return b=9,-1===(e=$(this,new B(t,e)))||0===e},n.minus=n.sub=function(t,e){var r,n,i,o,s=this.s;if(b=10,e=(t=new B(t,e)).s,!s||!e)return new B(NaN);if(s!=e)return t.s=-e,this.plus(t);var a=this.e/W,u=t.e/W,c=this.c,f=t.c;if(!a||!u){if(!c||!f)return c?(t.s=-e,t):new B(f?this:NaN);if(!c[0]||!f[0])return f[0]?(t.s=-e,t):new B(c[0]?this:3==g?-0:0)}if(a=K(a),u=K(u),c=c.slice(),s=a-u){for((o=s<0)?(s=-s,i=c):(u=a,i=f),i.reverse(),e=s;e--;i.push(0));i.reverse()}else for(n=(o=(s=c.length)<(e=f.length))?s:e,s=e=0;e<n;e++)if(c[e]!=f[e]){o=c[e]<f[e];break}if(o&&(i=c,c=f,f=i,t.s=-t.s),0<(e=(n=f.length)-(r=c.length)))for(;e--;c[r++]=0);for(e=z-1;s<n;){if(c[--n]<f[n]){for(r=n;r&&!c[--r];c[r]=e);--c[r],c[n]+=z}c[n]-=f[n]}for(;0==c[0];c.shift(),--u);return c[0]?R(t,c,u):(t.s=3==g?-1:1,t.c=[t.e=0],t)},n.modulo=n.mod=function(t,e){var r,n;return b=11,t=new B(t,e),!this.c||!t.s||t.c&&!t.c[0]?new B(NaN):!t.c||this.c&&!this.c[0]?new B(this):(9==S?(n=t.s,t.s=1,r=m(this,t,0,3),t.s=n,r.s*=n):r=m(this,t,0,S),this.minus(r.times(t)))},n.negated=n.neg=function(){var t=new B(this);return t.s=-t.s||null,t},n.plus=n.add=function(t,e){var r,n=this.s;if(b=12,e=(t=new B(t,e)).s,!n||!e)return new B(NaN);if(n!=e)return t.s=-e,this.minus(t);var i=this.e/W,o=t.e/W,s=this.c,a=t.c;if(!i||!o){if(!s||!a)return new B(n/0);if(!s[0]||!a[0])return a[0]?t:new B(s[0]?this:0*n)}if(i=K(i),o=K(o),s=s.slice(),n=i-o){for(0<n?(o=i,r=a):(n=-n,r=s),r.reverse();n--;r.push(0));r.reverse()}for((n=s.length)-(e=a.length)<0&&(r=a,a=s,s=r,e=n),n=0;e;)n=(s[--e]=s[e]+a[e]+n)/z|0,s[e]%=z;return n&&(s.unshift(n),++o),R(t,s,o)},n.precision=n.sd=function(t){var e,r,n=this.c;if(null!=t&&t!==!!t&&1!==t&&0!==t&&(w&&M(13,"argument"+H,t),t!=!!t&&(t=null)),!n)return null;if(e=(r=n.length-1)*W+1,r=n[r]){for(;r%10==0;r/=10,e--);for(r=n[0];10<=r;r/=10,e++);}return t&&this.e+1>e&&(e=this.e+1),e},n.round=function(t,e){var r=new B(this);return(null==t||x(t,0,J,15))&&N(r,~~t+this.e+1,null!=e&&x(e,0,8,15,L)?0|e:g),r},n.shift=function(t){return x(t,-o,o,16,"argument")?this.times("1e"+rt(t)):new B(this.c&&this.c[0]&&(t<-o||o<t)?this.s*(t<0?0:1/0):this)},n.squareRoot=n.sqrt=function(){var t,e,r,n,i,o=this.c,s=this.s,a=this.e,u=d+4,c=new B("0.5");if(1!==s||!o||!o[0])return new B(!s||s<0&&(!o||o[0])?NaN:o?this:1/0);if(0==(s=Math.sqrt(+this))||s==1/0?(((e=V(o)).length+a)%2==0&&(e+="0"),s=Math.sqrt(e),a=K((a+1)/2)-(a<0||a%2),r=new B(e=s==1/0?"1e"+a:(e=s.toExponential()).slice(0,e.indexOf("e")+1)+a)):r=new B(s+""),r.c[0])for((s=(a=r.e)+u)<3&&(s=0);;)if(i=r,r=c.times(i.plus(m(this,i,u,1))),V(i.c).slice(0,s)===(e=V(r.c)).slice(0,s)){if(r.e<a&&--s,"9999"!=(e=e.slice(s-3,s+1))&&(n||"4999"!=e)){+e&&(+e.slice(1)||"5"!=e.charAt(0))||(N(r,r.e+d+2,1),t=!r.times(r).eq(this));break}if(!n&&(N(i,i.e+d+2,0),i.times(i).eq(this))){r=i;break}u+=4,s+=4,n=1}return N(r,r.e+d+1,g,t)},n.times=n.mul=function(t,e){var r,n,i,o,s,a,u,c,f,h,l,p,d,m,y,g=this.c,v=(b=17,t=new B(t,e)).c;if(!(g&&v&&g[0]&&v[0]))return!this.s||!t.s||g&&!g[0]&&!v||v&&!v[0]&&!g?t.c=t.e=t.s=null:(t.s*=this.s,g&&v?(t.c=[0],t.e=0):t.c=t.e=null),t;for(n=K(this.e/W)+K(t.e/W),t.s*=this.s,(u=g.length)<(h=v.length)&&(d=g,g=v,v=d,i=u,u=h,h=i),i=u+h,d=[];i--;d.push(0));for(m=z,y=X,i=h;0<=--i;){for(r=0,l=v[i]%y,p=v[i]/y|0,o=i+(s=u);i<o;)r=((c=l*(c=g[--s]%y)+(a=p*c+(f=g[s]/y|0)*l)%y*y+d[o]+r)/m|0)+(a/y|0)+p*f,d[o--]=c%m;d[o]=r}return r?++n:d.shift(),R(t,d,n)},n.toDigits=function(t,e){var r=new B(this);return t=null!=t&&x(t,1,J,18,"precision")?0|t:null,e=null!=e&&x(e,0,8,18,L)?0|e:g,t?N(r,t,e):r},n.toExponential=function(t,e){return T(this,null!=t&&x(t,0,J,19)?1+~~t:null,e,19)},n.toFixed=function(t,e){return T(this,null!=t&&x(t,0,J,20)?~~t+this.e+1:null,e,20)},n.toFormat=function(t,e){var r=T(this,null!=t&&x(t,0,J,21)?~~t+this.e+1:null,e,21);if(this.c){var n,i=r.split("."),o=+A.groupSize,s=+A.secondaryGroupSize,a=A.groupSeparator,u=i[0],c=i[1],f=this.s<0,h=f?u.slice(1):u,l=h.length;if(s&&(n=o,o=s,l-=s=n),0<o&&0<l){for(n=l%o||o,u=h.substr(0,n);n<l;n+=o)u+=a+h.substr(n,o);0<s&&(u+=a+h.slice(n)),f&&(u="-"+u)}r=c?u+A.decimalSeparator+((s=+A.fractionGroupSize)?c.replace(new RegExp("\\d{"+s+"}\\B","g"),"$&"+A.fractionGroupSeparator):c):u}return r},n.toFraction=function(t){var e,r,n,i,o,s,a,u,c,f=w,h=this.c,l=new B(y),p=r=new B(y),d=a=new B(y);if(null!=t&&(w=!1,s=new B(t),w=f,(f=s.isInt())&&!s.lt(y)||(w&&M(22,"max denominator "+(f?"out of range":"not an integer"),t),t=!f&&s.c&&N(s,s.e+1,1).gte(y)?s:null)),!h)return this.toString();for(c=V(h),i=l.e=c.length-this.e-1,l.c[0]=G[(o=i%W)<0?W+o:o],t=!t||0<s.cmp(l)?0<i?l:p:s,o=_,_=1/0,s=new B(c),a.c[0]=0;u=m(s,l,0,1),1!=(n=r.plus(u.times(d))).cmp(t);)r=d,d=n,p=a.plus(u.times(n=p)),a=n,l=s.minus(u.times(n=l)),s=n;return n=m(t.minus(r),d,0,1),a=a.plus(n.times(p)),r=r.plus(n.times(d)),a.s=p.s=this.s,e=m(p,d,i*=2,g).minus(this).abs().cmp(m(a,r,i,g).minus(this).abs())<1?[p.toString(),d.toString()]:[a.toString(),r.toString()],_=o,e},n.toNumber=function(){return+this||(this.s?0*this.s:NaN)},n.toPower=n.pow=function(t){var e,r,n=D(t<0?-t:+t),i=this;if(!x(t,-o,o,23,"exponent")&&(!isFinite(t)||o<n&&(t/=0)||parseFloat(t)!=t&&!(t=NaN)))return new B(Math.pow(+i,t));for(e=E?F(E/W+2):0,r=new B(y);;){if(n%2){if(!(r=r.times(i)).c)break;e&&r.c.length>e&&(r.c.length=e)}if(!(n=D(n/2)))break;i=i.times(i),e&&i.c&&i.c.length>e&&(i.c.length=e)}return t<0&&(r=y.div(r)),e?N(r,E,g):r},n.toPrecision=function(t,e){return T(this,null!=t&&x(t,1,J,24,"precision")?0|t:null,e,24)},n.toString=function(t){var e,r=this.s,n=this.e;return null===n?r?(e="Infinity",r<0&&(e="-"+e)):e="NaN":(e=V(this.c),e=null!=t&&x(t,2,64,25,"base")?C(et(e,n),0|t,10,r):n<=l||p<=n?tt(e,n):et(e,n),r<0&&this.c[0]&&(e="-"+e)),e},n.truncated=n.trunc=function(){return N(new B(this),this.e+1,1)},n.valueOf=n.toJSON=function(){return this.toString()},null!=e&&B.config(e),B}(),"function"==typeof define&&define.amd)define(function(){return e});else if(void 0!==n&&n.exports){if(n.exports=e,!I)try{I=r("crypto")}catch(t){}}else t.BigNumber=e}(this)},{crypto:52}],web3:[function(t,e,r){var n=t("./lib/web3");"undefined"!=typeof window&&void 0===window.Web3&&(window.Web3=n),e.exports=n},{"./lib/web3":22}]},{},["web3"]); | |
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/wrappy/wrappy.js":[function(_dereq_,module,exports){ | |
// Returns a wrapper function that returns a wrapped callback | |
// The wrapper function should do some stuff, and return a | |
// presumably different callback function. | |
// This makes sure that own properties are retained, so that | |
// decorations and such are not lost along the way. | |
module.exports = wrappy | |
function wrappy (fn, cb) { | |
if (fn && cb) return wrappy(fn)(cb) | |
if (typeof fn !== 'function') | |
throw new TypeError('need wrapper function') | |
Object.keys(fn).forEach(function (k) { | |
wrapper[k] = fn[k] | |
}) | |
return wrapper | |
function wrapper() { | |
var args = new Array(arguments.length) | |
for (var i = 0; i < args.length; i++) { | |
args[i] = arguments[i] | |
} | |
var ret = fn.apply(this, args) | |
var cb = args[args.length-1] | |
if (typeof ret === 'function' && ret !== cb) { | |
Object.keys(cb).forEach(function (k) { | |
ret[k] = cb[k] | |
}) | |
} | |
return ret | |
} | |
} | |
},{}],"/Users/chenwei/Desktop/github/metamask-extension/node_modules/xtend/immutable.js":[function(_dereq_,module,exports){ | |
module.exports = extend | |
var hasOwnProperty = Object.prototype.hasOwnProperty; | |
function extend() { | |
var target = {} | |
for (var i = 0; i < arguments.length; i++) { | |
var source = arguments[i] | |
for (var key in source) { | |
if (hasOwnProperty.call(source, key)) { | |
target[key] = source[key] | |
} | |
} | |
} | |
return target | |
} | |
},{}]},{},["/Users/chenwei/Desktop/github/metamask-extension/app/scripts/inpage.js"]) | |
//# sourceMappingURL=inpage.js.map |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment