fluxxor-rails 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4145 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if(typeof define === 'function' && define.amd)
5
+ define(factory);
6
+ else if(typeof exports === 'object')
7
+ exports["Fluxxor"] = factory();
8
+ else
9
+ root["Fluxxor"] = factory();
10
+ })(this, function() {
11
+ return /******/ (function(modules) { // webpackBootstrap
12
+ /******/
13
+ /******/ // The module cache
14
+ /******/ var installedModules = {};
15
+ /******/
16
+ /******/ // The require function
17
+ /******/ function __webpack_require__(moduleId) {
18
+ /******/ // Check if module is in cache
19
+ /******/ if(installedModules[moduleId])
20
+ /******/ return installedModules[moduleId].exports;
21
+ /******/
22
+ /******/ // Create a new module (and put it into the cache)
23
+ /******/ var module = installedModules[moduleId] = {
24
+ /******/ exports: {},
25
+ /******/ id: moduleId,
26
+ /******/ loaded: false
27
+ /******/ };
28
+ /******/
29
+ /******/ // Execute the module function
30
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
+ /******/
32
+ /******/ // Flag the module as loaded
33
+ /******/ module.loaded = true;
34
+ /******/
35
+ /******/ // Return the exports of the module
36
+ /******/ return module.exports;
37
+ /******/ }
38
+ /******/
39
+ /******/
40
+ /******/ // expose the modules object (__webpack_modules__)
41
+ /******/ __webpack_require__.m = modules;
42
+ /******/
43
+ /******/ // expose the module cache
44
+ /******/ __webpack_require__.c = installedModules;
45
+ /******/
46
+ /******/ // __webpack_public_path__
47
+ /******/ __webpack_require__.p = "";
48
+ /******/
49
+ /******/
50
+ /******/ // Load entry module and return exports
51
+ /******/ return __webpack_require__(0);
52
+ /******/ })
53
+ /************************************************************************/
54
+ /******/ ([
55
+ /* 0 */
56
+ /***/ function(module, exports, __webpack_require__) {
57
+
58
+ var Dispatcher = __webpack_require__(2),
59
+ Flux = __webpack_require__(3),
60
+ FluxMixin = __webpack_require__(4),
61
+ FluxChildMixin = __webpack_require__(5),
62
+ StoreWatchMixin = __webpack_require__(6),
63
+ createStore = __webpack_require__(7);
64
+
65
+ var Fluxxor = {
66
+ Dispatcher: Dispatcher,
67
+ Flux: Flux,
68
+ FluxMixin: FluxMixin,
69
+ FluxChildMixin: FluxChildMixin,
70
+ StoreWatchMixin: StoreWatchMixin,
71
+ createStore: createStore,
72
+ version: __webpack_require__(1).version
73
+ };
74
+
75
+ module.exports = Fluxxor;
76
+
77
+
78
+ /***/ },
79
+ /* 1 */
80
+ /***/ function(module, exports, __webpack_require__) {
81
+
82
+ module.exports = {"name":"fluxxor","version":"1.1.2","description":"Flux architecture tools for React","repository":{"type":"git","url":"https://github.com/BinaryMuse/fluxxor.git"},"main":"index.js","scripts":{"test":"npm run jshint && mocha --recursive","jshint":"jsxhint lib/","build":"./script/build-fluxxor && ./script/build-examples","preview-site":"wintersmith preview -C site","build-site":"wintersmith build -C site"},"keywords":["react","flux"],"author":"Brandon Tilley <brandon@brandontilley.com>","license":"MIT","devDependencies":{"chai":"^1.9.1","css-loader":"^0.6.12","envify":"^1.2.1","jsdom":"^0.10.5","json-loader":"^0.5.0","jsx-loader":"^0.10.2","jsxhint":"^0.4.9","less":"^1.7.0","less-loader":"^0.7.3","mocha":"^1.18.2","react":"^0.10.0","sinon":"^1.9.1","sinon-chai":"^2.5.0","style-loader":"^0.6.3","webpack":"^1.1.11","webpack-dev-server":"^1.2.7","wintersmith":"^2.0.10","wintersmith-ejs":"^0.1.4","wintersmith-less":"^0.2.2"},"dependencies":{"lodash-node":"^2.4.1"}}
83
+
84
+ /***/ },
85
+ /* 2 */
86
+ /***/ function(module, exports, __webpack_require__) {
87
+
88
+ var _clone = __webpack_require__(10),
89
+ _mapValues = __webpack_require__(11),
90
+ _forOwn = __webpack_require__(12),
91
+ _intersection = __webpack_require__(15),
92
+ _keys = __webpack_require__(13),
93
+ _map = __webpack_require__(17),
94
+ _each = __webpack_require__(18),
95
+ _size = __webpack_require__(19),
96
+ _findKey = __webpack_require__(14),
97
+ _uniq = __webpack_require__(16);
98
+
99
+ var Dispatcher = function(stores) {
100
+ this.stores = stores;
101
+ this.currentDispatch = null;
102
+ this.waitingToDispatch = [];
103
+
104
+ for (var key in stores) {
105
+ stores[key].dispatcher = this;
106
+ }
107
+ };
108
+
109
+ Dispatcher.prototype.dispatch = function(action) {
110
+ if (this.currentDispatch) {
111
+ throw new Error("Cannot dispatch an action while another action is being dispatched");
112
+ }
113
+
114
+ this.waitingToDispatch = _clone(this.stores);
115
+
116
+ this.currentDispatch = _mapValues(this.stores, function() {
117
+ return { resolved: false, waitingOn: [], waitCallback: null };
118
+ });
119
+
120
+ this.doDispatchLoop(action);
121
+
122
+ setTimeout(function() {
123
+ this.currentDispatch = null;
124
+ }.bind(this));
125
+ };
126
+
127
+ Dispatcher.prototype.doDispatchLoop = function(action) {
128
+ var dispatch, canBeDispatchedTo,
129
+ removeFromDispatchQueue = [], dispatchedThisLoop = [];
130
+
131
+ _forOwn(this.waitingToDispatch, function(value, key) {
132
+ dispatch = this.currentDispatch[key];
133
+ canBeDispatchedTo = !dispatch.waitingOn.length ||
134
+ !_intersection(dispatch.waitingOn, _keys(this.waitingToDispatch)).length;
135
+ if (canBeDispatchedTo) {
136
+ if (dispatch.waitCallback) {
137
+ var stores = _map(dispatch.waitingOn, function(key) {
138
+ return this.stores[key];
139
+ }, this);
140
+ var fn = dispatch.waitCallback;
141
+ dispatch.waitCallback = null;
142
+ dispatch.waitingOn = [];
143
+ dispatch.resolved = true;
144
+ fn.apply(null, stores);
145
+ } else {
146
+ dispatch.resolved = true;
147
+ this.stores[key].__handleAction__(action);
148
+ }
149
+
150
+ dispatchedThisLoop.push(key);
151
+
152
+ if (this.currentDispatch[key].resolved) {
153
+ removeFromDispatchQueue.push(key);
154
+ }
155
+ }
156
+ }, this);
157
+
158
+ if (!dispatchedThisLoop.length) {
159
+ var storesWithCircularWaits = _keys(this.waitingToDispatch).join(", ");
160
+ throw new Error("Indirect circular wait detected among: " + storesWithCircularWaits);
161
+ }
162
+
163
+ _each(removeFromDispatchQueue, function(key) {
164
+ delete this.waitingToDispatch[key];
165
+ }, this);
166
+
167
+ if (_size(this.waitingToDispatch)) {
168
+ this.doDispatchLoop(action);
169
+ }
170
+ };
171
+
172
+ Dispatcher.prototype.waitForStores = function(store, stores, fn) {
173
+ if (!this.currentDispatch) {
174
+ throw new Error("Cannot wait unless an action is being dispatched");
175
+ }
176
+
177
+ var waitingStoreName = _findKey(this.stores, function(val) {
178
+ return val === store;
179
+ });
180
+
181
+ if (stores.indexOf(waitingStoreName) > -1) {
182
+ throw new Error("A store cannot wait on itself");
183
+ }
184
+
185
+ var dispatch = this.currentDispatch[waitingStoreName];
186
+
187
+ if (dispatch.waitingOn.length) {
188
+ throw new Error(waitingStoreName + " already waiting on stores");
189
+ }
190
+
191
+ _each(stores, function(storeName) {
192
+ var storeDispatch = this.currentDispatch[storeName];
193
+ if (!this.stores[storeName]) {
194
+ throw new Error("Cannot wait for non-existant store " + storeName);
195
+ }
196
+ if (storeDispatch.waitingOn.indexOf(waitingStoreName) > -1) {
197
+ throw new Error("Circular wait detected between " + waitingStoreName + " and " + storeName);
198
+ }
199
+ }, this);
200
+
201
+ dispatch.resolved = false;
202
+ dispatch.waitingOn = _uniq(dispatch.waitingOn.concat(stores));
203
+ dispatch.waitCallback = fn;
204
+ };
205
+
206
+ module.exports = Dispatcher;
207
+
208
+
209
+ /***/ },
210
+ /* 3 */
211
+ /***/ function(module, exports, __webpack_require__) {
212
+
213
+ var Dispatcher = __webpack_require__(2);
214
+
215
+ var Flux = function(stores, actions) {
216
+ var dispatcher = new Dispatcher(stores),
217
+ dispatchBinder = {
218
+ dispatch: function(type, payload) {
219
+ dispatcher.dispatch({type: type, payload: payload});
220
+ }
221
+ };
222
+
223
+ this.dispatcher = dispatcher;
224
+ this.actions = {};
225
+
226
+ for (var key in actions) {
227
+ this.actions[key] = actions[key].bind(dispatchBinder);
228
+ }
229
+
230
+ for (key in stores) {
231
+ stores[key].flux = this;
232
+ }
233
+ };
234
+
235
+ Flux.prototype.store = function(name) {
236
+ return this.dispatcher.stores[name];
237
+ };
238
+
239
+ module.exports = Flux;
240
+
241
+
242
+ /***/ },
243
+ /* 4 */
244
+ /***/ function(module, exports, __webpack_require__) {
245
+
246
+ var FluxMixin = function(React) {
247
+ return {
248
+ propTypes: {
249
+ flux: React.PropTypes.object.isRequired
250
+ },
251
+
252
+ childContextTypes: {
253
+ flux: React.PropTypes.object
254
+ },
255
+
256
+ getChildContext: function() {
257
+ return {
258
+ flux: this.props.flux
259
+ };
260
+ },
261
+
262
+ getFlux: function() {
263
+ return this.props.flux;
264
+ }
265
+ };
266
+ };
267
+
268
+ FluxMixin.componentWillMount = function() {
269
+ throw new Error("Fluxxor.FluxMixin is a function that takes React as a " +
270
+ "parameter and returns the mixin, e.g.: mixins[Fluxxor.FluxMixin(React)]");
271
+ };
272
+
273
+ module.exports = FluxMixin;
274
+
275
+
276
+ /***/ },
277
+ /* 5 */
278
+ /***/ function(module, exports, __webpack_require__) {
279
+
280
+ var FluxChildMixin = function(React) {
281
+ return {
282
+ contextTypes: {
283
+ flux: React.PropTypes.object
284
+ },
285
+
286
+ getFlux: function() {
287
+ return this.context.flux;
288
+ }
289
+ };
290
+ };
291
+
292
+ FluxChildMixin.componentWillMount = function() {
293
+ throw new Error("Fluxxor.FluxChildMixin is a function that takes React as a " +
294
+ "parameter and returns the mixin, e.g.: mixins[Fluxxor.FluxChildMixin(React)]");
295
+ };
296
+
297
+ module.exports = FluxChildMixin;
298
+
299
+
300
+ /***/ },
301
+ /* 6 */
302
+ /***/ function(module, exports, __webpack_require__) {
303
+
304
+ var _each = __webpack_require__(18);
305
+
306
+ var StoreWatchMixin = function() {
307
+ var storeNames = Array.prototype.slice.call(arguments);
308
+ return {
309
+ componentWillMount: function() {
310
+ var flux = this.props.flux || this.context.flux;
311
+ _each(storeNames, function(store) {
312
+ flux.store(store).on("change", this._setStateFromFlux);
313
+ }, this);
314
+ },
315
+
316
+ componentWillUnmount: function() {
317
+ var flux = this.props.flux || this.context.flux;
318
+ _each(storeNames, function(store) {
319
+ flux.store(store).removeListener("change", this._setStateFromFlux);
320
+ }, this);
321
+ },
322
+
323
+ _setStateFromFlux: function() {
324
+ this.setState(this.getStateFromFlux());
325
+ },
326
+
327
+ getInitialState: function() {
328
+ return this.getStateFromFlux();
329
+ }
330
+ };
331
+ };
332
+
333
+ StoreWatchMixin.componentWillMount = function() {
334
+ throw new Error("Fluxxor.StoreWatchMixin is a function that takes one or more " +
335
+ "store names as parameters and returns the mixin, e.g.: " +
336
+ "mixins[Fluxxor.StoreWatchMixin(\"Store1\", \"Store2\")]");
337
+ };
338
+
339
+ module.exports = StoreWatchMixin;
340
+
341
+
342
+ /***/ },
343
+ /* 7 */
344
+ /***/ function(module, exports, __webpack_require__) {
345
+
346
+ var _each = __webpack_require__(18),
347
+ Store = __webpack_require__(8),
348
+ util = __webpack_require__(9);
349
+
350
+ var RESERVED_KEYS = ["flux", "waitFor"];
351
+
352
+ var createStore = function(spec) {
353
+ _each(RESERVED_KEYS, function(key) {
354
+ if (spec[key]) {
355
+ throw new Error("Reserved key '" + key + "' found in store definition");
356
+ }
357
+ });
358
+
359
+ var constructor = function(options) {
360
+ options = options || {};
361
+ Store.call(this);
362
+
363
+ for (var key in spec) {
364
+ if (key === "actions") {
365
+ this.__actions__ = spec[key];
366
+ } else if (key === "initialize") {
367
+ // do nothing
368
+ } else if (typeof spec[key] === "function") {
369
+ this[key] = spec[key].bind(this);
370
+ } else {
371
+ this[key] = spec[key];
372
+ }
373
+ }
374
+
375
+ if (spec.initialize) spec.initialize.call(this, options);
376
+ };
377
+
378
+ util.inherits(constructor, Store);
379
+ return constructor;
380
+ };
381
+
382
+ module.exports = createStore;
383
+
384
+
385
+ /***/ },
386
+ /* 8 */
387
+ /***/ function(module, exports, __webpack_require__) {
388
+
389
+ var EventEmitter = __webpack_require__(20).EventEmitter,
390
+ util = __webpack_require__(9);
391
+
392
+ function Store(dispatcher) {
393
+ this.dispatcher = dispatcher;
394
+ this.__actions__ = {};
395
+ EventEmitter.call(this);
396
+ }
397
+
398
+ util.inherits(Store, EventEmitter);
399
+
400
+ Store.prototype.__handleAction__ = function(action) {
401
+ var handler;
402
+ if (!!(handler = this.__actions__[action.type])) {
403
+ if (typeof handler === "function")
404
+ handler.call(this, action.payload, action.type);
405
+ else if (handler && typeof this[handler] === "function")
406
+ this[handler].call(this, action.payload, action.type);
407
+ }
408
+ };
409
+
410
+ Store.prototype.bindActions = function() {
411
+ var actions = Array.prototype.slice.call(arguments);
412
+ if (actions.length % 2 !== 0) {
413
+ throw new Error("bindActions must take an even number of arguments.");
414
+ }
415
+
416
+ for (var i = 0; i < actions.length; i += 2) {
417
+ var type = actions[i],
418
+ handler = actions[i+1];
419
+
420
+ this.__actions__[type] = handler;
421
+ }
422
+ };
423
+
424
+ Store.prototype.waitFor = function(stores, fn) {
425
+ this.dispatcher.waitForStores(this, stores, fn.bind(this));
426
+ };
427
+
428
+ module.exports = Store;
429
+
430
+
431
+ /***/ },
432
+ /* 9 */
433
+ /***/ function(module, exports, __webpack_require__) {
434
+
435
+ /* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
436
+ //
437
+ // Permission is hereby granted, free of charge, to any person obtaining a
438
+ // copy of this software and associated documentation files (the
439
+ // "Software"), to deal in the Software without restriction, including
440
+ // without limitation the rights to use, copy, modify, merge, publish,
441
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
442
+ // persons to whom the Software is furnished to do so, subject to the
443
+ // following conditions:
444
+ //
445
+ // The above copyright notice and this permission notice shall be included
446
+ // in all copies or substantial portions of the Software.
447
+ //
448
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
449
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
450
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
451
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
452
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
453
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
454
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
455
+
456
+ var formatRegExp = /%[sdj%]/g;
457
+ exports.format = function(f) {
458
+ if (!isString(f)) {
459
+ var objects = [];
460
+ for (var i = 0; i < arguments.length; i++) {
461
+ objects.push(inspect(arguments[i]));
462
+ }
463
+ return objects.join(' ');
464
+ }
465
+
466
+ var i = 1;
467
+ var args = arguments;
468
+ var len = args.length;
469
+ var str = String(f).replace(formatRegExp, function(x) {
470
+ if (x === '%%') return '%';
471
+ if (i >= len) return x;
472
+ switch (x) {
473
+ case '%s': return String(args[i++]);
474
+ case '%d': return Number(args[i++]);
475
+ case '%j':
476
+ try {
477
+ return JSON.stringify(args[i++]);
478
+ } catch (_) {
479
+ return '[Circular]';
480
+ }
481
+ default:
482
+ return x;
483
+ }
484
+ });
485
+ for (var x = args[i]; i < len; x = args[++i]) {
486
+ if (isNull(x) || !isObject(x)) {
487
+ str += ' ' + x;
488
+ } else {
489
+ str += ' ' + inspect(x);
490
+ }
491
+ }
492
+ return str;
493
+ };
494
+
495
+
496
+ // Mark that a method should not be used.
497
+ // Returns a modified function which warns once by default.
498
+ // If --no-deprecation is set, then it is a no-op.
499
+ exports.deprecate = function(fn, msg) {
500
+ // Allow for deprecating things in the process of starting up.
501
+ if (isUndefined(global.process)) {
502
+ return function() {
503
+ return exports.deprecate(fn, msg).apply(this, arguments);
504
+ };
505
+ }
506
+
507
+ if (process.noDeprecation === true) {
508
+ return fn;
509
+ }
510
+
511
+ var warned = false;
512
+ function deprecated() {
513
+ if (!warned) {
514
+ if (process.throwDeprecation) {
515
+ throw new Error(msg);
516
+ } else if (process.traceDeprecation) {
517
+ console.trace(msg);
518
+ } else {
519
+ console.error(msg);
520
+ }
521
+ warned = true;
522
+ }
523
+ return fn.apply(this, arguments);
524
+ }
525
+
526
+ return deprecated;
527
+ };
528
+
529
+
530
+ var debugs = {};
531
+ var debugEnviron;
532
+ exports.debuglog = function(set) {
533
+ if (isUndefined(debugEnviron))
534
+ debugEnviron = process.env.NODE_DEBUG || '';
535
+ set = set.toUpperCase();
536
+ if (!debugs[set]) {
537
+ if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
538
+ var pid = process.pid;
539
+ debugs[set] = function() {
540
+ var msg = exports.format.apply(exports, arguments);
541
+ console.error('%s %d: %s', set, pid, msg);
542
+ };
543
+ } else {
544
+ debugs[set] = function() {};
545
+ }
546
+ }
547
+ return debugs[set];
548
+ };
549
+
550
+
551
+ /**
552
+ * Echos the value of a value. Trys to print the value out
553
+ * in the best way possible given the different types.
554
+ *
555
+ * @param {Object} obj The object to print out.
556
+ * @param {Object} opts Optional options object that alters the output.
557
+ */
558
+ /* legacy: obj, showHidden, depth, colors*/
559
+ function inspect(obj, opts) {
560
+ // default options
561
+ var ctx = {
562
+ seen: [],
563
+ stylize: stylizeNoColor
564
+ };
565
+ // legacy...
566
+ if (arguments.length >= 3) ctx.depth = arguments[2];
567
+ if (arguments.length >= 4) ctx.colors = arguments[3];
568
+ if (isBoolean(opts)) {
569
+ // legacy...
570
+ ctx.showHidden = opts;
571
+ } else if (opts) {
572
+ // got an "options" object
573
+ exports._extend(ctx, opts);
574
+ }
575
+ // set default options
576
+ if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
577
+ if (isUndefined(ctx.depth)) ctx.depth = 2;
578
+ if (isUndefined(ctx.colors)) ctx.colors = false;
579
+ if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
580
+ if (ctx.colors) ctx.stylize = stylizeWithColor;
581
+ return formatValue(ctx, obj, ctx.depth);
582
+ }
583
+ exports.inspect = inspect;
584
+
585
+
586
+ // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
587
+ inspect.colors = {
588
+ 'bold' : [1, 22],
589
+ 'italic' : [3, 23],
590
+ 'underline' : [4, 24],
591
+ 'inverse' : [7, 27],
592
+ 'white' : [37, 39],
593
+ 'grey' : [90, 39],
594
+ 'black' : [30, 39],
595
+ 'blue' : [34, 39],
596
+ 'cyan' : [36, 39],
597
+ 'green' : [32, 39],
598
+ 'magenta' : [35, 39],
599
+ 'red' : [31, 39],
600
+ 'yellow' : [33, 39]
601
+ };
602
+
603
+ // Don't use 'blue' not visible on cmd.exe
604
+ inspect.styles = {
605
+ 'special': 'cyan',
606
+ 'number': 'yellow',
607
+ 'boolean': 'yellow',
608
+ 'undefined': 'grey',
609
+ 'null': 'bold',
610
+ 'string': 'green',
611
+ 'date': 'magenta',
612
+ // "name": intentionally not styling
613
+ 'regexp': 'red'
614
+ };
615
+
616
+
617
+ function stylizeWithColor(str, styleType) {
618
+ var style = inspect.styles[styleType];
619
+
620
+ if (style) {
621
+ return '\u001b[' + inspect.colors[style][0] + 'm' + str +
622
+ '\u001b[' + inspect.colors[style][1] + 'm';
623
+ } else {
624
+ return str;
625
+ }
626
+ }
627
+
628
+
629
+ function stylizeNoColor(str, styleType) {
630
+ return str;
631
+ }
632
+
633
+
634
+ function arrayToHash(array) {
635
+ var hash = {};
636
+
637
+ array.forEach(function(val, idx) {
638
+ hash[val] = true;
639
+ });
640
+
641
+ return hash;
642
+ }
643
+
644
+
645
+ function formatValue(ctx, value, recurseTimes) {
646
+ // Provide a hook for user-specified inspect functions.
647
+ // Check that value is an object with an inspect function on it
648
+ if (ctx.customInspect &&
649
+ value &&
650
+ isFunction(value.inspect) &&
651
+ // Filter out the util module, it's inspect function is special
652
+ value.inspect !== exports.inspect &&
653
+ // Also filter out any prototype objects using the circular check.
654
+ !(value.constructor && value.constructor.prototype === value)) {
655
+ var ret = value.inspect(recurseTimes, ctx);
656
+ if (!isString(ret)) {
657
+ ret = formatValue(ctx, ret, recurseTimes);
658
+ }
659
+ return ret;
660
+ }
661
+
662
+ // Primitive types cannot have properties
663
+ var primitive = formatPrimitive(ctx, value);
664
+ if (primitive) {
665
+ return primitive;
666
+ }
667
+
668
+ // Look up the keys of the object.
669
+ var keys = Object.keys(value);
670
+ var visibleKeys = arrayToHash(keys);
671
+
672
+ if (ctx.showHidden) {
673
+ keys = Object.getOwnPropertyNames(value);
674
+ }
675
+
676
+ // IE doesn't make error fields non-enumerable
677
+ // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
678
+ if (isError(value)
679
+ && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
680
+ return formatError(value);
681
+ }
682
+
683
+ // Some type of object without properties can be shortcutted.
684
+ if (keys.length === 0) {
685
+ if (isFunction(value)) {
686
+ var name = value.name ? ': ' + value.name : '';
687
+ return ctx.stylize('[Function' + name + ']', 'special');
688
+ }
689
+ if (isRegExp(value)) {
690
+ return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
691
+ }
692
+ if (isDate(value)) {
693
+ return ctx.stylize(Date.prototype.toString.call(value), 'date');
694
+ }
695
+ if (isError(value)) {
696
+ return formatError(value);
697
+ }
698
+ }
699
+
700
+ var base = '', array = false, braces = ['{', '}'];
701
+
702
+ // Make Array say that they are Array
703
+ if (isArray(value)) {
704
+ array = true;
705
+ braces = ['[', ']'];
706
+ }
707
+
708
+ // Make functions say that they are functions
709
+ if (isFunction(value)) {
710
+ var n = value.name ? ': ' + value.name : '';
711
+ base = ' [Function' + n + ']';
712
+ }
713
+
714
+ // Make RegExps say that they are RegExps
715
+ if (isRegExp(value)) {
716
+ base = ' ' + RegExp.prototype.toString.call(value);
717
+ }
718
+
719
+ // Make dates with properties first say the date
720
+ if (isDate(value)) {
721
+ base = ' ' + Date.prototype.toUTCString.call(value);
722
+ }
723
+
724
+ // Make error with message first say the error
725
+ if (isError(value)) {
726
+ base = ' ' + formatError(value);
727
+ }
728
+
729
+ if (keys.length === 0 && (!array || value.length == 0)) {
730
+ return braces[0] + base + braces[1];
731
+ }
732
+
733
+ if (recurseTimes < 0) {
734
+ if (isRegExp(value)) {
735
+ return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
736
+ } else {
737
+ return ctx.stylize('[Object]', 'special');
738
+ }
739
+ }
740
+
741
+ ctx.seen.push(value);
742
+
743
+ var output;
744
+ if (array) {
745
+ output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
746
+ } else {
747
+ output = keys.map(function(key) {
748
+ return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
749
+ });
750
+ }
751
+
752
+ ctx.seen.pop();
753
+
754
+ return reduceToSingleString(output, base, braces);
755
+ }
756
+
757
+
758
+ function formatPrimitive(ctx, value) {
759
+ if (isUndefined(value))
760
+ return ctx.stylize('undefined', 'undefined');
761
+ if (isString(value)) {
762
+ var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
763
+ .replace(/'/g, "\\'")
764
+ .replace(/\\"/g, '"') + '\'';
765
+ return ctx.stylize(simple, 'string');
766
+ }
767
+ if (isNumber(value))
768
+ return ctx.stylize('' + value, 'number');
769
+ if (isBoolean(value))
770
+ return ctx.stylize('' + value, 'boolean');
771
+ // For some reason typeof null is "object", so special case here.
772
+ if (isNull(value))
773
+ return ctx.stylize('null', 'null');
774
+ }
775
+
776
+
777
+ function formatError(value) {
778
+ return '[' + Error.prototype.toString.call(value) + ']';
779
+ }
780
+
781
+
782
+ function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
783
+ var output = [];
784
+ for (var i = 0, l = value.length; i < l; ++i) {
785
+ if (hasOwnProperty(value, String(i))) {
786
+ output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
787
+ String(i), true));
788
+ } else {
789
+ output.push('');
790
+ }
791
+ }
792
+ keys.forEach(function(key) {
793
+ if (!key.match(/^\d+$/)) {
794
+ output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
795
+ key, true));
796
+ }
797
+ });
798
+ return output;
799
+ }
800
+
801
+
802
+ function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
803
+ var name, str, desc;
804
+ desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
805
+ if (desc.get) {
806
+ if (desc.set) {
807
+ str = ctx.stylize('[Getter/Setter]', 'special');
808
+ } else {
809
+ str = ctx.stylize('[Getter]', 'special');
810
+ }
811
+ } else {
812
+ if (desc.set) {
813
+ str = ctx.stylize('[Setter]', 'special');
814
+ }
815
+ }
816
+ if (!hasOwnProperty(visibleKeys, key)) {
817
+ name = '[' + key + ']';
818
+ }
819
+ if (!str) {
820
+ if (ctx.seen.indexOf(desc.value) < 0) {
821
+ if (isNull(recurseTimes)) {
822
+ str = formatValue(ctx, desc.value, null);
823
+ } else {
824
+ str = formatValue(ctx, desc.value, recurseTimes - 1);
825
+ }
826
+ if (str.indexOf('\n') > -1) {
827
+ if (array) {
828
+ str = str.split('\n').map(function(line) {
829
+ return ' ' + line;
830
+ }).join('\n').substr(2);
831
+ } else {
832
+ str = '\n' + str.split('\n').map(function(line) {
833
+ return ' ' + line;
834
+ }).join('\n');
835
+ }
836
+ }
837
+ } else {
838
+ str = ctx.stylize('[Circular]', 'special');
839
+ }
840
+ }
841
+ if (isUndefined(name)) {
842
+ if (array && key.match(/^\d+$/)) {
843
+ return str;
844
+ }
845
+ name = JSON.stringify('' + key);
846
+ if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
847
+ name = name.substr(1, name.length - 2);
848
+ name = ctx.stylize(name, 'name');
849
+ } else {
850
+ name = name.replace(/'/g, "\\'")
851
+ .replace(/\\"/g, '"')
852
+ .replace(/(^"|"$)/g, "'");
853
+ name = ctx.stylize(name, 'string');
854
+ }
855
+ }
856
+
857
+ return name + ': ' + str;
858
+ }
859
+
860
+
861
+ function reduceToSingleString(output, base, braces) {
862
+ var numLinesEst = 0;
863
+ var length = output.reduce(function(prev, cur) {
864
+ numLinesEst++;
865
+ if (cur.indexOf('\n') >= 0) numLinesEst++;
866
+ return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
867
+ }, 0);
868
+
869
+ if (length > 60) {
870
+ return braces[0] +
871
+ (base === '' ? '' : base + '\n ') +
872
+ ' ' +
873
+ output.join(',\n ') +
874
+ ' ' +
875
+ braces[1];
876
+ }
877
+
878
+ return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
879
+ }
880
+
881
+
882
+ // NOTE: These type checking functions intentionally don't use `instanceof`
883
+ // because it is fragile and can be easily faked with `Object.create()`.
884
+ function isArray(ar) {
885
+ return Array.isArray(ar);
886
+ }
887
+ exports.isArray = isArray;
888
+
889
+ function isBoolean(arg) {
890
+ return typeof arg === 'boolean';
891
+ }
892
+ exports.isBoolean = isBoolean;
893
+
894
+ function isNull(arg) {
895
+ return arg === null;
896
+ }
897
+ exports.isNull = isNull;
898
+
899
+ function isNullOrUndefined(arg) {
900
+ return arg == null;
901
+ }
902
+ exports.isNullOrUndefined = isNullOrUndefined;
903
+
904
+ function isNumber(arg) {
905
+ return typeof arg === 'number';
906
+ }
907
+ exports.isNumber = isNumber;
908
+
909
+ function isString(arg) {
910
+ return typeof arg === 'string';
911
+ }
912
+ exports.isString = isString;
913
+
914
+ function isSymbol(arg) {
915
+ return typeof arg === 'symbol';
916
+ }
917
+ exports.isSymbol = isSymbol;
918
+
919
+ function isUndefined(arg) {
920
+ return arg === void 0;
921
+ }
922
+ exports.isUndefined = isUndefined;
923
+
924
+ function isRegExp(re) {
925
+ return isObject(re) && objectToString(re) === '[object RegExp]';
926
+ }
927
+ exports.isRegExp = isRegExp;
928
+
929
+ function isObject(arg) {
930
+ return typeof arg === 'object' && arg !== null;
931
+ }
932
+ exports.isObject = isObject;
933
+
934
+ function isDate(d) {
935
+ return isObject(d) && objectToString(d) === '[object Date]';
936
+ }
937
+ exports.isDate = isDate;
938
+
939
+ function isError(e) {
940
+ return isObject(e) &&
941
+ (objectToString(e) === '[object Error]' || e instanceof Error);
942
+ }
943
+ exports.isError = isError;
944
+
945
+ function isFunction(arg) {
946
+ return typeof arg === 'function';
947
+ }
948
+ exports.isFunction = isFunction;
949
+
950
+ function isPrimitive(arg) {
951
+ return arg === null ||
952
+ typeof arg === 'boolean' ||
953
+ typeof arg === 'number' ||
954
+ typeof arg === 'string' ||
955
+ typeof arg === 'symbol' || // ES6 symbol
956
+ typeof arg === 'undefined';
957
+ }
958
+ exports.isPrimitive = isPrimitive;
959
+
960
+ exports.isBuffer = __webpack_require__(21);
961
+
962
+ function objectToString(o) {
963
+ return Object.prototype.toString.call(o);
964
+ }
965
+
966
+
967
+ function pad(n) {
968
+ return n < 10 ? '0' + n.toString(10) : n.toString(10);
969
+ }
970
+
971
+
972
+ var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
973
+ 'Oct', 'Nov', 'Dec'];
974
+
975
+ // 26 Feb 16:19:34
976
+ function timestamp() {
977
+ var d = new Date();
978
+ var time = [pad(d.getHours()),
979
+ pad(d.getMinutes()),
980
+ pad(d.getSeconds())].join(':');
981
+ return [d.getDate(), months[d.getMonth()], time].join(' ');
982
+ }
983
+
984
+
985
+ // log is just a thin wrapper to console.log that prepends a timestamp
986
+ exports.log = function() {
987
+ console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
988
+ };
989
+
990
+
991
+ /**
992
+ * Inherit the prototype methods from one constructor into another.
993
+ *
994
+ * The Function.prototype.inherits from lang.js rewritten as a standalone
995
+ * function (not on Function.prototype). NOTE: If this file is to be loaded
996
+ * during bootstrapping this function needs to be rewritten using some native
997
+ * functions as prototype setup using normal JavaScript does not work as
998
+ * expected during bootstrapping (see mirror.js in r114903).
999
+ *
1000
+ * @param {function} ctor Constructor function which needs to inherit the
1001
+ * prototype.
1002
+ * @param {function} superCtor Constructor function to inherit prototype from.
1003
+ */
1004
+ exports.inherits = __webpack_require__(40);
1005
+
1006
+ exports._extend = function(origin, add) {
1007
+ // Don't do anything if add isn't an object
1008
+ if (!add || !isObject(add)) return origin;
1009
+
1010
+ var keys = Object.keys(add);
1011
+ var i = keys.length;
1012
+ while (i--) {
1013
+ origin[keys[i]] = add[keys[i]];
1014
+ }
1015
+ return origin;
1016
+ };
1017
+
1018
+ function hasOwnProperty(obj, prop) {
1019
+ return Object.prototype.hasOwnProperty.call(obj, prop);
1020
+ }
1021
+
1022
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(25)))
1023
+
1024
+ /***/ },
1025
+ /* 10 */
1026
+ /***/ function(module, exports, __webpack_require__) {
1027
+
1028
+ /**
1029
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1030
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1031
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1032
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1033
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1034
+ * Available under MIT license <http://lodash.com/license>
1035
+ */
1036
+ var baseClone = __webpack_require__(26),
1037
+ baseCreateCallback = __webpack_require__(27);
1038
+
1039
+ /**
1040
+ * Creates a clone of `value`. If `isDeep` is `true` nested objects will also
1041
+ * be cloned, otherwise they will be assigned by reference. If a callback
1042
+ * is provided it will be executed to produce the cloned values. If the
1043
+ * callback returns `undefined` cloning will be handled by the method instead.
1044
+ * The callback is bound to `thisArg` and invoked with one argument; (value).
1045
+ *
1046
+ * @static
1047
+ * @memberOf _
1048
+ * @category Objects
1049
+ * @param {*} value The value to clone.
1050
+ * @param {boolean} [isDeep=false] Specify a deep clone.
1051
+ * @param {Function} [callback] The function to customize cloning values.
1052
+ * @param {*} [thisArg] The `this` binding of `callback`.
1053
+ * @returns {*} Returns the cloned value.
1054
+ * @example
1055
+ *
1056
+ * var characters = [
1057
+ * { 'name': 'barney', 'age': 36 },
1058
+ * { 'name': 'fred', 'age': 40 }
1059
+ * ];
1060
+ *
1061
+ * var shallow = _.clone(characters);
1062
+ * shallow[0] === characters[0];
1063
+ * // => true
1064
+ *
1065
+ * var deep = _.clone(characters, true);
1066
+ * deep[0] === characters[0];
1067
+ * // => false
1068
+ *
1069
+ * _.mixin({
1070
+ * 'clone': _.partialRight(_.clone, function(value) {
1071
+ * return _.isElement(value) ? value.cloneNode(false) : undefined;
1072
+ * })
1073
+ * });
1074
+ *
1075
+ * var clone = _.clone(document.body);
1076
+ * clone.childNodes.length;
1077
+ * // => 0
1078
+ */
1079
+ function clone(value, isDeep, callback, thisArg) {
1080
+ // allows working with "Collections" methods without using their `index`
1081
+ // and `collection` arguments for `isDeep` and `callback`
1082
+ if (typeof isDeep != 'boolean' && isDeep != null) {
1083
+ thisArg = callback;
1084
+ callback = isDeep;
1085
+ isDeep = false;
1086
+ }
1087
+ return baseClone(value, isDeep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1));
1088
+ }
1089
+
1090
+ module.exports = clone;
1091
+
1092
+
1093
+ /***/ },
1094
+ /* 11 */
1095
+ /***/ function(module, exports, __webpack_require__) {
1096
+
1097
+ /**
1098
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1099
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1100
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1101
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1102
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1103
+ * Available under MIT license <http://lodash.com/license>
1104
+ */
1105
+ var createCallback = __webpack_require__(39),
1106
+ forOwn = __webpack_require__(12);
1107
+
1108
+ /**
1109
+ * Creates an object with the same keys as `object` and values generated by
1110
+ * running each own enumerable property of `object` through the callback.
1111
+ * The callback is bound to `thisArg` and invoked with three arguments;
1112
+ * (value, key, object).
1113
+ *
1114
+ * If a property name is provided for `callback` the created "_.pluck" style
1115
+ * callback will return the property value of the given element.
1116
+ *
1117
+ * If an object is provided for `callback` the created "_.where" style callback
1118
+ * will return `true` for elements that have the properties of the given object,
1119
+ * else `false`.
1120
+ *
1121
+ * @static
1122
+ * @memberOf _
1123
+ * @category Objects
1124
+ * @param {Object} object The object to iterate over.
1125
+ * @param {Function|Object|string} [callback=identity] The function called
1126
+ * per iteration. If a property name or object is provided it will be used
1127
+ * to create a "_.pluck" or "_.where" style callback, respectively.
1128
+ * @param {*} [thisArg] The `this` binding of `callback`.
1129
+ * @returns {Array} Returns a new object with values of the results of each `callback` execution.
1130
+ * @example
1131
+ *
1132
+ * _.mapValues({ 'a': 1, 'b': 2, 'c': 3} , function(num) { return num * 3; });
1133
+ * // => { 'a': 3, 'b': 6, 'c': 9 }
1134
+ *
1135
+ * var characters = {
1136
+ * 'fred': { 'name': 'fred', 'age': 40 },
1137
+ * 'pebbles': { 'name': 'pebbles', 'age': 1 }
1138
+ * };
1139
+ *
1140
+ * // using "_.pluck" callback shorthand
1141
+ * _.mapValues(characters, 'age');
1142
+ * // => { 'fred': 40, 'pebbles': 1 }
1143
+ */
1144
+ function mapValues(object, callback, thisArg) {
1145
+ var result = {};
1146
+ callback = createCallback(callback, thisArg, 3);
1147
+
1148
+ forOwn(object, function(value, key, object) {
1149
+ result[key] = callback(value, key, object);
1150
+ });
1151
+ return result;
1152
+ }
1153
+
1154
+ module.exports = mapValues;
1155
+
1156
+
1157
+ /***/ },
1158
+ /* 12 */
1159
+ /***/ function(module, exports, __webpack_require__) {
1160
+
1161
+ /**
1162
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1163
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1164
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1165
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1166
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1167
+ * Available under MIT license <http://lodash.com/license>
1168
+ */
1169
+ var baseCreateCallback = __webpack_require__(27),
1170
+ keys = __webpack_require__(13),
1171
+ objectTypes = __webpack_require__(28);
1172
+
1173
+ /**
1174
+ * Iterates over own enumerable properties of an object, executing the callback
1175
+ * for each property. The callback is bound to `thisArg` and invoked with three
1176
+ * arguments; (value, key, object). Callbacks may exit iteration early by
1177
+ * explicitly returning `false`.
1178
+ *
1179
+ * @static
1180
+ * @memberOf _
1181
+ * @type Function
1182
+ * @category Objects
1183
+ * @param {Object} object The object to iterate over.
1184
+ * @param {Function} [callback=identity] The function called per iteration.
1185
+ * @param {*} [thisArg] The `this` binding of `callback`.
1186
+ * @returns {Object} Returns `object`.
1187
+ * @example
1188
+ *
1189
+ * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) {
1190
+ * console.log(key);
1191
+ * });
1192
+ * // => logs '0', '1', and 'length' (property order is not guaranteed across environments)
1193
+ */
1194
+ var forOwn = function(collection, callback, thisArg) {
1195
+ var index, iterable = collection, result = iterable;
1196
+ if (!iterable) return result;
1197
+ if (!objectTypes[typeof iterable]) return result;
1198
+ callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);
1199
+ var ownIndex = -1,
1200
+ ownProps = objectTypes[typeof iterable] && keys(iterable),
1201
+ length = ownProps ? ownProps.length : 0;
1202
+
1203
+ while (++ownIndex < length) {
1204
+ index = ownProps[ownIndex];
1205
+ if (callback(iterable[index], index, collection) === false) return result;
1206
+ }
1207
+ return result
1208
+ };
1209
+
1210
+ module.exports = forOwn;
1211
+
1212
+
1213
+ /***/ },
1214
+ /* 13 */
1215
+ /***/ function(module, exports, __webpack_require__) {
1216
+
1217
+ /**
1218
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1219
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1220
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1221
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1222
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1223
+ * Available under MIT license <http://lodash.com/license>
1224
+ */
1225
+ var isNative = __webpack_require__(29),
1226
+ isObject = __webpack_require__(22),
1227
+ shimKeys = __webpack_require__(30);
1228
+
1229
+ /* Native method shortcuts for methods with the same name as other `lodash` methods */
1230
+ var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys;
1231
+
1232
+ /**
1233
+ * Creates an array composed of the own enumerable property names of an object.
1234
+ *
1235
+ * @static
1236
+ * @memberOf _
1237
+ * @category Objects
1238
+ * @param {Object} object The object to inspect.
1239
+ * @returns {Array} Returns an array of property names.
1240
+ * @example
1241
+ *
1242
+ * _.keys({ 'one': 1, 'two': 2, 'three': 3 });
1243
+ * // => ['one', 'two', 'three'] (property order is not guaranteed across environments)
1244
+ */
1245
+ var keys = !nativeKeys ? shimKeys : function(object) {
1246
+ if (!isObject(object)) {
1247
+ return [];
1248
+ }
1249
+ return nativeKeys(object);
1250
+ };
1251
+
1252
+ module.exports = keys;
1253
+
1254
+
1255
+ /***/ },
1256
+ /* 14 */
1257
+ /***/ function(module, exports, __webpack_require__) {
1258
+
1259
+ /**
1260
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1261
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1262
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1263
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1264
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1265
+ * Available under MIT license <http://lodash.com/license>
1266
+ */
1267
+ var createCallback = __webpack_require__(39),
1268
+ forOwn = __webpack_require__(12);
1269
+
1270
+ /**
1271
+ * This method is like `_.findIndex` except that it returns the key of the
1272
+ * first element that passes the callback check, instead of the element itself.
1273
+ *
1274
+ * If a property name is provided for `callback` the created "_.pluck" style
1275
+ * callback will return the property value of the given element.
1276
+ *
1277
+ * If an object is provided for `callback` the created "_.where" style callback
1278
+ * will return `true` for elements that have the properties of the given object,
1279
+ * else `false`.
1280
+ *
1281
+ * @static
1282
+ * @memberOf _
1283
+ * @category Objects
1284
+ * @param {Object} object The object to search.
1285
+ * @param {Function|Object|string} [callback=identity] The function called per
1286
+ * iteration. If a property name or object is provided it will be used to
1287
+ * create a "_.pluck" or "_.where" style callback, respectively.
1288
+ * @param {*} [thisArg] The `this` binding of `callback`.
1289
+ * @returns {string|undefined} Returns the key of the found element, else `undefined`.
1290
+ * @example
1291
+ *
1292
+ * var characters = {
1293
+ * 'barney': { 'age': 36, 'blocked': false },
1294
+ * 'fred': { 'age': 40, 'blocked': true },
1295
+ * 'pebbles': { 'age': 1, 'blocked': false }
1296
+ * };
1297
+ *
1298
+ * _.findKey(characters, function(chr) {
1299
+ * return chr.age < 40;
1300
+ * });
1301
+ * // => 'barney' (property order is not guaranteed across environments)
1302
+ *
1303
+ * // using "_.where" callback shorthand
1304
+ * _.findKey(characters, { 'age': 1 });
1305
+ * // => 'pebbles'
1306
+ *
1307
+ * // using "_.pluck" callback shorthand
1308
+ * _.findKey(characters, 'blocked');
1309
+ * // => 'fred'
1310
+ */
1311
+ function findKey(object, callback, thisArg) {
1312
+ var result;
1313
+ callback = createCallback(callback, thisArg, 3);
1314
+ forOwn(object, function(value, key, object) {
1315
+ if (callback(value, key, object)) {
1316
+ result = key;
1317
+ return false;
1318
+ }
1319
+ });
1320
+ return result;
1321
+ }
1322
+
1323
+ module.exports = findKey;
1324
+
1325
+
1326
+ /***/ },
1327
+ /* 15 */
1328
+ /***/ function(module, exports, __webpack_require__) {
1329
+
1330
+ /**
1331
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1332
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1333
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1334
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1335
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1336
+ * Available under MIT license <http://lodash.com/license>
1337
+ */
1338
+ var baseIndexOf = __webpack_require__(31),
1339
+ cacheIndexOf = __webpack_require__(32),
1340
+ createCache = __webpack_require__(33),
1341
+ getArray = __webpack_require__(34),
1342
+ isArguments = __webpack_require__(23),
1343
+ isArray = __webpack_require__(24),
1344
+ largeArraySize = __webpack_require__(35),
1345
+ releaseArray = __webpack_require__(36),
1346
+ releaseObject = __webpack_require__(37);
1347
+
1348
+ /**
1349
+ * Creates an array of unique values present in all provided arrays using
1350
+ * strict equality for comparisons, i.e. `===`.
1351
+ *
1352
+ * @static
1353
+ * @memberOf _
1354
+ * @category Arrays
1355
+ * @param {...Array} [array] The arrays to inspect.
1356
+ * @returns {Array} Returns an array of shared values.
1357
+ * @example
1358
+ *
1359
+ * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]);
1360
+ * // => [1, 2]
1361
+ */
1362
+ function intersection() {
1363
+ var args = [],
1364
+ argsIndex = -1,
1365
+ argsLength = arguments.length,
1366
+ caches = getArray(),
1367
+ indexOf = baseIndexOf,
1368
+ trustIndexOf = indexOf === baseIndexOf,
1369
+ seen = getArray();
1370
+
1371
+ while (++argsIndex < argsLength) {
1372
+ var value = arguments[argsIndex];
1373
+ if (isArray(value) || isArguments(value)) {
1374
+ args.push(value);
1375
+ caches.push(trustIndexOf && value.length >= largeArraySize &&
1376
+ createCache(argsIndex ? args[argsIndex] : seen));
1377
+ }
1378
+ }
1379
+ var array = args[0],
1380
+ index = -1,
1381
+ length = array ? array.length : 0,
1382
+ result = [];
1383
+
1384
+ outer:
1385
+ while (++index < length) {
1386
+ var cache = caches[0];
1387
+ value = array[index];
1388
+
1389
+ if ((cache ? cacheIndexOf(cache, value) : indexOf(seen, value)) < 0) {
1390
+ argsIndex = argsLength;
1391
+ (cache || seen).push(value);
1392
+ while (--argsIndex) {
1393
+ cache = caches[argsIndex];
1394
+ if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value)) < 0) {
1395
+ continue outer;
1396
+ }
1397
+ }
1398
+ result.push(value);
1399
+ }
1400
+ }
1401
+ while (argsLength--) {
1402
+ cache = caches[argsLength];
1403
+ if (cache) {
1404
+ releaseObject(cache);
1405
+ }
1406
+ }
1407
+ releaseArray(caches);
1408
+ releaseArray(seen);
1409
+ return result;
1410
+ }
1411
+
1412
+ module.exports = intersection;
1413
+
1414
+
1415
+ /***/ },
1416
+ /* 16 */
1417
+ /***/ function(module, exports, __webpack_require__) {
1418
+
1419
+ /**
1420
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1421
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1422
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1423
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1424
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1425
+ * Available under MIT license <http://lodash.com/license>
1426
+ */
1427
+ var baseUniq = __webpack_require__(38),
1428
+ createCallback = __webpack_require__(39);
1429
+
1430
+ /**
1431
+ * Creates a duplicate-value-free version of an array using strict equality
1432
+ * for comparisons, i.e. `===`. If the array is sorted, providing
1433
+ * `true` for `isSorted` will use a faster algorithm. If a callback is provided
1434
+ * each element of `array` is passed through the callback before uniqueness
1435
+ * is computed. The callback is bound to `thisArg` and invoked with three
1436
+ * arguments; (value, index, array).
1437
+ *
1438
+ * If a property name is provided for `callback` the created "_.pluck" style
1439
+ * callback will return the property value of the given element.
1440
+ *
1441
+ * If an object is provided for `callback` the created "_.where" style callback
1442
+ * will return `true` for elements that have the properties of the given object,
1443
+ * else `false`.
1444
+ *
1445
+ * @static
1446
+ * @memberOf _
1447
+ * @alias unique
1448
+ * @category Arrays
1449
+ * @param {Array} array The array to process.
1450
+ * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted.
1451
+ * @param {Function|Object|string} [callback=identity] The function called
1452
+ * per iteration. If a property name or object is provided it will be used
1453
+ * to create a "_.pluck" or "_.where" style callback, respectively.
1454
+ * @param {*} [thisArg] The `this` binding of `callback`.
1455
+ * @returns {Array} Returns a duplicate-value-free array.
1456
+ * @example
1457
+ *
1458
+ * _.uniq([1, 2, 1, 3, 1]);
1459
+ * // => [1, 2, 3]
1460
+ *
1461
+ * _.uniq([1, 1, 2, 2, 3], true);
1462
+ * // => [1, 2, 3]
1463
+ *
1464
+ * _.uniq(['A', 'b', 'C', 'a', 'B', 'c'], function(letter) { return letter.toLowerCase(); });
1465
+ * // => ['A', 'b', 'C']
1466
+ *
1467
+ * _.uniq([1, 2.5, 3, 1.5, 2, 3.5], function(num) { return this.floor(num); }, Math);
1468
+ * // => [1, 2.5, 3]
1469
+ *
1470
+ * // using "_.pluck" callback shorthand
1471
+ * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
1472
+ * // => [{ 'x': 1 }, { 'x': 2 }]
1473
+ */
1474
+ function uniq(array, isSorted, callback, thisArg) {
1475
+ // juggle arguments
1476
+ if (typeof isSorted != 'boolean' && isSorted != null) {
1477
+ thisArg = callback;
1478
+ callback = (typeof isSorted != 'function' && thisArg && thisArg[isSorted] === array) ? null : isSorted;
1479
+ isSorted = false;
1480
+ }
1481
+ if (callback != null) {
1482
+ callback = createCallback(callback, thisArg, 3);
1483
+ }
1484
+ return baseUniq(array, isSorted, callback);
1485
+ }
1486
+
1487
+ module.exports = uniq;
1488
+
1489
+
1490
+ /***/ },
1491
+ /* 17 */
1492
+ /***/ function(module, exports, __webpack_require__) {
1493
+
1494
+ /**
1495
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1496
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1497
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1498
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1499
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1500
+ * Available under MIT license <http://lodash.com/license>
1501
+ */
1502
+ var createCallback = __webpack_require__(39),
1503
+ forOwn = __webpack_require__(12);
1504
+
1505
+ /**
1506
+ * Creates an array of values by running each element in the collection
1507
+ * through the callback. The callback is bound to `thisArg` and invoked with
1508
+ * three arguments; (value, index|key, collection).
1509
+ *
1510
+ * If a property name is provided for `callback` the created "_.pluck" style
1511
+ * callback will return the property value of the given element.
1512
+ *
1513
+ * If an object is provided for `callback` the created "_.where" style callback
1514
+ * will return `true` for elements that have the properties of the given object,
1515
+ * else `false`.
1516
+ *
1517
+ * @static
1518
+ * @memberOf _
1519
+ * @alias collect
1520
+ * @category Collections
1521
+ * @param {Array|Object|string} collection The collection to iterate over.
1522
+ * @param {Function|Object|string} [callback=identity] The function called
1523
+ * per iteration. If a property name or object is provided it will be used
1524
+ * to create a "_.pluck" or "_.where" style callback, respectively.
1525
+ * @param {*} [thisArg] The `this` binding of `callback`.
1526
+ * @returns {Array} Returns a new array of the results of each `callback` execution.
1527
+ * @example
1528
+ *
1529
+ * _.map([1, 2, 3], function(num) { return num * 3; });
1530
+ * // => [3, 6, 9]
1531
+ *
1532
+ * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; });
1533
+ * // => [3, 6, 9] (property order is not guaranteed across environments)
1534
+ *
1535
+ * var characters = [
1536
+ * { 'name': 'barney', 'age': 36 },
1537
+ * { 'name': 'fred', 'age': 40 }
1538
+ * ];
1539
+ *
1540
+ * // using "_.pluck" callback shorthand
1541
+ * _.map(characters, 'name');
1542
+ * // => ['barney', 'fred']
1543
+ */
1544
+ function map(collection, callback, thisArg) {
1545
+ var index = -1,
1546
+ length = collection ? collection.length : 0;
1547
+
1548
+ callback = createCallback(callback, thisArg, 3);
1549
+ if (typeof length == 'number') {
1550
+ var result = Array(length);
1551
+ while (++index < length) {
1552
+ result[index] = callback(collection[index], index, collection);
1553
+ }
1554
+ } else {
1555
+ result = [];
1556
+ forOwn(collection, function(value, key, collection) {
1557
+ result[++index] = callback(value, key, collection);
1558
+ });
1559
+ }
1560
+ return result;
1561
+ }
1562
+
1563
+ module.exports = map;
1564
+
1565
+
1566
+ /***/ },
1567
+ /* 18 */
1568
+ /***/ function(module, exports, __webpack_require__) {
1569
+
1570
+ /**
1571
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1572
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1573
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1574
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1575
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1576
+ * Available under MIT license <http://lodash.com/license>
1577
+ */
1578
+ var baseCreateCallback = __webpack_require__(27),
1579
+ forOwn = __webpack_require__(12);
1580
+
1581
+ /**
1582
+ * Iterates over elements of a collection, executing the callback for each
1583
+ * element. The callback is bound to `thisArg` and invoked with three arguments;
1584
+ * (value, index|key, collection). Callbacks may exit iteration early by
1585
+ * explicitly returning `false`.
1586
+ *
1587
+ * Note: As with other "Collections" methods, objects with a `length` property
1588
+ * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
1589
+ * may be used for object iteration.
1590
+ *
1591
+ * @static
1592
+ * @memberOf _
1593
+ * @alias each
1594
+ * @category Collections
1595
+ * @param {Array|Object|string} collection The collection to iterate over.
1596
+ * @param {Function} [callback=identity] The function called per iteration.
1597
+ * @param {*} [thisArg] The `this` binding of `callback`.
1598
+ * @returns {Array|Object|string} Returns `collection`.
1599
+ * @example
1600
+ *
1601
+ * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(',');
1602
+ * // => logs each number and returns '1,2,3'
1603
+ *
1604
+ * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); });
1605
+ * // => logs each number and returns the object (property order is not guaranteed across environments)
1606
+ */
1607
+ function forEach(collection, callback, thisArg) {
1608
+ var index = -1,
1609
+ length = collection ? collection.length : 0;
1610
+
1611
+ callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);
1612
+ if (typeof length == 'number') {
1613
+ while (++index < length) {
1614
+ if (callback(collection[index], index, collection) === false) {
1615
+ break;
1616
+ }
1617
+ }
1618
+ } else {
1619
+ forOwn(collection, callback);
1620
+ }
1621
+ return collection;
1622
+ }
1623
+
1624
+ module.exports = forEach;
1625
+
1626
+
1627
+ /***/ },
1628
+ /* 19 */
1629
+ /***/ function(module, exports, __webpack_require__) {
1630
+
1631
+ /**
1632
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1633
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1634
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1635
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1636
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1637
+ * Available under MIT license <http://lodash.com/license>
1638
+ */
1639
+ var keys = __webpack_require__(13);
1640
+
1641
+ /**
1642
+ * Gets the size of the `collection` by returning `collection.length` for arrays
1643
+ * and array-like objects or the number of own enumerable properties for objects.
1644
+ *
1645
+ * @static
1646
+ * @memberOf _
1647
+ * @category Collections
1648
+ * @param {Array|Object|string} collection The collection to inspect.
1649
+ * @returns {number} Returns `collection.length` or number of own enumerable properties.
1650
+ * @example
1651
+ *
1652
+ * _.size([1, 2]);
1653
+ * // => 2
1654
+ *
1655
+ * _.size({ 'one': 1, 'two': 2, 'three': 3 });
1656
+ * // => 3
1657
+ *
1658
+ * _.size('pebbles');
1659
+ * // => 7
1660
+ */
1661
+ function size(collection) {
1662
+ var length = collection ? collection.length : 0;
1663
+ return typeof length == 'number' ? length : keys(collection).length;
1664
+ }
1665
+
1666
+ module.exports = size;
1667
+
1668
+
1669
+ /***/ },
1670
+ /* 20 */
1671
+ /***/ function(module, exports, __webpack_require__) {
1672
+
1673
+ // Copyright Joyent, Inc. and other Node contributors.
1674
+ //
1675
+ // Permission is hereby granted, free of charge, to any person obtaining a
1676
+ // copy of this software and associated documentation files (the
1677
+ // "Software"), to deal in the Software without restriction, including
1678
+ // without limitation the rights to use, copy, modify, merge, publish,
1679
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
1680
+ // persons to whom the Software is furnished to do so, subject to the
1681
+ // following conditions:
1682
+ //
1683
+ // The above copyright notice and this permission notice shall be included
1684
+ // in all copies or substantial portions of the Software.
1685
+ //
1686
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1687
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1688
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
1689
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
1690
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
1691
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
1692
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
1693
+
1694
+ function EventEmitter() {
1695
+ this._events = this._events || {};
1696
+ this._maxListeners = this._maxListeners || undefined;
1697
+ }
1698
+ module.exports = EventEmitter;
1699
+
1700
+ // Backwards-compat with node 0.10.x
1701
+ EventEmitter.EventEmitter = EventEmitter;
1702
+
1703
+ EventEmitter.prototype._events = undefined;
1704
+ EventEmitter.prototype._maxListeners = undefined;
1705
+
1706
+ // By default EventEmitters will print a warning if more than 10 listeners are
1707
+ // added to it. This is a useful default which helps finding memory leaks.
1708
+ EventEmitter.defaultMaxListeners = 10;
1709
+
1710
+ // Obviously not all Emitters should be limited to 10. This function allows
1711
+ // that to be increased. Set to zero for unlimited.
1712
+ EventEmitter.prototype.setMaxListeners = function(n) {
1713
+ if (!isNumber(n) || n < 0 || isNaN(n))
1714
+ throw TypeError('n must be a positive number');
1715
+ this._maxListeners = n;
1716
+ return this;
1717
+ };
1718
+
1719
+ EventEmitter.prototype.emit = function(type) {
1720
+ var er, handler, len, args, i, listeners;
1721
+
1722
+ if (!this._events)
1723
+ this._events = {};
1724
+
1725
+ // If there is no 'error' event listener then throw.
1726
+ if (type === 'error') {
1727
+ if (!this._events.error ||
1728
+ (isObject(this._events.error) && !this._events.error.length)) {
1729
+ er = arguments[1];
1730
+ if (er instanceof Error) {
1731
+ throw er; // Unhandled 'error' event
1732
+ } else {
1733
+ throw TypeError('Uncaught, unspecified "error" event.');
1734
+ }
1735
+ return false;
1736
+ }
1737
+ }
1738
+
1739
+ handler = this._events[type];
1740
+
1741
+ if (isUndefined(handler))
1742
+ return false;
1743
+
1744
+ if (isFunction(handler)) {
1745
+ switch (arguments.length) {
1746
+ // fast cases
1747
+ case 1:
1748
+ handler.call(this);
1749
+ break;
1750
+ case 2:
1751
+ handler.call(this, arguments[1]);
1752
+ break;
1753
+ case 3:
1754
+ handler.call(this, arguments[1], arguments[2]);
1755
+ break;
1756
+ // slower
1757
+ default:
1758
+ len = arguments.length;
1759
+ args = new Array(len - 1);
1760
+ for (i = 1; i < len; i++)
1761
+ args[i - 1] = arguments[i];
1762
+ handler.apply(this, args);
1763
+ }
1764
+ } else if (isObject(handler)) {
1765
+ len = arguments.length;
1766
+ args = new Array(len - 1);
1767
+ for (i = 1; i < len; i++)
1768
+ args[i - 1] = arguments[i];
1769
+
1770
+ listeners = handler.slice();
1771
+ len = listeners.length;
1772
+ for (i = 0; i < len; i++)
1773
+ listeners[i].apply(this, args);
1774
+ }
1775
+
1776
+ return true;
1777
+ };
1778
+
1779
+ EventEmitter.prototype.addListener = function(type, listener) {
1780
+ var m;
1781
+
1782
+ if (!isFunction(listener))
1783
+ throw TypeError('listener must be a function');
1784
+
1785
+ if (!this._events)
1786
+ this._events = {};
1787
+
1788
+ // To avoid recursion in the case that type === "newListener"! Before
1789
+ // adding it to the listeners, first emit "newListener".
1790
+ if (this._events.newListener)
1791
+ this.emit('newListener', type,
1792
+ isFunction(listener.listener) ?
1793
+ listener.listener : listener);
1794
+
1795
+ if (!this._events[type])
1796
+ // Optimize the case of one listener. Don't need the extra array object.
1797
+ this._events[type] = listener;
1798
+ else if (isObject(this._events[type]))
1799
+ // If we've already got an array, just append.
1800
+ this._events[type].push(listener);
1801
+ else
1802
+ // Adding the second element, need to change to array.
1803
+ this._events[type] = [this._events[type], listener];
1804
+
1805
+ // Check for listener leak
1806
+ if (isObject(this._events[type]) && !this._events[type].warned) {
1807
+ var m;
1808
+ if (!isUndefined(this._maxListeners)) {
1809
+ m = this._maxListeners;
1810
+ } else {
1811
+ m = EventEmitter.defaultMaxListeners;
1812
+ }
1813
+
1814
+ if (m && m > 0 && this._events[type].length > m) {
1815
+ this._events[type].warned = true;
1816
+ console.error('(node) warning: possible EventEmitter memory ' +
1817
+ 'leak detected. %d listeners added. ' +
1818
+ 'Use emitter.setMaxListeners() to increase limit.',
1819
+ this._events[type].length);
1820
+ if (typeof console.trace === 'function') {
1821
+ // not supported in IE 10
1822
+ console.trace();
1823
+ }
1824
+ }
1825
+ }
1826
+
1827
+ return this;
1828
+ };
1829
+
1830
+ EventEmitter.prototype.on = EventEmitter.prototype.addListener;
1831
+
1832
+ EventEmitter.prototype.once = function(type, listener) {
1833
+ if (!isFunction(listener))
1834
+ throw TypeError('listener must be a function');
1835
+
1836
+ var fired = false;
1837
+
1838
+ function g() {
1839
+ this.removeListener(type, g);
1840
+
1841
+ if (!fired) {
1842
+ fired = true;
1843
+ listener.apply(this, arguments);
1844
+ }
1845
+ }
1846
+
1847
+ g.listener = listener;
1848
+ this.on(type, g);
1849
+
1850
+ return this;
1851
+ };
1852
+
1853
+ // emits a 'removeListener' event iff the listener was removed
1854
+ EventEmitter.prototype.removeListener = function(type, listener) {
1855
+ var list, position, length, i;
1856
+
1857
+ if (!isFunction(listener))
1858
+ throw TypeError('listener must be a function');
1859
+
1860
+ if (!this._events || !this._events[type])
1861
+ return this;
1862
+
1863
+ list = this._events[type];
1864
+ length = list.length;
1865
+ position = -1;
1866
+
1867
+ if (list === listener ||
1868
+ (isFunction(list.listener) && list.listener === listener)) {
1869
+ delete this._events[type];
1870
+ if (this._events.removeListener)
1871
+ this.emit('removeListener', type, listener);
1872
+
1873
+ } else if (isObject(list)) {
1874
+ for (i = length; i-- > 0;) {
1875
+ if (list[i] === listener ||
1876
+ (list[i].listener && list[i].listener === listener)) {
1877
+ position = i;
1878
+ break;
1879
+ }
1880
+ }
1881
+
1882
+ if (position < 0)
1883
+ return this;
1884
+
1885
+ if (list.length === 1) {
1886
+ list.length = 0;
1887
+ delete this._events[type];
1888
+ } else {
1889
+ list.splice(position, 1);
1890
+ }
1891
+
1892
+ if (this._events.removeListener)
1893
+ this.emit('removeListener', type, listener);
1894
+ }
1895
+
1896
+ return this;
1897
+ };
1898
+
1899
+ EventEmitter.prototype.removeAllListeners = function(type) {
1900
+ var key, listeners;
1901
+
1902
+ if (!this._events)
1903
+ return this;
1904
+
1905
+ // not listening for removeListener, no need to emit
1906
+ if (!this._events.removeListener) {
1907
+ if (arguments.length === 0)
1908
+ this._events = {};
1909
+ else if (this._events[type])
1910
+ delete this._events[type];
1911
+ return this;
1912
+ }
1913
+
1914
+ // emit removeListener for all listeners on all events
1915
+ if (arguments.length === 0) {
1916
+ for (key in this._events) {
1917
+ if (key === 'removeListener') continue;
1918
+ this.removeAllListeners(key);
1919
+ }
1920
+ this.removeAllListeners('removeListener');
1921
+ this._events = {};
1922
+ return this;
1923
+ }
1924
+
1925
+ listeners = this._events[type];
1926
+
1927
+ if (isFunction(listeners)) {
1928
+ this.removeListener(type, listeners);
1929
+ } else {
1930
+ // LIFO order
1931
+ while (listeners.length)
1932
+ this.removeListener(type, listeners[listeners.length - 1]);
1933
+ }
1934
+ delete this._events[type];
1935
+
1936
+ return this;
1937
+ };
1938
+
1939
+ EventEmitter.prototype.listeners = function(type) {
1940
+ var ret;
1941
+ if (!this._events || !this._events[type])
1942
+ ret = [];
1943
+ else if (isFunction(this._events[type]))
1944
+ ret = [this._events[type]];
1945
+ else
1946
+ ret = this._events[type].slice();
1947
+ return ret;
1948
+ };
1949
+
1950
+ EventEmitter.listenerCount = function(emitter, type) {
1951
+ var ret;
1952
+ if (!emitter._events || !emitter._events[type])
1953
+ ret = 0;
1954
+ else if (isFunction(emitter._events[type]))
1955
+ ret = 1;
1956
+ else
1957
+ ret = emitter._events[type].length;
1958
+ return ret;
1959
+ };
1960
+
1961
+ function isFunction(arg) {
1962
+ return typeof arg === 'function';
1963
+ }
1964
+
1965
+ function isNumber(arg) {
1966
+ return typeof arg === 'number';
1967
+ }
1968
+
1969
+ function isObject(arg) {
1970
+ return typeof arg === 'object' && arg !== null;
1971
+ }
1972
+
1973
+ function isUndefined(arg) {
1974
+ return arg === void 0;
1975
+ }
1976
+
1977
+
1978
+ /***/ },
1979
+ /* 21 */
1980
+ /***/ function(module, exports, __webpack_require__) {
1981
+
1982
+ module.exports = function isBuffer(arg) {
1983
+ return arg && typeof arg === 'object'
1984
+ && typeof arg.copy === 'function'
1985
+ && typeof arg.fill === 'function'
1986
+ && typeof arg.readUInt8 === 'function';
1987
+ }
1988
+
1989
+ /***/ },
1990
+ /* 22 */
1991
+ /***/ function(module, exports, __webpack_require__) {
1992
+
1993
+ /**
1994
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1995
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1996
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1997
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1998
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1999
+ * Available under MIT license <http://lodash.com/license>
2000
+ */
2001
+ var objectTypes = __webpack_require__(28);
2002
+
2003
+ /**
2004
+ * Checks if `value` is the language type of Object.
2005
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
2006
+ *
2007
+ * @static
2008
+ * @memberOf _
2009
+ * @category Objects
2010
+ * @param {*} value The value to check.
2011
+ * @returns {boolean} Returns `true` if the `value` is an object, else `false`.
2012
+ * @example
2013
+ *
2014
+ * _.isObject({});
2015
+ * // => true
2016
+ *
2017
+ * _.isObject([1, 2, 3]);
2018
+ * // => true
2019
+ *
2020
+ * _.isObject(1);
2021
+ * // => false
2022
+ */
2023
+ function isObject(value) {
2024
+ // check if the value is the ECMAScript language type of Object
2025
+ // http://es5.github.io/#x8
2026
+ // and avoid a V8 bug
2027
+ // http://code.google.com/p/v8/issues/detail?id=2291
2028
+ return !!(value && objectTypes[typeof value]);
2029
+ }
2030
+
2031
+ module.exports = isObject;
2032
+
2033
+
2034
+ /***/ },
2035
+ /* 23 */
2036
+ /***/ function(module, exports, __webpack_require__) {
2037
+
2038
+ /**
2039
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2040
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2041
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2042
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2043
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2044
+ * Available under MIT license <http://lodash.com/license>
2045
+ */
2046
+
2047
+ /** `Object#toString` result shortcuts */
2048
+ var argsClass = '[object Arguments]';
2049
+
2050
+ /** Used for native method references */
2051
+ var objectProto = Object.prototype;
2052
+
2053
+ /** Used to resolve the internal [[Class]] of values */
2054
+ var toString = objectProto.toString;
2055
+
2056
+ /**
2057
+ * Checks if `value` is an `arguments` object.
2058
+ *
2059
+ * @static
2060
+ * @memberOf _
2061
+ * @category Objects
2062
+ * @param {*} value The value to check.
2063
+ * @returns {boolean} Returns `true` if the `value` is an `arguments` object, else `false`.
2064
+ * @example
2065
+ *
2066
+ * (function() { return _.isArguments(arguments); })(1, 2, 3);
2067
+ * // => true
2068
+ *
2069
+ * _.isArguments([1, 2, 3]);
2070
+ * // => false
2071
+ */
2072
+ function isArguments(value) {
2073
+ return value && typeof value == 'object' && typeof value.length == 'number' &&
2074
+ toString.call(value) == argsClass || false;
2075
+ }
2076
+
2077
+ module.exports = isArguments;
2078
+
2079
+
2080
+ /***/ },
2081
+ /* 24 */
2082
+ /***/ function(module, exports, __webpack_require__) {
2083
+
2084
+ /**
2085
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2086
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2087
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2088
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2089
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2090
+ * Available under MIT license <http://lodash.com/license>
2091
+ */
2092
+ var isNative = __webpack_require__(29);
2093
+
2094
+ /** `Object#toString` result shortcuts */
2095
+ var arrayClass = '[object Array]';
2096
+
2097
+ /** Used for native method references */
2098
+ var objectProto = Object.prototype;
2099
+
2100
+ /** Used to resolve the internal [[Class]] of values */
2101
+ var toString = objectProto.toString;
2102
+
2103
+ /* Native method shortcuts for methods with the same name as other `lodash` methods */
2104
+ var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray;
2105
+
2106
+ /**
2107
+ * Checks if `value` is an array.
2108
+ *
2109
+ * @static
2110
+ * @memberOf _
2111
+ * @type Function
2112
+ * @category Objects
2113
+ * @param {*} value The value to check.
2114
+ * @returns {boolean} Returns `true` if the `value` is an array, else `false`.
2115
+ * @example
2116
+ *
2117
+ * (function() { return _.isArray(arguments); })();
2118
+ * // => false
2119
+ *
2120
+ * _.isArray([1, 2, 3]);
2121
+ * // => true
2122
+ */
2123
+ var isArray = nativeIsArray || function(value) {
2124
+ return value && typeof value == 'object' && typeof value.length == 'number' &&
2125
+ toString.call(value) == arrayClass || false;
2126
+ };
2127
+
2128
+ module.exports = isArray;
2129
+
2130
+
2131
+ /***/ },
2132
+ /* 25 */
2133
+ /***/ function(module, exports, __webpack_require__) {
2134
+
2135
+ // shim for using process in browser
2136
+
2137
+ var process = module.exports = {};
2138
+
2139
+ process.nextTick = (function () {
2140
+ var canSetImmediate = typeof window !== 'undefined'
2141
+ && window.setImmediate;
2142
+ var canPost = typeof window !== 'undefined'
2143
+ && window.postMessage && window.addEventListener
2144
+ ;
2145
+
2146
+ if (canSetImmediate) {
2147
+ return function (f) { return window.setImmediate(f) };
2148
+ }
2149
+
2150
+ if (canPost) {
2151
+ var queue = [];
2152
+ window.addEventListener('message', function (ev) {
2153
+ var source = ev.source;
2154
+ if ((source === window || source === null) && ev.data === 'process-tick') {
2155
+ ev.stopPropagation();
2156
+ if (queue.length > 0) {
2157
+ var fn = queue.shift();
2158
+ fn();
2159
+ }
2160
+ }
2161
+ }, true);
2162
+
2163
+ return function nextTick(fn) {
2164
+ queue.push(fn);
2165
+ window.postMessage('process-tick', '*');
2166
+ };
2167
+ }
2168
+
2169
+ return function nextTick(fn) {
2170
+ setTimeout(fn, 0);
2171
+ };
2172
+ })();
2173
+
2174
+ process.title = 'browser';
2175
+ process.browser = true;
2176
+ process.env = {};
2177
+ process.argv = [];
2178
+
2179
+ function noop() {}
2180
+
2181
+ process.on = noop;
2182
+ process.once = noop;
2183
+ process.off = noop;
2184
+ process.emit = noop;
2185
+
2186
+ process.binding = function (name) {
2187
+ throw new Error('process.binding is not supported');
2188
+ }
2189
+
2190
+ // TODO(shtylman)
2191
+ process.cwd = function () { return '/' };
2192
+ process.chdir = function (dir) {
2193
+ throw new Error('process.chdir is not supported');
2194
+ };
2195
+
2196
+
2197
+ /***/ },
2198
+ /* 26 */
2199
+ /***/ function(module, exports, __webpack_require__) {
2200
+
2201
+ /**
2202
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2203
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2204
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2205
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2206
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2207
+ * Available under MIT license <http://lodash.com/license>
2208
+ */
2209
+ var assign = __webpack_require__(41),
2210
+ forEach = __webpack_require__(18),
2211
+ forOwn = __webpack_require__(12),
2212
+ getArray = __webpack_require__(34),
2213
+ isArray = __webpack_require__(24),
2214
+ isObject = __webpack_require__(22),
2215
+ releaseArray = __webpack_require__(36),
2216
+ slice = __webpack_require__(42);
2217
+
2218
+ /** Used to match regexp flags from their coerced string values */
2219
+ var reFlags = /\w*$/;
2220
+
2221
+ /** `Object#toString` result shortcuts */
2222
+ var argsClass = '[object Arguments]',
2223
+ arrayClass = '[object Array]',
2224
+ boolClass = '[object Boolean]',
2225
+ dateClass = '[object Date]',
2226
+ funcClass = '[object Function]',
2227
+ numberClass = '[object Number]',
2228
+ objectClass = '[object Object]',
2229
+ regexpClass = '[object RegExp]',
2230
+ stringClass = '[object String]';
2231
+
2232
+ /** Used to identify object classifications that `_.clone` supports */
2233
+ var cloneableClasses = {};
2234
+ cloneableClasses[funcClass] = false;
2235
+ cloneableClasses[argsClass] = cloneableClasses[arrayClass] =
2236
+ cloneableClasses[boolClass] = cloneableClasses[dateClass] =
2237
+ cloneableClasses[numberClass] = cloneableClasses[objectClass] =
2238
+ cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true;
2239
+
2240
+ /** Used for native method references */
2241
+ var objectProto = Object.prototype;
2242
+
2243
+ /** Used to resolve the internal [[Class]] of values */
2244
+ var toString = objectProto.toString;
2245
+
2246
+ /** Native method shortcuts */
2247
+ var hasOwnProperty = objectProto.hasOwnProperty;
2248
+
2249
+ /** Used to lookup a built-in constructor by [[Class]] */
2250
+ var ctorByClass = {};
2251
+ ctorByClass[arrayClass] = Array;
2252
+ ctorByClass[boolClass] = Boolean;
2253
+ ctorByClass[dateClass] = Date;
2254
+ ctorByClass[funcClass] = Function;
2255
+ ctorByClass[objectClass] = Object;
2256
+ ctorByClass[numberClass] = Number;
2257
+ ctorByClass[regexpClass] = RegExp;
2258
+ ctorByClass[stringClass] = String;
2259
+
2260
+ /**
2261
+ * The base implementation of `_.clone` without argument juggling or support
2262
+ * for `thisArg` binding.
2263
+ *
2264
+ * @private
2265
+ * @param {*} value The value to clone.
2266
+ * @param {boolean} [isDeep=false] Specify a deep clone.
2267
+ * @param {Function} [callback] The function to customize cloning values.
2268
+ * @param {Array} [stackA=[]] Tracks traversed source objects.
2269
+ * @param {Array} [stackB=[]] Associates clones with source counterparts.
2270
+ * @returns {*} Returns the cloned value.
2271
+ */
2272
+ function baseClone(value, isDeep, callback, stackA, stackB) {
2273
+ if (callback) {
2274
+ var result = callback(value);
2275
+ if (typeof result != 'undefined') {
2276
+ return result;
2277
+ }
2278
+ }
2279
+ // inspect [[Class]]
2280
+ var isObj = isObject(value);
2281
+ if (isObj) {
2282
+ var className = toString.call(value);
2283
+ if (!cloneableClasses[className]) {
2284
+ return value;
2285
+ }
2286
+ var ctor = ctorByClass[className];
2287
+ switch (className) {
2288
+ case boolClass:
2289
+ case dateClass:
2290
+ return new ctor(+value);
2291
+
2292
+ case numberClass:
2293
+ case stringClass:
2294
+ return new ctor(value);
2295
+
2296
+ case regexpClass:
2297
+ result = ctor(value.source, reFlags.exec(value));
2298
+ result.lastIndex = value.lastIndex;
2299
+ return result;
2300
+ }
2301
+ } else {
2302
+ return value;
2303
+ }
2304
+ var isArr = isArray(value);
2305
+ if (isDeep) {
2306
+ // check for circular references and return corresponding clone
2307
+ var initedStack = !stackA;
2308
+ stackA || (stackA = getArray());
2309
+ stackB || (stackB = getArray());
2310
+
2311
+ var length = stackA.length;
2312
+ while (length--) {
2313
+ if (stackA[length] == value) {
2314
+ return stackB[length];
2315
+ }
2316
+ }
2317
+ result = isArr ? ctor(value.length) : {};
2318
+ }
2319
+ else {
2320
+ result = isArr ? slice(value) : assign({}, value);
2321
+ }
2322
+ // add array properties assigned by `RegExp#exec`
2323
+ if (isArr) {
2324
+ if (hasOwnProperty.call(value, 'index')) {
2325
+ result.index = value.index;
2326
+ }
2327
+ if (hasOwnProperty.call(value, 'input')) {
2328
+ result.input = value.input;
2329
+ }
2330
+ }
2331
+ // exit for shallow clone
2332
+ if (!isDeep) {
2333
+ return result;
2334
+ }
2335
+ // add the source value to the stack of traversed objects
2336
+ // and associate it with its clone
2337
+ stackA.push(value);
2338
+ stackB.push(result);
2339
+
2340
+ // recursively populate clone (susceptible to call stack limits)
2341
+ (isArr ? forEach : forOwn)(value, function(objValue, key) {
2342
+ result[key] = baseClone(objValue, isDeep, callback, stackA, stackB);
2343
+ });
2344
+
2345
+ if (initedStack) {
2346
+ releaseArray(stackA);
2347
+ releaseArray(stackB);
2348
+ }
2349
+ return result;
2350
+ }
2351
+
2352
+ module.exports = baseClone;
2353
+
2354
+
2355
+ /***/ },
2356
+ /* 27 */
2357
+ /***/ function(module, exports, __webpack_require__) {
2358
+
2359
+ /**
2360
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2361
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2362
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2363
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2364
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2365
+ * Available under MIT license <http://lodash.com/license>
2366
+ */
2367
+ var bind = __webpack_require__(43),
2368
+ identity = __webpack_require__(53),
2369
+ setBindData = __webpack_require__(44),
2370
+ support = __webpack_require__(45);
2371
+
2372
+ /** Used to detected named functions */
2373
+ var reFuncName = /^\s*function[ \n\r\t]+\w/;
2374
+
2375
+ /** Used to detect functions containing a `this` reference */
2376
+ var reThis = /\bthis\b/;
2377
+
2378
+ /** Native method shortcuts */
2379
+ var fnToString = Function.prototype.toString;
2380
+
2381
+ /**
2382
+ * The base implementation of `_.createCallback` without support for creating
2383
+ * "_.pluck" or "_.where" style callbacks.
2384
+ *
2385
+ * @private
2386
+ * @param {*} [func=identity] The value to convert to a callback.
2387
+ * @param {*} [thisArg] The `this` binding of the created callback.
2388
+ * @param {number} [argCount] The number of arguments the callback accepts.
2389
+ * @returns {Function} Returns a callback function.
2390
+ */
2391
+ function baseCreateCallback(func, thisArg, argCount) {
2392
+ if (typeof func != 'function') {
2393
+ return identity;
2394
+ }
2395
+ // exit early for no `thisArg` or already bound by `Function#bind`
2396
+ if (typeof thisArg == 'undefined' || !('prototype' in func)) {
2397
+ return func;
2398
+ }
2399
+ var bindData = func.__bindData__;
2400
+ if (typeof bindData == 'undefined') {
2401
+ if (support.funcNames) {
2402
+ bindData = !func.name;
2403
+ }
2404
+ bindData = bindData || !support.funcDecomp;
2405
+ if (!bindData) {
2406
+ var source = fnToString.call(func);
2407
+ if (!support.funcNames) {
2408
+ bindData = !reFuncName.test(source);
2409
+ }
2410
+ if (!bindData) {
2411
+ // checks if `func` references the `this` keyword and stores the result
2412
+ bindData = reThis.test(source);
2413
+ setBindData(func, bindData);
2414
+ }
2415
+ }
2416
+ }
2417
+ // exit early if there are no `this` references or `func` is bound
2418
+ if (bindData === false || (bindData !== true && bindData[1] & 1)) {
2419
+ return func;
2420
+ }
2421
+ switch (argCount) {
2422
+ case 1: return function(value) {
2423
+ return func.call(thisArg, value);
2424
+ };
2425
+ case 2: return function(a, b) {
2426
+ return func.call(thisArg, a, b);
2427
+ };
2428
+ case 3: return function(value, index, collection) {
2429
+ return func.call(thisArg, value, index, collection);
2430
+ };
2431
+ case 4: return function(accumulator, value, index, collection) {
2432
+ return func.call(thisArg, accumulator, value, index, collection);
2433
+ };
2434
+ }
2435
+ return bind(func, thisArg);
2436
+ }
2437
+
2438
+ module.exports = baseCreateCallback;
2439
+
2440
+
2441
+ /***/ },
2442
+ /* 28 */
2443
+ /***/ function(module, exports, __webpack_require__) {
2444
+
2445
+ /**
2446
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2447
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2448
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2449
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2450
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2451
+ * Available under MIT license <http://lodash.com/license>
2452
+ */
2453
+
2454
+ /** Used to determine if values are of the language type Object */
2455
+ var objectTypes = {
2456
+ 'boolean': false,
2457
+ 'function': true,
2458
+ 'object': true,
2459
+ 'number': false,
2460
+ 'string': false,
2461
+ 'undefined': false
2462
+ };
2463
+
2464
+ module.exports = objectTypes;
2465
+
2466
+
2467
+ /***/ },
2468
+ /* 29 */
2469
+ /***/ function(module, exports, __webpack_require__) {
2470
+
2471
+ /**
2472
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2473
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2474
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2475
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2476
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2477
+ * Available under MIT license <http://lodash.com/license>
2478
+ */
2479
+
2480
+ /** Used for native method references */
2481
+ var objectProto = Object.prototype;
2482
+
2483
+ /** Used to resolve the internal [[Class]] of values */
2484
+ var toString = objectProto.toString;
2485
+
2486
+ /** Used to detect if a method is native */
2487
+ var reNative = RegExp('^' +
2488
+ String(toString)
2489
+ .replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
2490
+ .replace(/toString| for [^\]]+/g, '.*?') + '$'
2491
+ );
2492
+
2493
+ /**
2494
+ * Checks if `value` is a native function.
2495
+ *
2496
+ * @private
2497
+ * @param {*} value The value to check.
2498
+ * @returns {boolean} Returns `true` if the `value` is a native function, else `false`.
2499
+ */
2500
+ function isNative(value) {
2501
+ return typeof value == 'function' && reNative.test(value);
2502
+ }
2503
+
2504
+ module.exports = isNative;
2505
+
2506
+
2507
+ /***/ },
2508
+ /* 30 */
2509
+ /***/ function(module, exports, __webpack_require__) {
2510
+
2511
+ /**
2512
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2513
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2514
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2515
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2516
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2517
+ * Available under MIT license <http://lodash.com/license>
2518
+ */
2519
+ var objectTypes = __webpack_require__(28);
2520
+
2521
+ /** Used for native method references */
2522
+ var objectProto = Object.prototype;
2523
+
2524
+ /** Native method shortcuts */
2525
+ var hasOwnProperty = objectProto.hasOwnProperty;
2526
+
2527
+ /**
2528
+ * A fallback implementation of `Object.keys` which produces an array of the
2529
+ * given object's own enumerable property names.
2530
+ *
2531
+ * @private
2532
+ * @type Function
2533
+ * @param {Object} object The object to inspect.
2534
+ * @returns {Array} Returns an array of property names.
2535
+ */
2536
+ var shimKeys = function(object) {
2537
+ var index, iterable = object, result = [];
2538
+ if (!iterable) return result;
2539
+ if (!(objectTypes[typeof object])) return result;
2540
+ for (index in iterable) {
2541
+ if (hasOwnProperty.call(iterable, index)) {
2542
+ result.push(index);
2543
+ }
2544
+ }
2545
+ return result
2546
+ };
2547
+
2548
+ module.exports = shimKeys;
2549
+
2550
+
2551
+ /***/ },
2552
+ /* 31 */
2553
+ /***/ function(module, exports, __webpack_require__) {
2554
+
2555
+ /**
2556
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2557
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2558
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2559
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2560
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2561
+ * Available under MIT license <http://lodash.com/license>
2562
+ */
2563
+
2564
+ /**
2565
+ * The base implementation of `_.indexOf` without support for binary searches
2566
+ * or `fromIndex` constraints.
2567
+ *
2568
+ * @private
2569
+ * @param {Array} array The array to search.
2570
+ * @param {*} value The value to search for.
2571
+ * @param {number} [fromIndex=0] The index to search from.
2572
+ * @returns {number} Returns the index of the matched value or `-1`.
2573
+ */
2574
+ function baseIndexOf(array, value, fromIndex) {
2575
+ var index = (fromIndex || 0) - 1,
2576
+ length = array ? array.length : 0;
2577
+
2578
+ while (++index < length) {
2579
+ if (array[index] === value) {
2580
+ return index;
2581
+ }
2582
+ }
2583
+ return -1;
2584
+ }
2585
+
2586
+ module.exports = baseIndexOf;
2587
+
2588
+
2589
+ /***/ },
2590
+ /* 32 */
2591
+ /***/ function(module, exports, __webpack_require__) {
2592
+
2593
+ /**
2594
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2595
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2596
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2597
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2598
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2599
+ * Available under MIT license <http://lodash.com/license>
2600
+ */
2601
+ var baseIndexOf = __webpack_require__(31),
2602
+ keyPrefix = __webpack_require__(46);
2603
+
2604
+ /**
2605
+ * An implementation of `_.contains` for cache objects that mimics the return
2606
+ * signature of `_.indexOf` by returning `0` if the value is found, else `-1`.
2607
+ *
2608
+ * @private
2609
+ * @param {Object} cache The cache object to inspect.
2610
+ * @param {*} value The value to search for.
2611
+ * @returns {number} Returns `0` if `value` is found, else `-1`.
2612
+ */
2613
+ function cacheIndexOf(cache, value) {
2614
+ var type = typeof value;
2615
+ cache = cache.cache;
2616
+
2617
+ if (type == 'boolean' || value == null) {
2618
+ return cache[value] ? 0 : -1;
2619
+ }
2620
+ if (type != 'number' && type != 'string') {
2621
+ type = 'object';
2622
+ }
2623
+ var key = type == 'number' ? value : keyPrefix + value;
2624
+ cache = (cache = cache[type]) && cache[key];
2625
+
2626
+ return type == 'object'
2627
+ ? (cache && baseIndexOf(cache, value) > -1 ? 0 : -1)
2628
+ : (cache ? 0 : -1);
2629
+ }
2630
+
2631
+ module.exports = cacheIndexOf;
2632
+
2633
+
2634
+ /***/ },
2635
+ /* 33 */
2636
+ /***/ function(module, exports, __webpack_require__) {
2637
+
2638
+ /**
2639
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2640
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2641
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2642
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2643
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2644
+ * Available under MIT license <http://lodash.com/license>
2645
+ */
2646
+ var cachePush = __webpack_require__(47),
2647
+ getObject = __webpack_require__(48),
2648
+ releaseObject = __webpack_require__(37);
2649
+
2650
+ /**
2651
+ * Creates a cache object to optimize linear searches of large arrays.
2652
+ *
2653
+ * @private
2654
+ * @param {Array} [array=[]] The array to search.
2655
+ * @returns {null|Object} Returns the cache object or `null` if caching should not be used.
2656
+ */
2657
+ function createCache(array) {
2658
+ var index = -1,
2659
+ length = array.length,
2660
+ first = array[0],
2661
+ mid = array[(length / 2) | 0],
2662
+ last = array[length - 1];
2663
+
2664
+ if (first && typeof first == 'object' &&
2665
+ mid && typeof mid == 'object' && last && typeof last == 'object') {
2666
+ return false;
2667
+ }
2668
+ var cache = getObject();
2669
+ cache['false'] = cache['null'] = cache['true'] = cache['undefined'] = false;
2670
+
2671
+ var result = getObject();
2672
+ result.array = array;
2673
+ result.cache = cache;
2674
+ result.push = cachePush;
2675
+
2676
+ while (++index < length) {
2677
+ result.push(array[index]);
2678
+ }
2679
+ return result;
2680
+ }
2681
+
2682
+ module.exports = createCache;
2683
+
2684
+
2685
+ /***/ },
2686
+ /* 34 */
2687
+ /***/ function(module, exports, __webpack_require__) {
2688
+
2689
+ /**
2690
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2691
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2692
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2693
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2694
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2695
+ * Available under MIT license <http://lodash.com/license>
2696
+ */
2697
+ var arrayPool = __webpack_require__(49);
2698
+
2699
+ /**
2700
+ * Gets an array from the array pool or creates a new one if the pool is empty.
2701
+ *
2702
+ * @private
2703
+ * @returns {Array} The array from the pool.
2704
+ */
2705
+ function getArray() {
2706
+ return arrayPool.pop() || [];
2707
+ }
2708
+
2709
+ module.exports = getArray;
2710
+
2711
+
2712
+ /***/ },
2713
+ /* 35 */
2714
+ /***/ function(module, exports, __webpack_require__) {
2715
+
2716
+ /**
2717
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2718
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2719
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2720
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2721
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2722
+ * Available under MIT license <http://lodash.com/license>
2723
+ */
2724
+
2725
+ /** Used as the size when optimizations are enabled for large arrays */
2726
+ var largeArraySize = 75;
2727
+
2728
+ module.exports = largeArraySize;
2729
+
2730
+
2731
+ /***/ },
2732
+ /* 36 */
2733
+ /***/ function(module, exports, __webpack_require__) {
2734
+
2735
+ /**
2736
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2737
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2738
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2739
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2740
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2741
+ * Available under MIT license <http://lodash.com/license>
2742
+ */
2743
+ var arrayPool = __webpack_require__(49),
2744
+ maxPoolSize = __webpack_require__(50);
2745
+
2746
+ /**
2747
+ * Releases the given array back to the array pool.
2748
+ *
2749
+ * @private
2750
+ * @param {Array} [array] The array to release.
2751
+ */
2752
+ function releaseArray(array) {
2753
+ array.length = 0;
2754
+ if (arrayPool.length < maxPoolSize) {
2755
+ arrayPool.push(array);
2756
+ }
2757
+ }
2758
+
2759
+ module.exports = releaseArray;
2760
+
2761
+
2762
+ /***/ },
2763
+ /* 37 */
2764
+ /***/ function(module, exports, __webpack_require__) {
2765
+
2766
+ /**
2767
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2768
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2769
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2770
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2771
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2772
+ * Available under MIT license <http://lodash.com/license>
2773
+ */
2774
+ var maxPoolSize = __webpack_require__(50),
2775
+ objectPool = __webpack_require__(51);
2776
+
2777
+ /**
2778
+ * Releases the given object back to the object pool.
2779
+ *
2780
+ * @private
2781
+ * @param {Object} [object] The object to release.
2782
+ */
2783
+ function releaseObject(object) {
2784
+ var cache = object.cache;
2785
+ if (cache) {
2786
+ releaseObject(cache);
2787
+ }
2788
+ object.array = object.cache = object.criteria = object.object = object.number = object.string = object.value = null;
2789
+ if (objectPool.length < maxPoolSize) {
2790
+ objectPool.push(object);
2791
+ }
2792
+ }
2793
+
2794
+ module.exports = releaseObject;
2795
+
2796
+
2797
+ /***/ },
2798
+ /* 38 */
2799
+ /***/ function(module, exports, __webpack_require__) {
2800
+
2801
+ /**
2802
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2803
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2804
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2805
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2806
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2807
+ * Available under MIT license <http://lodash.com/license>
2808
+ */
2809
+ var baseIndexOf = __webpack_require__(31),
2810
+ cacheIndexOf = __webpack_require__(32),
2811
+ createCache = __webpack_require__(33),
2812
+ getArray = __webpack_require__(34),
2813
+ largeArraySize = __webpack_require__(35),
2814
+ releaseArray = __webpack_require__(36),
2815
+ releaseObject = __webpack_require__(37);
2816
+
2817
+ /**
2818
+ * The base implementation of `_.uniq` without support for callback shorthands
2819
+ * or `thisArg` binding.
2820
+ *
2821
+ * @private
2822
+ * @param {Array} array The array to process.
2823
+ * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted.
2824
+ * @param {Function} [callback] The function called per iteration.
2825
+ * @returns {Array} Returns a duplicate-value-free array.
2826
+ */
2827
+ function baseUniq(array, isSorted, callback) {
2828
+ var index = -1,
2829
+ indexOf = baseIndexOf,
2830
+ length = array ? array.length : 0,
2831
+ result = [];
2832
+
2833
+ var isLarge = !isSorted && length >= largeArraySize,
2834
+ seen = (callback || isLarge) ? getArray() : result;
2835
+
2836
+ if (isLarge) {
2837
+ var cache = createCache(seen);
2838
+ indexOf = cacheIndexOf;
2839
+ seen = cache;
2840
+ }
2841
+ while (++index < length) {
2842
+ var value = array[index],
2843
+ computed = callback ? callback(value, index, array) : value;
2844
+
2845
+ if (isSorted
2846
+ ? !index || seen[seen.length - 1] !== computed
2847
+ : indexOf(seen, computed) < 0
2848
+ ) {
2849
+ if (callback || isLarge) {
2850
+ seen.push(computed);
2851
+ }
2852
+ result.push(value);
2853
+ }
2854
+ }
2855
+ if (isLarge) {
2856
+ releaseArray(seen.array);
2857
+ releaseObject(seen);
2858
+ } else if (callback) {
2859
+ releaseArray(seen);
2860
+ }
2861
+ return result;
2862
+ }
2863
+
2864
+ module.exports = baseUniq;
2865
+
2866
+
2867
+ /***/ },
2868
+ /* 39 */
2869
+ /***/ function(module, exports, __webpack_require__) {
2870
+
2871
+ /**
2872
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2873
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2874
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2875
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2876
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2877
+ * Available under MIT license <http://lodash.com/license>
2878
+ */
2879
+ var baseCreateCallback = __webpack_require__(27),
2880
+ baseIsEqual = __webpack_require__(52),
2881
+ isObject = __webpack_require__(22),
2882
+ keys = __webpack_require__(13),
2883
+ property = __webpack_require__(54);
2884
+
2885
+ /**
2886
+ * Produces a callback bound to an optional `thisArg`. If `func` is a property
2887
+ * name the created callback will return the property value for a given element.
2888
+ * If `func` is an object the created callback will return `true` for elements
2889
+ * that contain the equivalent object properties, otherwise it will return `false`.
2890
+ *
2891
+ * @static
2892
+ * @memberOf _
2893
+ * @category Utilities
2894
+ * @param {*} [func=identity] The value to convert to a callback.
2895
+ * @param {*} [thisArg] The `this` binding of the created callback.
2896
+ * @param {number} [argCount] The number of arguments the callback accepts.
2897
+ * @returns {Function} Returns a callback function.
2898
+ * @example
2899
+ *
2900
+ * var characters = [
2901
+ * { 'name': 'barney', 'age': 36 },
2902
+ * { 'name': 'fred', 'age': 40 }
2903
+ * ];
2904
+ *
2905
+ * // wrap to create custom callback shorthands
2906
+ * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) {
2907
+ * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback);
2908
+ * return !match ? func(callback, thisArg) : function(object) {
2909
+ * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3];
2910
+ * };
2911
+ * });
2912
+ *
2913
+ * _.filter(characters, 'age__gt38');
2914
+ * // => [{ 'name': 'fred', 'age': 40 }]
2915
+ */
2916
+ function createCallback(func, thisArg, argCount) {
2917
+ var type = typeof func;
2918
+ if (func == null || type == 'function') {
2919
+ return baseCreateCallback(func, thisArg, argCount);
2920
+ }
2921
+ // handle "_.pluck" style callback shorthands
2922
+ if (type != 'object') {
2923
+ return property(func);
2924
+ }
2925
+ var props = keys(func),
2926
+ key = props[0],
2927
+ a = func[key];
2928
+
2929
+ // handle "_.where" style callback shorthands
2930
+ if (props.length == 1 && a === a && !isObject(a)) {
2931
+ // fast path the common case of providing an object with a single
2932
+ // property containing a primitive value
2933
+ return function(object) {
2934
+ var b = object[key];
2935
+ return a === b && (a !== 0 || (1 / a == 1 / b));
2936
+ };
2937
+ }
2938
+ return function(object) {
2939
+ var length = props.length,
2940
+ result = false;
2941
+
2942
+ while (length--) {
2943
+ if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) {
2944
+ break;
2945
+ }
2946
+ }
2947
+ return result;
2948
+ };
2949
+ }
2950
+
2951
+ module.exports = createCallback;
2952
+
2953
+
2954
+ /***/ },
2955
+ /* 40 */
2956
+ /***/ function(module, exports, __webpack_require__) {
2957
+
2958
+ if (typeof Object.create === 'function') {
2959
+ // implementation from standard node.js 'util' module
2960
+ module.exports = function inherits(ctor, superCtor) {
2961
+ ctor.super_ = superCtor
2962
+ ctor.prototype = Object.create(superCtor.prototype, {
2963
+ constructor: {
2964
+ value: ctor,
2965
+ enumerable: false,
2966
+ writable: true,
2967
+ configurable: true
2968
+ }
2969
+ });
2970
+ };
2971
+ } else {
2972
+ // old school shim for old browsers
2973
+ module.exports = function inherits(ctor, superCtor) {
2974
+ ctor.super_ = superCtor
2975
+ var TempCtor = function () {}
2976
+ TempCtor.prototype = superCtor.prototype
2977
+ ctor.prototype = new TempCtor()
2978
+ ctor.prototype.constructor = ctor
2979
+ }
2980
+ }
2981
+
2982
+
2983
+ /***/ },
2984
+ /* 41 */
2985
+ /***/ function(module, exports, __webpack_require__) {
2986
+
2987
+ /**
2988
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2989
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2990
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2991
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2992
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2993
+ * Available under MIT license <http://lodash.com/license>
2994
+ */
2995
+ var baseCreateCallback = __webpack_require__(27),
2996
+ keys = __webpack_require__(13),
2997
+ objectTypes = __webpack_require__(28);
2998
+
2999
+ /**
3000
+ * Assigns own enumerable properties of source object(s) to the destination
3001
+ * object. Subsequent sources will overwrite property assignments of previous
3002
+ * sources. If a callback is provided it will be executed to produce the
3003
+ * assigned values. The callback is bound to `thisArg` and invoked with two
3004
+ * arguments; (objectValue, sourceValue).
3005
+ *
3006
+ * @static
3007
+ * @memberOf _
3008
+ * @type Function
3009
+ * @alias extend
3010
+ * @category Objects
3011
+ * @param {Object} object The destination object.
3012
+ * @param {...Object} [source] The source objects.
3013
+ * @param {Function} [callback] The function to customize assigning values.
3014
+ * @param {*} [thisArg] The `this` binding of `callback`.
3015
+ * @returns {Object} Returns the destination object.
3016
+ * @example
3017
+ *
3018
+ * _.assign({ 'name': 'fred' }, { 'employer': 'slate' });
3019
+ * // => { 'name': 'fred', 'employer': 'slate' }
3020
+ *
3021
+ * var defaults = _.partialRight(_.assign, function(a, b) {
3022
+ * return typeof a == 'undefined' ? b : a;
3023
+ * });
3024
+ *
3025
+ * var object = { 'name': 'barney' };
3026
+ * defaults(object, { 'name': 'fred', 'employer': 'slate' });
3027
+ * // => { 'name': 'barney', 'employer': 'slate' }
3028
+ */
3029
+ var assign = function(object, source, guard) {
3030
+ var index, iterable = object, result = iterable;
3031
+ if (!iterable) return result;
3032
+ var args = arguments,
3033
+ argsIndex = 0,
3034
+ argsLength = typeof guard == 'number' ? 2 : args.length;
3035
+ if (argsLength > 3 && typeof args[argsLength - 2] == 'function') {
3036
+ var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2);
3037
+ } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {
3038
+ callback = args[--argsLength];
3039
+ }
3040
+ while (++argsIndex < argsLength) {
3041
+ iterable = args[argsIndex];
3042
+ if (iterable && objectTypes[typeof iterable]) {
3043
+ var ownIndex = -1,
3044
+ ownProps = objectTypes[typeof iterable] && keys(iterable),
3045
+ length = ownProps ? ownProps.length : 0;
3046
+
3047
+ while (++ownIndex < length) {
3048
+ index = ownProps[ownIndex];
3049
+ result[index] = callback ? callback(result[index], iterable[index]) : iterable[index];
3050
+ }
3051
+ }
3052
+ }
3053
+ return result
3054
+ };
3055
+
3056
+ module.exports = assign;
3057
+
3058
+
3059
+ /***/ },
3060
+ /* 42 */
3061
+ /***/ function(module, exports, __webpack_require__) {
3062
+
3063
+ /**
3064
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3065
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3066
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3067
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3068
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3069
+ * Available under MIT license <http://lodash.com/license>
3070
+ */
3071
+
3072
+ /**
3073
+ * Slices the `collection` from the `start` index up to, but not including,
3074
+ * the `end` index.
3075
+ *
3076
+ * Note: This function is used instead of `Array#slice` to support node lists
3077
+ * in IE < 9 and to ensure dense arrays are returned.
3078
+ *
3079
+ * @private
3080
+ * @param {Array|Object|string} collection The collection to slice.
3081
+ * @param {number} start The start index.
3082
+ * @param {number} end The end index.
3083
+ * @returns {Array} Returns the new array.
3084
+ */
3085
+ function slice(array, start, end) {
3086
+ start || (start = 0);
3087
+ if (typeof end == 'undefined') {
3088
+ end = array ? array.length : 0;
3089
+ }
3090
+ var index = -1,
3091
+ length = end - start || 0,
3092
+ result = Array(length < 0 ? 0 : length);
3093
+
3094
+ while (++index < length) {
3095
+ result[index] = array[start + index];
3096
+ }
3097
+ return result;
3098
+ }
3099
+
3100
+ module.exports = slice;
3101
+
3102
+
3103
+ /***/ },
3104
+ /* 43 */
3105
+ /***/ function(module, exports, __webpack_require__) {
3106
+
3107
+ /**
3108
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3109
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3110
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3111
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3112
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3113
+ * Available under MIT license <http://lodash.com/license>
3114
+ */
3115
+ var createWrapper = __webpack_require__(55),
3116
+ slice = __webpack_require__(42);
3117
+
3118
+ /**
3119
+ * Creates a function that, when called, invokes `func` with the `this`
3120
+ * binding of `thisArg` and prepends any additional `bind` arguments to those
3121
+ * provided to the bound function.
3122
+ *
3123
+ * @static
3124
+ * @memberOf _
3125
+ * @category Functions
3126
+ * @param {Function} func The function to bind.
3127
+ * @param {*} [thisArg] The `this` binding of `func`.
3128
+ * @param {...*} [arg] Arguments to be partially applied.
3129
+ * @returns {Function} Returns the new bound function.
3130
+ * @example
3131
+ *
3132
+ * var func = function(greeting) {
3133
+ * return greeting + ' ' + this.name;
3134
+ * };
3135
+ *
3136
+ * func = _.bind(func, { 'name': 'fred' }, 'hi');
3137
+ * func();
3138
+ * // => 'hi fred'
3139
+ */
3140
+ function bind(func, thisArg) {
3141
+ return arguments.length > 2
3142
+ ? createWrapper(func, 17, slice(arguments, 2), null, thisArg)
3143
+ : createWrapper(func, 1, null, null, thisArg);
3144
+ }
3145
+
3146
+ module.exports = bind;
3147
+
3148
+
3149
+ /***/ },
3150
+ /* 44 */
3151
+ /***/ function(module, exports, __webpack_require__) {
3152
+
3153
+ /**
3154
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3155
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3156
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3157
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3158
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3159
+ * Available under MIT license <http://lodash.com/license>
3160
+ */
3161
+ var isNative = __webpack_require__(29),
3162
+ noop = __webpack_require__(56);
3163
+
3164
+ /** Used as the property descriptor for `__bindData__` */
3165
+ var descriptor = {
3166
+ 'configurable': false,
3167
+ 'enumerable': false,
3168
+ 'value': null,
3169
+ 'writable': false
3170
+ };
3171
+
3172
+ /** Used to set meta data on functions */
3173
+ var defineProperty = (function() {
3174
+ // IE 8 only accepts DOM elements
3175
+ try {
3176
+ var o = {},
3177
+ func = isNative(func = Object.defineProperty) && func,
3178
+ result = func(o, o, o) && func;
3179
+ } catch(e) { }
3180
+ return result;
3181
+ }());
3182
+
3183
+ /**
3184
+ * Sets `this` binding data on a given function.
3185
+ *
3186
+ * @private
3187
+ * @param {Function} func The function to set data on.
3188
+ * @param {Array} value The data array to set.
3189
+ */
3190
+ var setBindData = !defineProperty ? noop : function(func, value) {
3191
+ descriptor.value = value;
3192
+ defineProperty(func, '__bindData__', descriptor);
3193
+ };
3194
+
3195
+ module.exports = setBindData;
3196
+
3197
+
3198
+ /***/ },
3199
+ /* 45 */
3200
+ /***/ function(module, exports, __webpack_require__) {
3201
+
3202
+ /* WEBPACK VAR INJECTION */(function(global) {/**
3203
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3204
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3205
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3206
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3207
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3208
+ * Available under MIT license <http://lodash.com/license>
3209
+ */
3210
+ var isNative = __webpack_require__(29);
3211
+
3212
+ /** Used to detect functions containing a `this` reference */
3213
+ var reThis = /\bthis\b/;
3214
+
3215
+ /**
3216
+ * An object used to flag environments features.
3217
+ *
3218
+ * @static
3219
+ * @memberOf _
3220
+ * @type Object
3221
+ */
3222
+ var support = {};
3223
+
3224
+ /**
3225
+ * Detect if functions can be decompiled by `Function#toString`
3226
+ * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps).
3227
+ *
3228
+ * @memberOf _.support
3229
+ * @type boolean
3230
+ */
3231
+ support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; });
3232
+
3233
+ /**
3234
+ * Detect if `Function#name` is supported (all but IE).
3235
+ *
3236
+ * @memberOf _.support
3237
+ * @type boolean
3238
+ */
3239
+ support.funcNames = typeof Function.name == 'string';
3240
+
3241
+ module.exports = support;
3242
+
3243
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3244
+
3245
+ /***/ },
3246
+ /* 46 */
3247
+ /***/ function(module, exports, __webpack_require__) {
3248
+
3249
+ /**
3250
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3251
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3252
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3253
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3254
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3255
+ * Available under MIT license <http://lodash.com/license>
3256
+ */
3257
+
3258
+ /** Used to prefix keys to avoid issues with `__proto__` and properties on `Object.prototype` */
3259
+ var keyPrefix = +new Date + '';
3260
+
3261
+ module.exports = keyPrefix;
3262
+
3263
+
3264
+ /***/ },
3265
+ /* 47 */
3266
+ /***/ function(module, exports, __webpack_require__) {
3267
+
3268
+ /**
3269
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3270
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3271
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3272
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3273
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3274
+ * Available under MIT license <http://lodash.com/license>
3275
+ */
3276
+ var keyPrefix = __webpack_require__(46);
3277
+
3278
+ /**
3279
+ * Adds a given value to the corresponding cache object.
3280
+ *
3281
+ * @private
3282
+ * @param {*} value The value to add to the cache.
3283
+ */
3284
+ function cachePush(value) {
3285
+ var cache = this.cache,
3286
+ type = typeof value;
3287
+
3288
+ if (type == 'boolean' || value == null) {
3289
+ cache[value] = true;
3290
+ } else {
3291
+ if (type != 'number' && type != 'string') {
3292
+ type = 'object';
3293
+ }
3294
+ var key = type == 'number' ? value : keyPrefix + value,
3295
+ typeCache = cache[type] || (cache[type] = {});
3296
+
3297
+ if (type == 'object') {
3298
+ (typeCache[key] || (typeCache[key] = [])).push(value);
3299
+ } else {
3300
+ typeCache[key] = true;
3301
+ }
3302
+ }
3303
+ }
3304
+
3305
+ module.exports = cachePush;
3306
+
3307
+
3308
+ /***/ },
3309
+ /* 48 */
3310
+ /***/ function(module, exports, __webpack_require__) {
3311
+
3312
+ /**
3313
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3314
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3315
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3316
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3317
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3318
+ * Available under MIT license <http://lodash.com/license>
3319
+ */
3320
+ var objectPool = __webpack_require__(51);
3321
+
3322
+ /**
3323
+ * Gets an object from the object pool or creates a new one if the pool is empty.
3324
+ *
3325
+ * @private
3326
+ * @returns {Object} The object from the pool.
3327
+ */
3328
+ function getObject() {
3329
+ return objectPool.pop() || {
3330
+ 'array': null,
3331
+ 'cache': null,
3332
+ 'criteria': null,
3333
+ 'false': false,
3334
+ 'index': 0,
3335
+ 'null': false,
3336
+ 'number': null,
3337
+ 'object': null,
3338
+ 'push': null,
3339
+ 'string': null,
3340
+ 'true': false,
3341
+ 'undefined': false,
3342
+ 'value': null
3343
+ };
3344
+ }
3345
+
3346
+ module.exports = getObject;
3347
+
3348
+
3349
+ /***/ },
3350
+ /* 49 */
3351
+ /***/ function(module, exports, __webpack_require__) {
3352
+
3353
+ /**
3354
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3355
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3356
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3357
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3358
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3359
+ * Available under MIT license <http://lodash.com/license>
3360
+ */
3361
+
3362
+ /** Used to pool arrays and objects used internally */
3363
+ var arrayPool = [];
3364
+
3365
+ module.exports = arrayPool;
3366
+
3367
+
3368
+ /***/ },
3369
+ /* 50 */
3370
+ /***/ function(module, exports, __webpack_require__) {
3371
+
3372
+ /**
3373
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3374
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3375
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3376
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3377
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3378
+ * Available under MIT license <http://lodash.com/license>
3379
+ */
3380
+
3381
+ /** Used as the max size of the `arrayPool` and `objectPool` */
3382
+ var maxPoolSize = 40;
3383
+
3384
+ module.exports = maxPoolSize;
3385
+
3386
+
3387
+ /***/ },
3388
+ /* 51 */
3389
+ /***/ function(module, exports, __webpack_require__) {
3390
+
3391
+ /**
3392
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3393
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3394
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3395
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3396
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3397
+ * Available under MIT license <http://lodash.com/license>
3398
+ */
3399
+
3400
+ /** Used to pool arrays and objects used internally */
3401
+ var objectPool = [];
3402
+
3403
+ module.exports = objectPool;
3404
+
3405
+
3406
+ /***/ },
3407
+ /* 52 */
3408
+ /***/ function(module, exports, __webpack_require__) {
3409
+
3410
+ /**
3411
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3412
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3413
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3414
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3415
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3416
+ * Available under MIT license <http://lodash.com/license>
3417
+ */
3418
+ var forIn = __webpack_require__(57),
3419
+ getArray = __webpack_require__(34),
3420
+ isFunction = __webpack_require__(58),
3421
+ objectTypes = __webpack_require__(28),
3422
+ releaseArray = __webpack_require__(36);
3423
+
3424
+ /** `Object#toString` result shortcuts */
3425
+ var argsClass = '[object Arguments]',
3426
+ arrayClass = '[object Array]',
3427
+ boolClass = '[object Boolean]',
3428
+ dateClass = '[object Date]',
3429
+ numberClass = '[object Number]',
3430
+ objectClass = '[object Object]',
3431
+ regexpClass = '[object RegExp]',
3432
+ stringClass = '[object String]';
3433
+
3434
+ /** Used for native method references */
3435
+ var objectProto = Object.prototype;
3436
+
3437
+ /** Used to resolve the internal [[Class]] of values */
3438
+ var toString = objectProto.toString;
3439
+
3440
+ /** Native method shortcuts */
3441
+ var hasOwnProperty = objectProto.hasOwnProperty;
3442
+
3443
+ /**
3444
+ * The base implementation of `_.isEqual`, without support for `thisArg` binding,
3445
+ * that allows partial "_.where" style comparisons.
3446
+ *
3447
+ * @private
3448
+ * @param {*} a The value to compare.
3449
+ * @param {*} b The other value to compare.
3450
+ * @param {Function} [callback] The function to customize comparing values.
3451
+ * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons.
3452
+ * @param {Array} [stackA=[]] Tracks traversed `a` objects.
3453
+ * @param {Array} [stackB=[]] Tracks traversed `b` objects.
3454
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
3455
+ */
3456
+ function baseIsEqual(a, b, callback, isWhere, stackA, stackB) {
3457
+ // used to indicate that when comparing objects, `a` has at least the properties of `b`
3458
+ if (callback) {
3459
+ var result = callback(a, b);
3460
+ if (typeof result != 'undefined') {
3461
+ return !!result;
3462
+ }
3463
+ }
3464
+ // exit early for identical values
3465
+ if (a === b) {
3466
+ // treat `+0` vs. `-0` as not equal
3467
+ return a !== 0 || (1 / a == 1 / b);
3468
+ }
3469
+ var type = typeof a,
3470
+ otherType = typeof b;
3471
+
3472
+ // exit early for unlike primitive values
3473
+ if (a === a &&
3474
+ !(a && objectTypes[type]) &&
3475
+ !(b && objectTypes[otherType])) {
3476
+ return false;
3477
+ }
3478
+ // exit early for `null` and `undefined` avoiding ES3's Function#call behavior
3479
+ // http://es5.github.io/#x15.3.4.4
3480
+ if (a == null || b == null) {
3481
+ return a === b;
3482
+ }
3483
+ // compare [[Class]] names
3484
+ var className = toString.call(a),
3485
+ otherClass = toString.call(b);
3486
+
3487
+ if (className == argsClass) {
3488
+ className = objectClass;
3489
+ }
3490
+ if (otherClass == argsClass) {
3491
+ otherClass = objectClass;
3492
+ }
3493
+ if (className != otherClass) {
3494
+ return false;
3495
+ }
3496
+ switch (className) {
3497
+ case boolClass:
3498
+ case dateClass:
3499
+ // coerce dates and booleans to numbers, dates to milliseconds and booleans
3500
+ // to `1` or `0` treating invalid dates coerced to `NaN` as not equal
3501
+ return +a == +b;
3502
+
3503
+ case numberClass:
3504
+ // treat `NaN` vs. `NaN` as equal
3505
+ return (a != +a)
3506
+ ? b != +b
3507
+ // but treat `+0` vs. `-0` as not equal
3508
+ : (a == 0 ? (1 / a == 1 / b) : a == +b);
3509
+
3510
+ case regexpClass:
3511
+ case stringClass:
3512
+ // coerce regexes to strings (http://es5.github.io/#x15.10.6.4)
3513
+ // treat string primitives and their corresponding object instances as equal
3514
+ return a == String(b);
3515
+ }
3516
+ var isArr = className == arrayClass;
3517
+ if (!isArr) {
3518
+ // unwrap any `lodash` wrapped values
3519
+ var aWrapped = hasOwnProperty.call(a, '__wrapped__'),
3520
+ bWrapped = hasOwnProperty.call(b, '__wrapped__');
3521
+
3522
+ if (aWrapped || bWrapped) {
3523
+ return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB);
3524
+ }
3525
+ // exit for functions and DOM nodes
3526
+ if (className != objectClass) {
3527
+ return false;
3528
+ }
3529
+ // in older versions of Opera, `arguments` objects have `Array` constructors
3530
+ var ctorA = a.constructor,
3531
+ ctorB = b.constructor;
3532
+
3533
+ // non `Object` object instances with different constructors are not equal
3534
+ if (ctorA != ctorB &&
3535
+ !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) &&
3536
+ ('constructor' in a && 'constructor' in b)
3537
+ ) {
3538
+ return false;
3539
+ }
3540
+ }
3541
+ // assume cyclic structures are equal
3542
+ // the algorithm for detecting cyclic structures is adapted from ES 5.1
3543
+ // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3)
3544
+ var initedStack = !stackA;
3545
+ stackA || (stackA = getArray());
3546
+ stackB || (stackB = getArray());
3547
+
3548
+ var length = stackA.length;
3549
+ while (length--) {
3550
+ if (stackA[length] == a) {
3551
+ return stackB[length] == b;
3552
+ }
3553
+ }
3554
+ var size = 0;
3555
+ result = true;
3556
+
3557
+ // add `a` and `b` to the stack of traversed objects
3558
+ stackA.push(a);
3559
+ stackB.push(b);
3560
+
3561
+ // recursively compare objects and arrays (susceptible to call stack limits)
3562
+ if (isArr) {
3563
+ // compare lengths to determine if a deep comparison is necessary
3564
+ length = a.length;
3565
+ size = b.length;
3566
+ result = size == length;
3567
+
3568
+ if (result || isWhere) {
3569
+ // deep compare the contents, ignoring non-numeric properties
3570
+ while (size--) {
3571
+ var index = length,
3572
+ value = b[size];
3573
+
3574
+ if (isWhere) {
3575
+ while (index--) {
3576
+ if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) {
3577
+ break;
3578
+ }
3579
+ }
3580
+ } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) {
3581
+ break;
3582
+ }
3583
+ }
3584
+ }
3585
+ }
3586
+ else {
3587
+ // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys`
3588
+ // which, in this case, is more costly
3589
+ forIn(b, function(value, key, b) {
3590
+ if (hasOwnProperty.call(b, key)) {
3591
+ // count the number of properties.
3592
+ size++;
3593
+ // deep compare each property value.
3594
+ return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB));
3595
+ }
3596
+ });
3597
+
3598
+ if (result && !isWhere) {
3599
+ // ensure both objects have the same number of properties
3600
+ forIn(a, function(value, key, a) {
3601
+ if (hasOwnProperty.call(a, key)) {
3602
+ // `size` will be `-1` if `a` has more properties than `b`
3603
+ return (result = --size > -1);
3604
+ }
3605
+ });
3606
+ }
3607
+ }
3608
+ stackA.pop();
3609
+ stackB.pop();
3610
+
3611
+ if (initedStack) {
3612
+ releaseArray(stackA);
3613
+ releaseArray(stackB);
3614
+ }
3615
+ return result;
3616
+ }
3617
+
3618
+ module.exports = baseIsEqual;
3619
+
3620
+
3621
+ /***/ },
3622
+ /* 53 */
3623
+ /***/ function(module, exports, __webpack_require__) {
3624
+
3625
+ /**
3626
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3627
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3628
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3629
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3630
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3631
+ * Available under MIT license <http://lodash.com/license>
3632
+ */
3633
+
3634
+ /**
3635
+ * This method returns the first argument provided to it.
3636
+ *
3637
+ * @static
3638
+ * @memberOf _
3639
+ * @category Utilities
3640
+ * @param {*} value Any value.
3641
+ * @returns {*} Returns `value`.
3642
+ * @example
3643
+ *
3644
+ * var object = { 'name': 'fred' };
3645
+ * _.identity(object) === object;
3646
+ * // => true
3647
+ */
3648
+ function identity(value) {
3649
+ return value;
3650
+ }
3651
+
3652
+ module.exports = identity;
3653
+
3654
+
3655
+ /***/ },
3656
+ /* 54 */
3657
+ /***/ function(module, exports, __webpack_require__) {
3658
+
3659
+ /**
3660
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3661
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3662
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3663
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3664
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3665
+ * Available under MIT license <http://lodash.com/license>
3666
+ */
3667
+
3668
+ /**
3669
+ * Creates a "_.pluck" style function, which returns the `key` value of a
3670
+ * given object.
3671
+ *
3672
+ * @static
3673
+ * @memberOf _
3674
+ * @category Utilities
3675
+ * @param {string} key The name of the property to retrieve.
3676
+ * @returns {Function} Returns the new function.
3677
+ * @example
3678
+ *
3679
+ * var characters = [
3680
+ * { 'name': 'fred', 'age': 40 },
3681
+ * { 'name': 'barney', 'age': 36 }
3682
+ * ];
3683
+ *
3684
+ * var getName = _.property('name');
3685
+ *
3686
+ * _.map(characters, getName);
3687
+ * // => ['barney', 'fred']
3688
+ *
3689
+ * _.sortBy(characters, getName);
3690
+ * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }]
3691
+ */
3692
+ function property(key) {
3693
+ return function(object) {
3694
+ return object[key];
3695
+ };
3696
+ }
3697
+
3698
+ module.exports = property;
3699
+
3700
+
3701
+ /***/ },
3702
+ /* 55 */
3703
+ /***/ function(module, exports, __webpack_require__) {
3704
+
3705
+ /**
3706
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3707
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3708
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3709
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3710
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3711
+ * Available under MIT license <http://lodash.com/license>
3712
+ */
3713
+ var baseBind = __webpack_require__(59),
3714
+ baseCreateWrapper = __webpack_require__(60),
3715
+ isFunction = __webpack_require__(58),
3716
+ slice = __webpack_require__(42);
3717
+
3718
+ /**
3719
+ * Used for `Array` method references.
3720
+ *
3721
+ * Normally `Array.prototype` would suffice, however, using an array literal
3722
+ * avoids issues in Narwhal.
3723
+ */
3724
+ var arrayRef = [];
3725
+
3726
+ /** Native method shortcuts */
3727
+ var push = arrayRef.push,
3728
+ unshift = arrayRef.unshift;
3729
+
3730
+ /**
3731
+ * Creates a function that, when called, either curries or invokes `func`
3732
+ * with an optional `this` binding and partially applied arguments.
3733
+ *
3734
+ * @private
3735
+ * @param {Function|string} func The function or method name to reference.
3736
+ * @param {number} bitmask The bitmask of method flags to compose.
3737
+ * The bitmask may be composed of the following flags:
3738
+ * 1 - `_.bind`
3739
+ * 2 - `_.bindKey`
3740
+ * 4 - `_.curry`
3741
+ * 8 - `_.curry` (bound)
3742
+ * 16 - `_.partial`
3743
+ * 32 - `_.partialRight`
3744
+ * @param {Array} [partialArgs] An array of arguments to prepend to those
3745
+ * provided to the new function.
3746
+ * @param {Array} [partialRightArgs] An array of arguments to append to those
3747
+ * provided to the new function.
3748
+ * @param {*} [thisArg] The `this` binding of `func`.
3749
+ * @param {number} [arity] The arity of `func`.
3750
+ * @returns {Function} Returns the new function.
3751
+ */
3752
+ function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) {
3753
+ var isBind = bitmask & 1,
3754
+ isBindKey = bitmask & 2,
3755
+ isCurry = bitmask & 4,
3756
+ isCurryBound = bitmask & 8,
3757
+ isPartial = bitmask & 16,
3758
+ isPartialRight = bitmask & 32;
3759
+
3760
+ if (!isBindKey && !isFunction(func)) {
3761
+ throw new TypeError;
3762
+ }
3763
+ if (isPartial && !partialArgs.length) {
3764
+ bitmask &= ~16;
3765
+ isPartial = partialArgs = false;
3766
+ }
3767
+ if (isPartialRight && !partialRightArgs.length) {
3768
+ bitmask &= ~32;
3769
+ isPartialRight = partialRightArgs = false;
3770
+ }
3771
+ var bindData = func && func.__bindData__;
3772
+ if (bindData && bindData !== true) {
3773
+ // clone `bindData`
3774
+ bindData = slice(bindData);
3775
+ if (bindData[2]) {
3776
+ bindData[2] = slice(bindData[2]);
3777
+ }
3778
+ if (bindData[3]) {
3779
+ bindData[3] = slice(bindData[3]);
3780
+ }
3781
+ // set `thisBinding` is not previously bound
3782
+ if (isBind && !(bindData[1] & 1)) {
3783
+ bindData[4] = thisArg;
3784
+ }
3785
+ // set if previously bound but not currently (subsequent curried functions)
3786
+ if (!isBind && bindData[1] & 1) {
3787
+ bitmask |= 8;
3788
+ }
3789
+ // set curried arity if not yet set
3790
+ if (isCurry && !(bindData[1] & 4)) {
3791
+ bindData[5] = arity;
3792
+ }
3793
+ // append partial left arguments
3794
+ if (isPartial) {
3795
+ push.apply(bindData[2] || (bindData[2] = []), partialArgs);
3796
+ }
3797
+ // append partial right arguments
3798
+ if (isPartialRight) {
3799
+ unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs);
3800
+ }
3801
+ // merge flags
3802
+ bindData[1] |= bitmask;
3803
+ return createWrapper.apply(null, bindData);
3804
+ }
3805
+ // fast path for `_.bind`
3806
+ var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper;
3807
+ return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]);
3808
+ }
3809
+
3810
+ module.exports = createWrapper;
3811
+
3812
+
3813
+ /***/ },
3814
+ /* 56 */
3815
+ /***/ function(module, exports, __webpack_require__) {
3816
+
3817
+ /**
3818
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3819
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3820
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3821
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3822
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3823
+ * Available under MIT license <http://lodash.com/license>
3824
+ */
3825
+
3826
+ /**
3827
+ * A no-operation function.
3828
+ *
3829
+ * @static
3830
+ * @memberOf _
3831
+ * @category Utilities
3832
+ * @example
3833
+ *
3834
+ * var object = { 'name': 'fred' };
3835
+ * _.noop(object) === undefined;
3836
+ * // => true
3837
+ */
3838
+ function noop() {
3839
+ // no operation performed
3840
+ }
3841
+
3842
+ module.exports = noop;
3843
+
3844
+
3845
+ /***/ },
3846
+ /* 57 */
3847
+ /***/ function(module, exports, __webpack_require__) {
3848
+
3849
+ /**
3850
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3851
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3852
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3853
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3854
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3855
+ * Available under MIT license <http://lodash.com/license>
3856
+ */
3857
+ var baseCreateCallback = __webpack_require__(27),
3858
+ objectTypes = __webpack_require__(28);
3859
+
3860
+ /**
3861
+ * Iterates over own and inherited enumerable properties of an object,
3862
+ * executing the callback for each property. The callback is bound to `thisArg`
3863
+ * and invoked with three arguments; (value, key, object). Callbacks may exit
3864
+ * iteration early by explicitly returning `false`.
3865
+ *
3866
+ * @static
3867
+ * @memberOf _
3868
+ * @type Function
3869
+ * @category Objects
3870
+ * @param {Object} object The object to iterate over.
3871
+ * @param {Function} [callback=identity] The function called per iteration.
3872
+ * @param {*} [thisArg] The `this` binding of `callback`.
3873
+ * @returns {Object} Returns `object`.
3874
+ * @example
3875
+ *
3876
+ * function Shape() {
3877
+ * this.x = 0;
3878
+ * this.y = 0;
3879
+ * }
3880
+ *
3881
+ * Shape.prototype.move = function(x, y) {
3882
+ * this.x += x;
3883
+ * this.y += y;
3884
+ * };
3885
+ *
3886
+ * _.forIn(new Shape, function(value, key) {
3887
+ * console.log(key);
3888
+ * });
3889
+ * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments)
3890
+ */
3891
+ var forIn = function(collection, callback, thisArg) {
3892
+ var index, iterable = collection, result = iterable;
3893
+ if (!iterable) return result;
3894
+ if (!objectTypes[typeof iterable]) return result;
3895
+ callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);
3896
+ for (index in iterable) {
3897
+ if (callback(iterable[index], index, collection) === false) return result;
3898
+ }
3899
+ return result
3900
+ };
3901
+
3902
+ module.exports = forIn;
3903
+
3904
+
3905
+ /***/ },
3906
+ /* 58 */
3907
+ /***/ function(module, exports, __webpack_require__) {
3908
+
3909
+ /**
3910
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3911
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3912
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3913
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3914
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3915
+ * Available under MIT license <http://lodash.com/license>
3916
+ */
3917
+
3918
+ /**
3919
+ * Checks if `value` is a function.
3920
+ *
3921
+ * @static
3922
+ * @memberOf _
3923
+ * @category Objects
3924
+ * @param {*} value The value to check.
3925
+ * @returns {boolean} Returns `true` if the `value` is a function, else `false`.
3926
+ * @example
3927
+ *
3928
+ * _.isFunction(_);
3929
+ * // => true
3930
+ */
3931
+ function isFunction(value) {
3932
+ return typeof value == 'function';
3933
+ }
3934
+
3935
+ module.exports = isFunction;
3936
+
3937
+
3938
+ /***/ },
3939
+ /* 59 */
3940
+ /***/ function(module, exports, __webpack_require__) {
3941
+
3942
+ /**
3943
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3944
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3945
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3946
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3947
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3948
+ * Available under MIT license <http://lodash.com/license>
3949
+ */
3950
+ var baseCreate = __webpack_require__(61),
3951
+ isObject = __webpack_require__(22),
3952
+ setBindData = __webpack_require__(44),
3953
+ slice = __webpack_require__(42);
3954
+
3955
+ /**
3956
+ * Used for `Array` method references.
3957
+ *
3958
+ * Normally `Array.prototype` would suffice, however, using an array literal
3959
+ * avoids issues in Narwhal.
3960
+ */
3961
+ var arrayRef = [];
3962
+
3963
+ /** Native method shortcuts */
3964
+ var push = arrayRef.push;
3965
+
3966
+ /**
3967
+ * The base implementation of `_.bind` that creates the bound function and
3968
+ * sets its meta data.
3969
+ *
3970
+ * @private
3971
+ * @param {Array} bindData The bind data array.
3972
+ * @returns {Function} Returns the new bound function.
3973
+ */
3974
+ function baseBind(bindData) {
3975
+ var func = bindData[0],
3976
+ partialArgs = bindData[2],
3977
+ thisArg = bindData[4];
3978
+
3979
+ function bound() {
3980
+ // `Function#bind` spec
3981
+ // http://es5.github.io/#x15.3.4.5
3982
+ if (partialArgs) {
3983
+ // avoid `arguments` object deoptimizations by using `slice` instead
3984
+ // of `Array.prototype.slice.call` and not assigning `arguments` to a
3985
+ // variable as a ternary expression
3986
+ var args = slice(partialArgs);
3987
+ push.apply(args, arguments);
3988
+ }
3989
+ // mimic the constructor's `return` behavior
3990
+ // http://es5.github.io/#x13.2.2
3991
+ if (this instanceof bound) {
3992
+ // ensure `new bound` is an instance of `func`
3993
+ var thisBinding = baseCreate(func.prototype),
3994
+ result = func.apply(thisBinding, args || arguments);
3995
+ return isObject(result) ? result : thisBinding;
3996
+ }
3997
+ return func.apply(thisArg, args || arguments);
3998
+ }
3999
+ setBindData(bound, bindData);
4000
+ return bound;
4001
+ }
4002
+
4003
+ module.exports = baseBind;
4004
+
4005
+
4006
+ /***/ },
4007
+ /* 60 */
4008
+ /***/ function(module, exports, __webpack_require__) {
4009
+
4010
+ /**
4011
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
4012
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
4013
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
4014
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
4015
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
4016
+ * Available under MIT license <http://lodash.com/license>
4017
+ */
4018
+ var baseCreate = __webpack_require__(61),
4019
+ isObject = __webpack_require__(22),
4020
+ setBindData = __webpack_require__(44),
4021
+ slice = __webpack_require__(42);
4022
+
4023
+ /**
4024
+ * Used for `Array` method references.
4025
+ *
4026
+ * Normally `Array.prototype` would suffice, however, using an array literal
4027
+ * avoids issues in Narwhal.
4028
+ */
4029
+ var arrayRef = [];
4030
+
4031
+ /** Native method shortcuts */
4032
+ var push = arrayRef.push;
4033
+
4034
+ /**
4035
+ * The base implementation of `createWrapper` that creates the wrapper and
4036
+ * sets its meta data.
4037
+ *
4038
+ * @private
4039
+ * @param {Array} bindData The bind data array.
4040
+ * @returns {Function} Returns the new function.
4041
+ */
4042
+ function baseCreateWrapper(bindData) {
4043
+ var func = bindData[0],
4044
+ bitmask = bindData[1],
4045
+ partialArgs = bindData[2],
4046
+ partialRightArgs = bindData[3],
4047
+ thisArg = bindData[4],
4048
+ arity = bindData[5];
4049
+
4050
+ var isBind = bitmask & 1,
4051
+ isBindKey = bitmask & 2,
4052
+ isCurry = bitmask & 4,
4053
+ isCurryBound = bitmask & 8,
4054
+ key = func;
4055
+
4056
+ function bound() {
4057
+ var thisBinding = isBind ? thisArg : this;
4058
+ if (partialArgs) {
4059
+ var args = slice(partialArgs);
4060
+ push.apply(args, arguments);
4061
+ }
4062
+ if (partialRightArgs || isCurry) {
4063
+ args || (args = slice(arguments));
4064
+ if (partialRightArgs) {
4065
+ push.apply(args, partialRightArgs);
4066
+ }
4067
+ if (isCurry && args.length < arity) {
4068
+ bitmask |= 16 & ~32;
4069
+ return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]);
4070
+ }
4071
+ }
4072
+ args || (args = arguments);
4073
+ if (isBindKey) {
4074
+ func = thisBinding[key];
4075
+ }
4076
+ if (this instanceof bound) {
4077
+ thisBinding = baseCreate(func.prototype);
4078
+ var result = func.apply(thisBinding, args);
4079
+ return isObject(result) ? result : thisBinding;
4080
+ }
4081
+ return func.apply(thisBinding, args);
4082
+ }
4083
+ setBindData(bound, bindData);
4084
+ return bound;
4085
+ }
4086
+
4087
+ module.exports = baseCreateWrapper;
4088
+
4089
+
4090
+ /***/ },
4091
+ /* 61 */
4092
+ /***/ function(module, exports, __webpack_require__) {
4093
+
4094
+ /* WEBPACK VAR INJECTION */(function(global) {/**
4095
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
4096
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
4097
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
4098
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
4099
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
4100
+ * Available under MIT license <http://lodash.com/license>
4101
+ */
4102
+ var isNative = __webpack_require__(29),
4103
+ isObject = __webpack_require__(22),
4104
+ noop = __webpack_require__(56);
4105
+
4106
+ /* Native method shortcuts for methods with the same name as other `lodash` methods */
4107
+ var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
4108
+
4109
+ /**
4110
+ * The base implementation of `_.create` without support for assigning
4111
+ * properties to the created object.
4112
+ *
4113
+ * @private
4114
+ * @param {Object} prototype The object to inherit from.
4115
+ * @returns {Object} Returns the new object.
4116
+ */
4117
+ function baseCreate(prototype, properties) {
4118
+ return isObject(prototype) ? nativeCreate(prototype) : {};
4119
+ }
4120
+ // fallback for browsers without `Object.create`
4121
+ if (!nativeCreate) {
4122
+ baseCreate = (function() {
4123
+ function Object() {}
4124
+ return function(prototype) {
4125
+ if (isObject(prototype)) {
4126
+ Object.prototype = prototype;
4127
+ var result = new Object;
4128
+ Object.prototype = null;
4129
+ }
4130
+ return result || global.Object();
4131
+ };
4132
+ }());
4133
+ }
4134
+
4135
+ module.exports = baseCreate;
4136
+
4137
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
4138
+
4139
+ /***/ }
4140
+ /******/ ])
4141
+ })
4142
+
4143
+ /*
4144
+ //@ sourceMappingURL=fluxxor.js.map
4145
+ */