text: // modules are defined as an array
  // [ module function, map of requires ]
  //
  // map of requires is short require name -> numeric require
  //
  // anything defined in a previous bundle is accessed via the
  // orig method which is the require for previous bundles
  
  // eslint-disable-next-line no-global-assign
  parcelRequire = (function (modules, cache, entry, globalName) {
    // Save the require from previous bundle to this closure if any
    var previousRequire = typeof parcelRequire === 'function' && parcelRequire;
    var nodeRequire = typeof require === 'function' && require;
  
    function newRequire(name, jumped) {
      if (!cache[name]) {
        if (!modules[name]) {
          // if we cannot find the module within our internal map or
          // cache jump to the current global require ie. the last bundle
          // that was added to the page.
          var currentRequire = typeof parcelRequire === 'function' && parcelRequire;
          if (!jumped && currentRequire) {
            return currentRequire(name, true);
          }
  
          // If there are other bundles on this page the require from the
          // previous one is saved to 'previousRequire'. Repeat this as
          // many times as there are bundles until the module is found or
          // we exhaust the require chain.
          if (previousRequire) {
            return previousRequire(name, true);
          }
  
          // Try the node require function if it exists.
          if (nodeRequire && typeof name === 'string') {
            return nodeRequire(name);
          }
  
          var err = new Error('Cannot find module \'' + name + '\'');
          err.code = 'MODULE_NOT_FOUND';
          throw err;
        }
  
        localRequire.resolve = resolve;
  
        var module = cache[name] = new newRequire.Module(name);
  
        modules[name][0].call(module.exports, localRequire, module, module.exports, this);
      }
  
      return cache[name].exports;
  
      function localRequire(x){
        return newRequire(localRequire.resolve(x));
      }
  
      function resolve(x){
        return modules[name][1][x] || x;
      }
    }
  
    function Module(moduleName) {
      this.id = moduleName;
      this.bundle = newRequire;
      this.exports = {};
    }
  
    newRequire.isParcelRequire = true;
    newRequire.Module = Module;
    newRequire.modules = modules;
    newRequire.cache = cache;
    newRequire.parent = previousRequire;
    newRequire.register = function (id, exports) {
      modules[id] = [function (require, module) {
        module.exports = exports;
      }, {}];
    };
  
    for (var i = 0; i < entry.length; i++) {
      newRequire(entry[i]);
    }
  
    if (entry.length) {
      // Expose entry point to Node, AMD or browser globals
      // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
      var mainExports = newRequire(entry[entry.length - 1]);
  
      // CommonJS
      if (typeof exports === "object" && typeof module !== "undefined") {
        module.exports = mainExports;
  
      // RequireJS
      } else if (typeof define === "function" && define.amd) {
       define(function () {
         return mainExports;
       });
  
      // <script>
      } else if (globalName) {
        this[globalName] = mainExports;
      }
    }
  
    // Override the current require with this new one
    return newRequire;
  })({"js/vibrant.worker.min.js":[function(require,module,exports) {
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  
  !function (e) {
    function n(r) {
      if (t[r]) return t[r].exports;var o = t[r] = { i: r, l: !1, exports: {} };return e[r].call(o.exports, o, o.exports, n), o.l = !0, o.exports;
    }var t = {};n.m = e, n.c = t, n.d = function (e, t, r) {
      n.o(e, t) || Object.defineProperty(e, t, { configurable: !1, enumerable: !0, get: r });
    }, n.n = function (e) {
      var t = e && e.__esModule ? function () {
        return e.default;
      } : function () {
        return e;
      };return n.d(t, "a", t), t;
    }, n.o = function (e, n) {
      return Object.prototype.hasOwnProperty.call(e, n);
    }, n.p = "", n(n.s = 194);
  }([function (e, n) {
    var t = Array.isArray;e.exports = t;
  }, function (e, n, t) {
    var r = t(43),
        o = "object" == (typeof self === "undefined" ? "undefined" : _typeof(self)) && self && self.Object === Object && self,
        i = r || o || Function("return this")();e.exports = i;
  }, function (e, n) {
    function t(e) {
      var n = typeof e === "undefined" ? "undefined" : _typeof(e);return null != e && ("object" == n || "function" == n);
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n) {
      var t = i(e, n);return o(t) ? t : void 0;
    }var o = t(105),
        i = t(108);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return a(e) ? o(e) : i(e);
    }var o = t(42),
        i = t(90),
        a = t(11);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return null == e ? void 0 === e ? u : s : c && c in Object(e) ? i(e) : a(e);
    }var o = t(6),
        i = t(84),
        a = t(85),
        s = "[object Null]",
        u = "[object Undefined]",
        c = o ? o.toStringTag : void 0;e.exports = r;
  }, function (e, n, t) {
    var r = t(1),
        o = r.Symbol;e.exports = o;
  }, function (e, n) {
    function t(e) {
      return null != e && "object" == (typeof e === "undefined" ? "undefined" : _typeof(e));
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n, t, r) {
      var a = !t;t || (t = {});for (var s = -1, u = n.length; ++s < u;) {
        var c = n[s],
            l = r ? r(t[c], e[c], c, t, e) : void 0;void 0 === l && (l = e[c]), a ? i(t, c, l) : o(t, c, l);
      }return t;
    }var o = t(62),
        i = t(63);e.exports = r;
  }, function (e, n) {
    function t(e, n) {
      return e === n || e !== e && n !== n;
    }e.exports = t;
  }, function (e, n, t) {
    "use strict";
    function r() {
      var e,
          n,
          t = new _(function (t, r) {
        e = t, n = r;
      });return { resolve: e, reject: n, promise: t };
    }function o(e) {
      var n = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return null === n ? null : [n[1], n[2], n[3]].map(function (e) {
        return parseInt(e, 16);
      });
    }function i(e, n, t) {
      return "#" + ((1 << 24) + (e << 16) + (n << 8) + t).toString(16).slice(1, 7);
    }function a(e, n, t) {
      e /= 255, n /= 255, t /= 255;var r,
          o,
          i = Math.max(e, n, t),
          a = Math.min(e, n, t),
          s = (i + a) / 2;if (i === a) r = o = 0;else {
        var u = i - a;switch (o = s > .5 ? u / (2 - i - a) : u / (i + a), i) {case e:
            r = (n - t) / u + (n < t ? 6 : 0);break;case n:
            r = (t - e) / u + 2;break;case t:
            r = (e - n) / u + 4;}r /= 6;
      }return [r, o, s];
    }function s(e, n, t) {
      function r(e, n, t) {
        return t < 0 && (t += 1), t > 1 && (t -= 1), t < 1 / 6 ? e + 6 * (n - e) * t : t < .5 ? n : t < 2 / 3 ? e + (n - e) * (2 / 3 - t) * 6 : e;
      }var o, i, a;if (0 === n) o = i = a = t;else {
        var s = t < .5 ? t * (1 + n) : t + n - t * n,
            u = 2 * t - s;o = r(u, s, e + 1 / 3), i = r(u, s, e), a = r(u, s, e - 1 / 3);
      }return [255 * o, 255 * i, 255 * a];
    }function u(e, n, t) {
      return e /= 255, n /= 255, t /= 255, e = e > .04045 ? Math.pow((e + .005) / 1.055, 2.4) : e / 12.92, n = n > .04045 ? Math.pow((n + .005) / 1.055, 2.4) : n / 12.92, t = t > .04045 ? Math.pow((t + .005) / 1.055, 2.4) : t / 12.92, e *= 100, n *= 100, t *= 100, [.4124 * e + .3576 * n + .1805 * t, .2126 * e + .7152 * n + .0722 * t, .0193 * e + .1192 * n + .9505 * t];
    }function c(e, n, t) {
      return e /= 95.047, n /= 100, t /= 108.883, e = e > .008856 ? Math.pow(e, 1 / 3) : 7.787 * e + 16 / 116, n = n > .008856 ? Math.pow(n, 1 / 3) : 7.787 * n + 16 / 116, t = t > .008856 ? Math.pow(t, 1 / 3) : 7.787 * t + 16 / 116, [116 * n - 16, 500 * (e - n), 200 * (n - t)];
    }function l(e, n, t) {
      var r = u(e, n, t);return c(r[0], r[1], r[2]);
    }function p(e, n) {
      var t = e[0],
          r = e[1],
          o = e[2],
          i = n[0],
          a = n[1],
          s = n[2],
          u = t - i,
          c = r - a,
          l = o - s,
          p = Math.sqrt(r * r + o * o),
          f = Math.sqrt(a * a + s * s),
          h = i - t,
          d = f - p,
          m = Math.sqrt(u * u + c * c + l * l),
          _ = Math.sqrt(m) > Math.sqrt(Math.abs(h)) + Math.sqrt(Math.abs(d)) ? Math.sqrt(m * m - h * h - d * d) : 0,
          v = 1 + .045 * p,
          y = 1 + .015 * p;return h /= 1, d /= 1 * v, _ /= 1 * y, Math.sqrt(h * h + d * d + _ * _);
    }function f(e, n) {
      return p(l.apply(void 0, e), l.apply(void 0, n));
    }function h(e, n) {
      return f(o(e), o(n));
    }function d(e) {
      return e < n.DELTAE94_DIFF_STATUS.NA ? "N/A" : e <= n.DELTAE94_DIFF_STATUS.PERFECT ? "Perfect" : e <= n.DELTAE94_DIFF_STATUS.CLOSE ? "Close" : e <= n.DELTAE94_DIFF_STATUS.GOOD ? "Good" : e < n.DELTAE94_DIFF_STATUS.SIMILAR ? "Similar" : "Wrong";
    }function m(e, t, r) {
      return (e << 2 * n.SIGBITS) + (t << n.SIGBITS) + r;
    }Object.defineProperty(n, "__esModule", { value: !0 });var _ = t(13);n.DELTAE94_DIFF_STATUS = { NA: 0, PERFECT: 1, CLOSE: 2, GOOD: 10, SIMILAR: 50 }, n.SIGBITS = 5, n.RSHIFT = 8 - n.SIGBITS, n.defer = r, n.hexToRgb = o, n.rgbToHex = i, n.rgbToHsl = a, n.hslToRgb = s, n.rgbToXyz = u, n.xyzToCIELab = c, n.rgbToCIELab = l, n.deltaE94 = p, n.rgbDiff = f, n.hexDiff = h, n.getColorDiffStatus = d, n.getColorIndex = m;
  }, function (e, n, t) {
    function r(e) {
      return null != e && i(e.length) && !o(e);
    }var o = t(46),
        i = t(24);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      if ("string" == typeof e || o(e)) return e;var n = e + "";return "0" == n && 1 / e == -i ? "-0" : n;
    }var o = t(21),
        i = 1 / 0;e.exports = r;
  }, function (e, n, t) {
    (function (n, t, r) {
      /* @preserve
      * The MIT License (MIT)
      * 
      * Copyright (c) 2013-2017 Petka Antonov
      * 
      * Permission is hereby granted, free of charge, to any person obtaining a copy
      * of this software and associated documentation files (the "Software"), to deal
      * in the Software without restriction, including without limitation the rights
      * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      * copies of the Software, and to permit persons to whom the Software is
      * furnished to do so, subject to the following conditions:
      * 
      * The above copyright notice and this permission notice shall be included in
      * all copies or substantial portions of the Software.
      * 
      * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
      * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
      * THE SOFTWARE.
      * 
      */
      !function (n) {
        e.exports = n();
      }(function () {
        var e, o, i;return function e(n, t, r) {
          function o(a, s) {
            if (!t[a]) {
              if (!n[a]) {
                var u = "function" == typeof _dereq_ && _dereq_;if (!s && u) return u(a, !0);if (i) return i(a, !0);var c = new Error("Cannot find module '" + a + "'");throw c.code = "MODULE_NOT_FOUND", c;
              }var l = t[a] = { exports: {} };n[a][0].call(l.exports, function (e) {
                var t = n[a][1][e];return o(t || e);
              }, l, l.exports, e, n, t, r);
            }return t[a].exports;
          }for (var i = "function" == typeof _dereq_ && _dereq_, a = 0; a < r.length; a++) {
            o(r[a]);
          }return o;
        }({ 1: [function (e, n, t) {
            "use strict";
            n.exports = function (e) {
              function n(e) {
                var n = new t(e),
                    r = n.promise();return n.setHowMany(1), n.setUnwrap(), n.init(), r;
              }var t = e._SomePromiseArray;e.any = function (e) {
                return n(e);
              }, e.prototype.any = function () {
                return n(this);
              };
            };
          }, {}], 2: [function (e, t, r) {
            "use strict";
            function o() {
              this._customScheduler = !1, this._isTickUsed = !1, this._lateQueue = new l(16), this._normalQueue = new l(16), this._haveDrainedQueues = !1, this._trampolineEnabled = !0;var e = this;this.drainQueues = function () {
                e._drainQueues();
              }, this._schedule = c;
            }function i(e, n, t) {
              this._lateQueue.push(e, n, t), this._queueTick();
            }function a(e, n, t) {
              this._normalQueue.push(e, n, t), this._queueTick();
            }function s(e) {
              this._normalQueue._pushOne(e), this._queueTick();
            }var u;try {
              throw new Error();
            } catch (e) {
              u = e;
            }var c = e("./schedule"),
                l = e("./queue"),
                p = e("./util");o.prototype.setScheduler = function (e) {
              var n = this._schedule;return this._schedule = e, this._customScheduler = !0, n;
            }, o.prototype.hasCustomScheduler = function () {
              return this._customScheduler;
            }, o.prototype.enableTrampoline = function () {
              this._trampolineEnabled = !0;
            }, o.prototype.disableTrampolineIfNecessary = function () {
              p.hasDevTools && (this._trampolineEnabled = !1);
            }, o.prototype.haveItemsQueued = function () {
              return this._isTickUsed || this._haveDrainedQueues;
            }, o.prototype.fatalError = function (e, t) {
              t ? (n.stderr.write("Fatal " + (e instanceof Error ? e.stack : e) + "\n"), n.exit(2)) : this.throwLater(e);
            }, o.prototype.throwLater = function (e, n) {
              if (1 === arguments.length && (n = e, e = function e() {
                throw n;
              }), "undefined" != typeof setTimeout) setTimeout(function () {
                e(n);
              }, 0);else try {
                this._schedule(function () {
                  e(n);
                });
              } catch (e) {
                throw new Error("No async scheduler available\n\n    See http://goo.gl/MqrFmX\n");
              }
            }, p.hasDevTools ? (o.prototype.invokeLater = function (e, n, t) {
              this._trampolineEnabled ? i.call(this, e, n, t) : this._schedule(function () {
                setTimeout(function () {
                  e.call(n, t);
                }, 100);
              });
            }, o.prototype.invoke = function (e, n, t) {
              this._trampolineEnabled ? a.call(this, e, n, t) : this._schedule(function () {
                e.call(n, t);
              });
            }, o.prototype.settlePromises = function (e) {
              this._trampolineEnabled ? s.call(this, e) : this._schedule(function () {
                e._settlePromises();
              });
            }) : (o.prototype.invokeLater = i, o.prototype.invoke = a, o.prototype.settlePromises = s), o.prototype._drainQueue = function (e) {
              for (; e.length() > 0;) {
                var n = e.shift();if ("function" == typeof n) {
                  var t = e.shift(),
                      r = e.shift();n.call(t, r);
                } else n._settlePromises();
              }
            }, o.prototype._drainQueues = function () {
              this._drainQueue(this._normalQueue), this._reset(), this._haveDrainedQueues = !0, this._drainQueue(this._lateQueue);
            }, o.prototype._queueTick = function () {
              this._isTickUsed || (this._isTickUsed = !0, this._schedule(this.drainQueues));
            }, o.prototype._reset = function () {
              this._isTickUsed = !1;
            }, t.exports = o, t.exports.firstLineError = u;
          }, { "./queue": 26, "./schedule": 29, "./util": 36 }], 3: [function (e, n, t) {
            "use strict";
            n.exports = function (e, n, t, r) {
              var o = !1,
                  i = function i(e, n) {
                this._reject(n);
              },
                  a = function a(e, n) {
                n.promiseRejectionQueued = !0, n.bindingPromise._then(i, i, null, this, e);
              },
                  s = function s(e, n) {
                0 == (50397184 & this._bitField) && this._resolveCallback(n.target);
              },
                  u = function u(e, n) {
                n.promiseRejectionQueued || this._reject(e);
              };e.prototype.bind = function (i) {
                o || (o = !0, e.prototype._propagateFrom = r.propagateFromFunction(), e.prototype._boundValue = r.boundValueFunction());var c = t(i),
                    l = new e(n);l._propagateFrom(this, 1);var p = this._target();if (l._setBoundTo(c), c instanceof e) {
                  var f = { promiseRejectionQueued: !1, promise: l, target: p, bindingPromise: c };p._then(n, a, void 0, l, f), c._then(s, u, void 0, l, f), l._setOnCancel(c);
                } else l._resolveCallback(p);return l;
              }, e.prototype._setBoundTo = function (e) {
                void 0 !== e ? (this._bitField = 2097152 | this._bitField, this._boundTo = e) : this._bitField = -2097153 & this._bitField;
              }, e.prototype._isBound = function () {
                return 2097152 == (2097152 & this._bitField);
              }, e.bind = function (n, t) {
                return e.resolve(t).bind(n);
              };
            };
          }, {}], 4: [function (e, n, t) {
            "use strict";
            function r() {
              try {
                Promise === i && (Promise = o);
              } catch (e) {}return i;
            }var o;"undefined" != typeof Promise && (o = Promise);var i = e("./promise")();i.noConflict = r, n.exports = i;
          }, { "./promise": 22 }], 5: [function (e, n, t) {
            "use strict";
            var r = Object.create;if (r) {
              var o = r(null),
                  i = r(null);o[" size"] = i[" size"] = 0;
            }n.exports = function (n) {
              function t(e, t) {
                var r;if (null != e && (r = e[t]), "function" != typeof r) {
                  var o = "Object " + s.classString(e) + " has no method '" + s.toString(t) + "'";throw new n.TypeError(o);
                }return r;
              }function r(e) {
                return t(e, this.pop()).apply(e, this);
              }function o(e) {
                return e[this];
              }function i(e) {
                var n = +this;return n < 0 && (n = Math.max(0, n + e.length)), e[n];
              }var a,
                  s = e("./util"),
                  u = s.canEvaluate;s.isIdentifier;n.prototype.call = function (e) {
                var n = [].slice.call(arguments, 1);return n.push(e), this._then(r, void 0, void 0, n, void 0);
              }, n.prototype.get = function (e) {
                var n,
                    t = "number" == typeof e;if (t) n = i;else if (u) {
                  var r = a(e);n = null !== r ? r : o;
                } else n = o;return this._then(n, void 0, void 0, e, void 0);
              };
            };
          }, { "./util": 36 }], 6: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r, o) {
              var i = e("./util"),
                  a = i.tryCatch,
                  s = i.errorObj,
                  u = n._async;n.prototype.break = n.prototype.cancel = function () {
                if (!o.cancellation()) return this._warn("cancellation is disabled");for (var e = this, n = e; e._isCancellable();) {
                  if (!e._cancelBy(n)) {
                    n._isFollowing() ? n._followee().cancel() : n._cancelBranched();break;
                  }var t = e._cancellationParent;if (null == t || !t._isCancellable()) {
                    e._isFollowing() ? e._followee().cancel() : e._cancelBranched();break;
                  }e._isFollowing() && e._followee().cancel(), e._setWillBeCancelled(), n = e, e = t;
                }
              }, n.prototype._branchHasCancelled = function () {
                this._branchesRemainingToCancel--;
              }, n.prototype._enoughBranchesHaveCancelled = function () {
                return void 0 === this._branchesRemainingToCancel || this._branchesRemainingToCancel <= 0;
              }, n.prototype._cancelBy = function (e) {
                return e === this ? (this._branchesRemainingToCancel = 0, this._invokeOnCancel(), !0) : (this._branchHasCancelled(), !!this._enoughBranchesHaveCancelled() && (this._invokeOnCancel(), !0));
              }, n.prototype._cancelBranched = function () {
                this._enoughBranchesHaveCancelled() && this._cancel();
              }, n.prototype._cancel = function () {
                this._isCancellable() && (this._setCancelled(), u.invoke(this._cancelPromises, this, void 0));
              }, n.prototype._cancelPromises = function () {
                this._length() > 0 && this._settlePromises();
              }, n.prototype._unsetOnCancel = function () {
                this._onCancelField = void 0;
              }, n.prototype._isCancellable = function () {
                return this.isPending() && !this._isCancelled();
              }, n.prototype.isCancellable = function () {
                return this.isPending() && !this.isCancelled();
              }, n.prototype._doInvokeOnCancel = function (e, n) {
                if (i.isArray(e)) for (var t = 0; t < e.length; ++t) {
                  this._doInvokeOnCancel(e[t], n);
                } else if (void 0 !== e) if ("function" == typeof e) {
                  if (!n) {
                    var r = a(e).call(this._boundValue());r === s && (this._attachExtraTrace(r.e), u.throwLater(r.e));
                  }
                } else e._resultCancelled(this);
              }, n.prototype._invokeOnCancel = function () {
                var e = this._onCancel();this._unsetOnCancel(), u.invoke(this._doInvokeOnCancel, this, e);
              }, n.prototype._invokeInternalOnCancel = function () {
                this._isCancellable() && (this._doInvokeOnCancel(this._onCancel(), !0), this._unsetOnCancel());
              }, n.prototype._resultCancelled = function () {
                this.cancel();
              };
            };
          }, { "./util": 36 }], 7: [function (e, n, t) {
            "use strict";
            n.exports = function (n) {
              function t(e, t, s) {
                return function (u) {
                  var c = s._boundValue();e: for (var l = 0; l < e.length; ++l) {
                    var p = e[l];if (p === Error || null != p && p.prototype instanceof Error) {
                      if (u instanceof p) return i(t).call(c, u);
                    } else if ("function" == typeof p) {
                      var f = i(p).call(c, u);if (f === a) return f;if (f) return i(t).call(c, u);
                    } else if (r.isObject(u)) {
                      for (var h = o(p), d = 0; d < h.length; ++d) {
                        var m = h[d];if (p[m] != u[m]) continue e;
                      }return i(t).call(c, u);
                    }
                  }return n;
                };
              }var r = e("./util"),
                  o = e("./es5").keys,
                  i = r.tryCatch,
                  a = r.errorObj;return t;
            };
          }, { "./es5": 13, "./util": 36 }], 8: [function (e, n, t) {
            "use strict";
            n.exports = function (e) {
              function n() {
                this._trace = new n.CapturedTrace(r());
              }function t() {
                if (o) return new n();
              }function r() {
                var e = i.length - 1;if (e >= 0) return i[e];
              }var o = !1,
                  i = [];return e.prototype._promiseCreated = function () {}, e.prototype._pushContext = function () {}, e.prototype._popContext = function () {
                return null;
              }, e._peekContext = e.prototype._peekContext = function () {}, n.prototype._pushContext = function () {
                void 0 !== this._trace && (this._trace._promiseCreated = null, i.push(this._trace));
              }, n.prototype._popContext = function () {
                if (void 0 !== this._trace) {
                  var e = i.pop(),
                      n = e._promiseCreated;return e._promiseCreated = null, n;
                }return null;
              }, n.CapturedTrace = null, n.create = t, n.deactivateLongStackTraces = function () {}, n.activateLongStackTraces = function () {
                var t = e.prototype._pushContext,
                    i = e.prototype._popContext,
                    a = e._peekContext,
                    s = e.prototype._peekContext,
                    u = e.prototype._promiseCreated;n.deactivateLongStackTraces = function () {
                  e.prototype._pushContext = t, e.prototype._popContext = i, e._peekContext = a, e.prototype._peekContext = s, e.prototype._promiseCreated = u, o = !1;
                }, o = !0, e.prototype._pushContext = n.prototype._pushContext, e.prototype._popContext = n.prototype._popContext, e._peekContext = e.prototype._peekContext = r, e.prototype._promiseCreated = function () {
                  var e = this._peekContext();e && null == e._promiseCreated && (e._promiseCreated = this);
                };
              }, n;
            };
          }, {}], 9: [function (e, t, r) {
            "use strict";
            t.exports = function (t, r) {
              function o(e, n) {
                return { promise: n };
              }function i() {
                return !1;
              }function a(e, n, t) {
                var r = this;try {
                  e(n, t, function (e) {
                    if ("function" != typeof e) throw new TypeError("onCancel must be a function, got: " + D.toString(e));r._attachCancellationCallback(e);
                  });
                } catch (e) {
                  return e;
                }
              }function s(e) {
                if (!this._isCancellable()) return this;var n = this._onCancel();void 0 !== n ? D.isArray(n) ? n.push(e) : this._setOnCancel([n, e]) : this._setOnCancel(e);
              }function u() {
                return this._onCancelField;
              }function c(e) {
                this._onCancelField = e;
              }function l() {
                this._cancellationParent = void 0, this._onCancelField = void 0;
              }function p(e, n) {
                if (0 != (1 & n)) {
                  this._cancellationParent = e;var t = e._branchesRemainingToCancel;void 0 === t && (t = 0), e._branchesRemainingToCancel = t + 1;
                }0 != (2 & n) && e._isBound() && this._setBoundTo(e._boundTo);
              }function f(e, n) {
                0 != (2 & n) && e._isBound() && this._setBoundTo(e._boundTo);
              }function h() {
                var e = this._boundTo;return void 0 !== e && e instanceof t ? e.isFulfilled() ? e.value() : void 0 : e;
              }function d() {
                this._trace = new O(this._peekContext());
              }function m(e, n) {
                if (V(e)) {
                  var t = this._trace;if (void 0 !== t && n && (t = t._parent), void 0 !== t) t.attachExtraTrace(e);else if (!e.__stackCleaned__) {
                    var r = w(e);D.notEnumerableProp(e, "stack", r.message + "\n" + r.stack.join("\n")), D.notEnumerableProp(e, "__stackCleaned__", !0);
                  }
                }
              }function _(e, n, t, r, o) {
                if (void 0 === e && null !== n && X) {
                  if (void 0 !== o && o._returnedNonUndefined()) return;if (0 == (65535 & r._bitField)) return;t && (t += " ");var i = "",
                      a = "";if (n._trace) {
                    for (var s = n._trace.stack.split("\n"), u = x(s), c = u.length - 1; c >= 0; --c) {
                      var l = u[c];if (!H.test(l)) {
                        var p = l.match(B);p && (i = "at " + p[1] + ":" + p[2] + ":" + p[3] + " ");break;
                      }
                    }if (u.length > 0) for (var f = u[0], c = 0; c < s.length; ++c) {
                      if (s[c] === f) {
                        c > 0 && (a = "\n" + s[c - 1]);break;
                      }
                    }
                  }var h = "a promise was created in a " + t + "handler " + i + "but was not returned from it, see http://goo.gl/rRqMUw" + a;r._warn(h, !0, n);
                }
              }function v(e, n) {
                var t = e + " is deprecated and will be removed in a future version.";return n && (t += " Use " + n + " instead."), y(t);
              }function y(e, n, r) {
                if (ae.warnings) {
                  var o,
                      i = new M(e);if (n) r._attachExtraTrace(i);else if (ae.longStackTraces && (o = t._peekContext())) o.attachExtraTrace(i);else {
                    var a = w(i);i.stack = a.message + "\n" + a.stack.join("\n");
                  }ne("warning", i) || T(i, "", !0);
                }
              }function b(e, n) {
                for (var t = 0; t < n.length - 1; ++t) {
                  n[t].push("From previous event:"), n[t] = n[t].join("\n");
                }return t < n.length && (n[t] = n[t].join("\n")), e + "\n" + n.join("\n");
              }function g(e) {
                for (var n = 0; n < e.length; ++n) {
                  (0 === e[n].length || n + 1 < e.length && e[n][0] === e[n + 1][0]) && (e.splice(n, 1), n--);
                }
              }function k(e) {
                for (var n = e[0], t = 1; t < e.length; ++t) {
                  for (var r = e[t], o = n.length - 1, i = n[o], a = -1, s = r.length - 1; s >= 0; --s) {
                    if (r[s] === i) {
                      a = s;break;
                    }
                  }for (var s = a; s >= 0; --s) {
                    var u = r[s];if (n[o] !== u) break;n.pop(), o--;
                  }n = r;
                }
              }function x(e) {
                for (var n = [], t = 0; t < e.length; ++t) {
                  var r = e[t],
                      o = "    (No stack trace)" === r || z.test(r),
                      i = o && re(r);o && !i && (W && " " !== r.charAt(0) && (r = "    " + r), n.push(r));
                }return n;
              }function j(e) {
                for (var n = e.stack.replace(/\s+$/g, "").split("\n"), t = 0; t < n.length; ++t) {
                  var r = n[t];if ("    (No stack trace)" === r || z.test(r)) break;
                }return t > 0 && "SyntaxError" != e.name && (n = n.slice(t)), n;
              }function w(e) {
                var n = e.stack,
                    t = e.toString();return n = "string" == typeof n && n.length > 0 ? j(e) : ["    (No stack trace)"], { message: t, stack: "SyntaxError" == e.name ? n : x(n) };
              }function T(e, n, t) {
                if ("undefined" != typeof console) {
                  var r;if (D.isObject(e)) {
                    var o = e.stack;r = n + G(o, e);
                  } else r = n + String(e);"function" == typeof q ? q(r, t) : "function" != typeof console.log && "object" != _typeof(console.log) || console.log(r);
                }
              }function P(e, n, t, r) {
                var o = !1;try {
                  "function" == typeof n && (o = !0, "rejectionHandled" === e ? n(r) : n(t, r));
                } catch (e) {
                  L.throwLater(e);
                }"unhandledRejection" === e ? ne(e, t, r) || o || T(t, "Unhandled rejection ") : ne(e, r);
              }function C(e) {
                var n;if ("function" == typeof e) n = "[function " + (e.name || "anonymous") + "]";else {
                  n = e && "function" == typeof e.toString ? e.toString() : D.toString(e);if (/\[object [a-zA-Z0-9$_]+\]/.test(n)) try {
                    n = JSON.stringify(e);
                  } catch (e) {}0 === n.length && (n = "(empty array)");
                }return "(<" + E(n) + ">, no stack trace)";
              }function E(e) {
                return e.length < 41 ? e : e.substr(0, 38) + "...";
              }function A() {
                return "function" == typeof ie;
              }function S(e) {
                var n = e.match(oe);if (n) return { fileName: n[1], line: parseInt(n[2], 10) };
              }function F(e, n) {
                if (A()) {
                  for (var t, r, o = e.stack.split("\n"), i = n.stack.split("\n"), a = -1, s = -1, u = 0; u < o.length; ++u) {
                    var c = S(o[u]);if (c) {
                      t = c.fileName, a = c.line;break;
                    }
                  }for (var u = 0; u < i.length; ++u) {
                    var c = S(i[u]);if (c) {
                      r = c.fileName, s = c.line;break;
                    }
                  }a < 0 || s < 0 || !t || !r || t !== r || a >= s || (re = function re(e) {
                    if (U.test(e)) return !0;var n = S(e);return !!(n && n.fileName === t && a <= n.line && n.line <= s);
                  });
                }
              }function O(e) {
                this._parent = e, this._promisesCreated = 0;var n = this._length = 1 + (void 0 === e ? 0 : e._length);ie(this, O), n > 32 && this.uncycle();
              }var R,
                  I,
                  q,
                  N = t._getDomain,
                  L = t._async,
                  M = e("./errors").Warning,
                  D = e("./util"),
                  V = D.canAttachTrace,
                  U = /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,
                  H = /\((?:timers\.js):\d+:\d+\)/,
                  B = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,
                  z = null,
                  G = null,
                  W = !1,
                  Q = !(0 == D.env("BLUEBIRD_DEBUG")),
                  $ = !(0 == D.env("BLUEBIRD_WARNINGS") || !Q && !D.env("BLUEBIRD_WARNINGS")),
                  K = !(0 == D.env("BLUEBIRD_LONG_STACK_TRACES") || !Q && !D.env("BLUEBIRD_LONG_STACK_TRACES")),
                  X = 0 != D.env("BLUEBIRD_W_FORGOTTEN_RETURN") && ($ || !!D.env("BLUEBIRD_W_FORGOTTEN_RETURN"));t.prototype.suppressUnhandledRejections = function () {
                var e = this._target();e._bitField = -1048577 & e._bitField | 524288;
              }, t.prototype._ensurePossibleRejectionHandled = function () {
                if (0 == (524288 & this._bitField)) {
                  this._setRejectionIsUnhandled();var e = this;setTimeout(function () {
                    e._notifyUnhandledRejection();
                  }, 1);
                }
              }, t.prototype._notifyUnhandledRejectionIsHandled = function () {
                P("rejectionHandled", R, void 0, this);
              }, t.prototype._setReturnedNonUndefined = function () {
                this._bitField = 268435456 | this._bitField;
              }, t.prototype._returnedNonUndefined = function () {
                return 0 != (268435456 & this._bitField);
              }, t.prototype._notifyUnhandledRejection = function () {
                if (this._isRejectionUnhandled()) {
                  var e = this._settledValue();this._setUnhandledRejectionIsNotified(), P("unhandledRejection", I, e, this);
                }
              }, t.prototype._setUnhandledRejectionIsNotified = function () {
                this._bitField = 262144 | this._bitField;
              }, t.prototype._unsetUnhandledRejectionIsNotified = function () {
                this._bitField = -262145 & this._bitField;
              }, t.prototype._isUnhandledRejectionNotified = function () {
                return (262144 & this._bitField) > 0;
              }, t.prototype._setRejectionIsUnhandled = function () {
                this._bitField = 1048576 | this._bitField;
              }, t.prototype._unsetRejectionIsUnhandled = function () {
                this._bitField = -1048577 & this._bitField, this._isUnhandledRejectionNotified() && (this._unsetUnhandledRejectionIsNotified(), this._notifyUnhandledRejectionIsHandled());
              }, t.prototype._isRejectionUnhandled = function () {
                return (1048576 & this._bitField) > 0;
              }, t.prototype._warn = function (e, n, t) {
                return y(e, n, t || this);
              }, t.onPossiblyUnhandledRejection = function (e) {
                var n = N();I = "function" == typeof e ? null === n ? e : D.domainBind(n, e) : void 0;
              }, t.onUnhandledRejectionHandled = function (e) {
                var n = N();R = "function" == typeof e ? null === n ? e : D.domainBind(n, e) : void 0;
              };var Y = function Y() {};t.longStackTraces = function () {
                if (L.haveItemsQueued() && !ae.longStackTraces) throw new Error("cannot enable long stack traces after promises have been created\n\n    See http://goo.gl/MqrFmX\n");if (!ae.longStackTraces && A()) {
                  var e = t.prototype._captureStackTrace,
                      n = t.prototype._attachExtraTrace;ae.longStackTraces = !0, Y = function Y() {
                    if (L.haveItemsQueued() && !ae.longStackTraces) throw new Error("cannot enable long stack traces after promises have been created\n\n    See http://goo.gl/MqrFmX\n");t.prototype._captureStackTrace = e, t.prototype._attachExtraTrace = n, r.deactivateLongStackTraces(), L.enableTrampoline(), ae.longStackTraces = !1;
                  }, t.prototype._captureStackTrace = d, t.prototype._attachExtraTrace = m, r.activateLongStackTraces(), L.disableTrampolineIfNecessary();
                }
              }, t.hasLongStackTraces = function () {
                return ae.longStackTraces && A();
              };var J = function () {
                try {
                  if ("function" == typeof CustomEvent) {
                    var e = new CustomEvent("CustomEvent");return D.global.dispatchEvent(e), function (e, n) {
                      var t = new CustomEvent(e.toLowerCase(), { detail: n, cancelable: !0 });return !D.global.dispatchEvent(t);
                    };
                  }if ("function" == typeof Event) {
                    var e = new Event("CustomEvent");return D.global.dispatchEvent(e), function (e, n) {
                      var t = new Event(e.toLowerCase(), { cancelable: !0 });return t.detail = n, !D.global.dispatchEvent(t);
                    };
                  }var e = document.createEvent("CustomEvent");return e.initCustomEvent("testingtheevent", !1, !0, {}), D.global.dispatchEvent(e), function (e, n) {
                    var t = document.createEvent("CustomEvent");return t.initCustomEvent(e.toLowerCase(), !1, !0, n), !D.global.dispatchEvent(t);
                  };
                } catch (e) {}return function () {
                  return !1;
                };
              }(),
                  Z = function () {
                return D.isNode ? function () {
                  return n.emit.apply(n, arguments);
                } : D.global ? function (e) {
                  var n = "on" + e.toLowerCase(),
                      t = D.global[n];return !!t && (t.apply(D.global, [].slice.call(arguments, 1)), !0);
                } : function () {
                  return !1;
                };
              }(),
                  ee = { promiseCreated: o, promiseFulfilled: o, promiseRejected: o, promiseResolved: o, promiseCancelled: o, promiseChained: function promiseChained(e, n, t) {
                  return { promise: n, child: t };
                }, warning: function warning(e, n) {
                  return { warning: n };
                }, unhandledRejection: function unhandledRejection(e, n, t) {
                  return { reason: n, promise: t };
                }, rejectionHandled: o },
                  ne = function ne(e) {
                var n = !1;try {
                  n = Z.apply(null, arguments);
                } catch (e) {
                  L.throwLater(e), n = !0;
                }var t = !1;try {
                  t = J(e, ee[e].apply(null, arguments));
                } catch (e) {
                  L.throwLater(e), t = !0;
                }return t || n;
              };t.config = function (e) {
                if (e = Object(e), "longStackTraces" in e && (e.longStackTraces ? t.longStackTraces() : !e.longStackTraces && t.hasLongStackTraces() && Y()), "warnings" in e) {
                  var n = e.warnings;ae.warnings = !!n, X = ae.warnings, D.isObject(n) && "wForgottenReturn" in n && (X = !!n.wForgottenReturn);
                }if ("cancellation" in e && e.cancellation && !ae.cancellation) {
                  if (L.haveItemsQueued()) throw new Error("cannot enable cancellation after promises are in use");t.prototype._clearCancellationData = l, t.prototype._propagateFrom = p, t.prototype._onCancel = u, t.prototype._setOnCancel = c, t.prototype._attachCancellationCallback = s, t.prototype._execute = a, te = p, ae.cancellation = !0;
                }return "monitoring" in e && (e.monitoring && !ae.monitoring ? (ae.monitoring = !0, t.prototype._fireEvent = ne) : !e.monitoring && ae.monitoring && (ae.monitoring = !1, t.prototype._fireEvent = i)), t;
              }, t.prototype._fireEvent = i, t.prototype._execute = function (e, n, t) {
                try {
                  e(n, t);
                } catch (e) {
                  return e;
                }
              }, t.prototype._onCancel = function () {}, t.prototype._setOnCancel = function (e) {}, t.prototype._attachCancellationCallback = function (e) {}, t.prototype._captureStackTrace = function () {}, t.prototype._attachExtraTrace = function () {}, t.prototype._clearCancellationData = function () {}, t.prototype._propagateFrom = function (e, n) {};var te = f,
                  re = function re() {
                return !1;
              },
                  oe = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;D.inherits(O, Error), r.CapturedTrace = O, O.prototype.uncycle = function () {
                var e = this._length;if (!(e < 2)) {
                  for (var n = [], t = {}, r = 0, o = this; void 0 !== o; ++r) {
                    n.push(o), o = o._parent;
                  }e = this._length = r;for (var r = e - 1; r >= 0; --r) {
                    var i = n[r].stack;void 0 === t[i] && (t[i] = r);
                  }for (var r = 0; r < e; ++r) {
                    var a = n[r].stack,
                        s = t[a];if (void 0 !== s && s !== r) {
                      s > 0 && (n[s - 1]._parent = void 0, n[s - 1]._length = 1), n[r]._parent = void 0, n[r]._length = 1;var u = r > 0 ? n[r - 1] : this;s < e - 1 ? (u._parent = n[s + 1], u._parent.uncycle(), u._length = u._parent._length + 1) : (u._parent = void 0, u._length = 1);for (var c = u._length + 1, l = r - 2; l >= 0; --l) {
                        n[l]._length = c, c++;
                      }return;
                    }
                  }
                }
              }, O.prototype.attachExtraTrace = function (e) {
                if (!e.__stackCleaned__) {
                  this.uncycle();for (var n = w(e), t = n.message, r = [n.stack], o = this; void 0 !== o;) {
                    r.push(x(o.stack.split("\n"))), o = o._parent;
                  }k(r), g(r), D.notEnumerableProp(e, "stack", b(t, r)), D.notEnumerableProp(e, "__stackCleaned__", !0);
                }
              };var ie = function () {
                var e = /^\s*at\s*/,
                    n = function n(e, _n) {
                  return "string" == typeof e ? e : void 0 !== _n.name && void 0 !== _n.message ? _n.toString() : C(_n);
                };if ("number" == typeof Error.stackTraceLimit && "function" == typeof Error.captureStackTrace) {
                  Error.stackTraceLimit += 6, z = e, G = n;var t = Error.captureStackTrace;return re = function re(e) {
                    return U.test(e);
                  }, function (e, n) {
                    Error.stackTraceLimit += 6, t(e, n), Error.stackTraceLimit -= 6;
                  };
                }var r = new Error();if ("string" == typeof r.stack && r.stack.split("\n")[0].indexOf("stackDetection@") >= 0) return z = /@/, G = n, W = !0, function (e) {
                  e.stack = new Error().stack;
                };var o;try {
                  throw new Error();
                } catch (e) {
                  o = "stack" in e;
                }return "stack" in r || !o || "number" != typeof Error.stackTraceLimit ? (G = function G(e, n) {
                  return "string" == typeof e ? e : "object" != (typeof n === "undefined" ? "undefined" : _typeof(n)) && "function" != typeof n || void 0 === n.name || void 0 === n.message ? C(n) : n.toString();
                }, null) : (z = e, G = n, function (e) {
                  Error.stackTraceLimit += 6;try {
                    throw new Error();
                  } catch (n) {
                    e.stack = n.stack;
                  }Error.stackTraceLimit -= 6;
                });
              }();"undefined" != typeof console && void 0 !== console.warn && (q = function q(e) {
                console.warn(e);
              }, D.isNode && n.stderr.isTTY ? q = function q(e, n) {
                var t = n ? "[33m" : "[31m";console.warn(t + e + "[0m\n");
              } : D.isNode || "string" != typeof new Error().stack || (q = function q(e, n) {
                console.warn("%c" + e, n ? "color: darkorange" : "color: red");
              }));var ae = { warnings: $, longStackTraces: !1, cancellation: !1, monitoring: !1 };return K && t.longStackTraces(), { longStackTraces: function longStackTraces() {
                  return ae.longStackTraces;
                }, warnings: function warnings() {
                  return ae.warnings;
                }, cancellation: function cancellation() {
                  return ae.cancellation;
                }, monitoring: function monitoring() {
                  return ae.monitoring;
                }, propagateFromFunction: function propagateFromFunction() {
                  return te;
                }, boundValueFunction: function boundValueFunction() {
                  return h;
                }, checkForgottenReturns: _, setBounds: F, warn: y, deprecated: v, CapturedTrace: O, fireDomEvent: J, fireGlobalEvent: Z };
            };
          }, { "./errors": 12, "./util": 36 }], 10: [function (e, n, t) {
            "use strict";
            n.exports = function (e) {
              function n() {
                return this.value;
              }function t() {
                throw this.reason;
              }e.prototype.return = e.prototype.thenReturn = function (t) {
                return t instanceof e && t.suppressUnhandledRejections(), this._then(n, void 0, void 0, { value: t }, void 0);
              }, e.prototype.throw = e.prototype.thenThrow = function (e) {
                return this._then(t, void 0, void 0, { reason: e }, void 0);
              }, e.prototype.catchThrow = function (e) {
                if (arguments.length <= 1) return this._then(void 0, t, void 0, { reason: e }, void 0);var n = arguments[1],
                    r = function r() {
                  throw n;
                };return this.caught(e, r);
              }, e.prototype.catchReturn = function (t) {
                if (arguments.length <= 1) return t instanceof e && t.suppressUnhandledRejections(), this._then(void 0, n, void 0, { value: t }, void 0);var r = arguments[1];r instanceof e && r.suppressUnhandledRejections();var o = function o() {
                  return r;
                };return this.caught(t, o);
              };
            };
          }, {}], 11: [function (e, n, t) {
            "use strict";
            n.exports = function (e, n) {
              function t() {
                return i(this);
              }function r(e, t) {
                return o(e, t, n, n);
              }var o = e.reduce,
                  i = e.all;e.prototype.each = function (e) {
                return o(this, e, n, 0)._then(t, void 0, void 0, this, void 0);
              }, e.prototype.mapSeries = function (e) {
                return o(this, e, n, n);
              }, e.each = function (e, r) {
                return o(e, r, n, 0)._then(t, void 0, void 0, e, void 0);
              }, e.mapSeries = r;
            };
          }, {}], 12: [function (e, n, t) {
            "use strict";
            function r(e, n) {
              function t(r) {
                if (!(this instanceof t)) return new t(r);p(this, "message", "string" == typeof r ? r : n), p(this, "name", e), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : Error.call(this);
              }return l(t, Error), t;
            }function o(e) {
              if (!(this instanceof o)) return new o(e);p(this, "name", "OperationalError"), p(this, "message", e), this.cause = e, this.isOperational = !0, e instanceof Error ? (p(this, "message", e.message), p(this, "stack", e.stack)) : Error.captureStackTrace && Error.captureStackTrace(this, this.constructor);
            }var i,
                a,
                s = e("./es5"),
                u = s.freeze,
                c = e("./util"),
                l = c.inherits,
                p = c.notEnumerableProp,
                f = r("Warning", "warning"),
                h = r("CancellationError", "cancellation error"),
                d = r("TimeoutError", "timeout error"),
                m = r("AggregateError", "aggregate error");try {
              i = TypeError, a = RangeError;
            } catch (e) {
              i = r("TypeError", "type error"), a = r("RangeError", "range error");
            }for (var _ = "join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "), v = 0; v < _.length; ++v) {
              "function" == typeof Array.prototype[_[v]] && (m.prototype[_[v]] = Array.prototype[_[v]]);
            }s.defineProperty(m.prototype, "length", { value: 0, configurable: !1, writable: !0, enumerable: !0 }), m.prototype.isOperational = !0;var y = 0;m.prototype.toString = function () {
              var e = Array(4 * y + 1).join(" "),
                  n = "\n" + e + "AggregateError of:\n";y++, e = Array(4 * y + 1).join(" ");for (var t = 0; t < this.length; ++t) {
                for (var r = this[t] === this ? "[Circular AggregateError]" : this[t] + "", o = r.split("\n"), i = 0; i < o.length; ++i) {
                  o[i] = e + o[i];
                }r = o.join("\n"), n += r + "\n";
              }return y--, n;
            }, l(o, Error);var b = Error.__BluebirdErrorTypes__;b || (b = u({ CancellationError: h, TimeoutError: d, OperationalError: o, RejectionError: o, AggregateError: m }), s.defineProperty(Error, "__BluebirdErrorTypes__", { value: b, writable: !1, enumerable: !1, configurable: !1 })), n.exports = { Error: Error, TypeError: i, RangeError: a, CancellationError: b.CancellationError, OperationalError: b.OperationalError, TimeoutError: b.TimeoutError, AggregateError: b.AggregateError, Warning: f };
          }, { "./es5": 13, "./util": 36 }], 13: [function (e, n, t) {
            var r = function () {
              "use strict";
              return void 0 === this;
            }();if (r) n.exports = { freeze: Object.freeze, defineProperty: Object.defineProperty, getDescriptor: Object.getOwnPropertyDescriptor, keys: Object.keys, names: Object.getOwnPropertyNames, getPrototypeOf: Object.getPrototypeOf, isArray: Array.isArray, isES5: r, propertyIsWritable: function propertyIsWritable(e, n) {
                var t = Object.getOwnPropertyDescriptor(e, n);return !(t && !t.writable && !t.set);
              } };else {
              var o = {}.hasOwnProperty,
                  i = {}.toString,
                  a = {}.constructor.prototype,
                  s = function s(e) {
                var n = [];for (var t in e) {
                  o.call(e, t) && n.push(t);
                }return n;
              },
                  u = function u(e, n) {
                return { value: e[n] };
              },
                  c = function c(e, n, t) {
                return e[n] = t.value, e;
              },
                  l = function l(e) {
                return e;
              },
                  p = function p(e) {
                try {
                  return Object(e).constructor.prototype;
                } catch (e) {
                  return a;
                }
              },
                  f = function f(e) {
                try {
                  return "[object Array]" === i.call(e);
                } catch (e) {
                  return !1;
                }
              };n.exports = { isArray: f, keys: s, names: s, defineProperty: c, getDescriptor: u, freeze: l, getPrototypeOf: p, isES5: r, propertyIsWritable: function propertyIsWritable() {
                  return !0;
                } };
            }
          }, {}], 14: [function (e, n, t) {
            "use strict";
            n.exports = function (e, n) {
              var t = e.map;e.prototype.filter = function (e, r) {
                return t(this, e, r, n);
              }, e.filter = function (e, r, o) {
                return t(e, r, o, n);
              };
            };
          }, {}], 15: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r) {
              function o(e, n, t) {
                this.promise = e, this.type = n, this.handler = t, this.called = !1, this.cancelPromise = null;
              }function i(e) {
                this.finallyHandler = e;
              }function a(e, n) {
                return null != e.cancelPromise && (arguments.length > 1 ? e.cancelPromise._reject(n) : e.cancelPromise._cancel(), e.cancelPromise = null, !0);
              }function s() {
                return c.call(this, this.promise._target()._settledValue());
              }function u(e) {
                if (!a(this, e)) return f.e = e, f;
              }function c(e) {
                var o = this.promise,
                    c = this.handler;if (!this.called) {
                  this.called = !0;var l = this.isFinallyHandler() ? c.call(o._boundValue()) : c.call(o._boundValue(), e);if (l === r) return l;if (void 0 !== l) {
                    o._setReturnedNonUndefined();var h = t(l, o);if (h instanceof n) {
                      if (null != this.cancelPromise) {
                        if (h._isCancelled()) {
                          var d = new p("late cancellation observer");return o._attachExtraTrace(d), f.e = d, f;
                        }h.isPending() && h._attachCancellationCallback(new i(this));
                      }return h._then(s, u, void 0, this, void 0);
                    }
                  }
                }return o.isRejected() ? (a(this), f.e = e, f) : (a(this), e);
              }var l = e("./util"),
                  p = n.CancellationError,
                  f = l.errorObj,
                  h = e("./catch_filter")(r);return o.prototype.isFinallyHandler = function () {
                return 0 === this.type;
              }, i.prototype._resultCancelled = function () {
                a(this.finallyHandler);
              }, n.prototype._passThrough = function (e, n, t, r) {
                return "function" != typeof e ? this.then() : this._then(t, r, void 0, new o(this, n, e), void 0);
              }, n.prototype.lastly = n.prototype.finally = function (e) {
                return this._passThrough(e, 0, c, c);
              }, n.prototype.tap = function (e) {
                return this._passThrough(e, 1, c);
              }, n.prototype.tapCatch = function (e) {
                var t = arguments.length;if (1 === t) return this._passThrough(e, 1, void 0, c);var r,
                    o = new Array(t - 1),
                    i = 0;for (r = 0; r < t - 1; ++r) {
                  var a = arguments[r];if (!l.isObject(a)) return n.reject(new TypeError("tapCatch statement predicate: expecting an object but got " + l.classString(a)));o[i++] = a;
                }o.length = i;var s = arguments[r];return this._passThrough(h(o, s, this), 1, void 0, c);
              }, o;
            };
          }, { "./catch_filter": 7, "./util": 36 }], 16: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r, o, i, a) {
              function s(e, t, r) {
                for (var i = 0; i < t.length; ++i) {
                  r._pushContext();var a = h(t[i])(e);if (r._popContext(), a === f) {
                    r._pushContext();var s = n.reject(f.e);return r._popContext(), s;
                  }var u = o(a, r);if (u instanceof n) return u;
                }return null;
              }function u(e, t, o, i) {
                if (a.cancellation()) {
                  var s = new n(r),
                      u = this._finallyPromise = new n(r);this._promise = s.lastly(function () {
                    return u;
                  }), s._captureStackTrace(), s._setOnCancel(this);
                } else {
                  (this._promise = new n(r))._captureStackTrace();
                }this._stack = i, this._generatorFunction = e, this._receiver = t, this._generator = void 0, this._yieldHandlers = "function" == typeof o ? [o].concat(d) : d, this._yieldedPromise = null, this._cancellationPhase = !1;
              }var c = e("./errors"),
                  l = c.TypeError,
                  p = e("./util"),
                  f = p.errorObj,
                  h = p.tryCatch,
                  d = [];p.inherits(u, i), u.prototype._isResolved = function () {
                return null === this._promise;
              }, u.prototype._cleanup = function () {
                this._promise = this._generator = null, a.cancellation() && null !== this._finallyPromise && (this._finallyPromise._fulfill(), this._finallyPromise = null);
              }, u.prototype._promiseCancelled = function () {
                if (!this._isResolved()) {
                  var e,
                      t = void 0 !== this._generator.return;if (t) this._promise._pushContext(), e = h(this._generator.return).call(this._generator, void 0), this._promise._popContext();else {
                    var r = new n.CancellationError("generator .return() sentinel");n.coroutine.returnSentinel = r, this._promise._attachExtraTrace(r), this._promise._pushContext(), e = h(this._generator.throw).call(this._generator, r), this._promise._popContext();
                  }this._cancellationPhase = !0, this._yieldedPromise = null, this._continue(e);
                }
              }, u.prototype._promiseFulfilled = function (e) {
                this._yieldedPromise = null, this._promise._pushContext();var n = h(this._generator.next).call(this._generator, e);this._promise._popContext(), this._continue(n);
              }, u.prototype._promiseRejected = function (e) {
                this._yieldedPromise = null, this._promise._attachExtraTrace(e), this._promise._pushContext();var n = h(this._generator.throw).call(this._generator, e);this._promise._popContext(), this._continue(n);
              }, u.prototype._resultCancelled = function () {
                if (this._yieldedPromise instanceof n) {
                  var e = this._yieldedPromise;this._yieldedPromise = null, e.cancel();
                }
              }, u.prototype.promise = function () {
                return this._promise;
              }, u.prototype._run = function () {
                this._generator = this._generatorFunction.call(this._receiver), this._receiver = this._generatorFunction = void 0, this._promiseFulfilled(void 0);
              }, u.prototype._continue = function (e) {
                var t = this._promise;if (e === f) return this._cleanup(), this._cancellationPhase ? t.cancel() : t._rejectCallback(e.e, !1);var r = e.value;if (!0 === e.done) return this._cleanup(), this._cancellationPhase ? t.cancel() : t._resolveCallback(r);var i = o(r, this._promise);if (!(i instanceof n) && null === (i = s(i, this._yieldHandlers, this._promise))) return void this._promiseRejected(new l("A value %s was yielded that could not be treated as a promise\n\n    See http://goo.gl/MqrFmX\n\n".replace("%s", String(r)) + "From coroutine:\n" + this._stack.split("\n").slice(1, -7).join("\n")));i = i._target();var a = i._bitField;0 == (50397184 & a) ? (this._yieldedPromise = i, i._proxy(this, null)) : 0 != (33554432 & a) ? n._async.invoke(this._promiseFulfilled, this, i._value()) : 0 != (16777216 & a) ? n._async.invoke(this._promiseRejected, this, i._reason()) : this._promiseCancelled();
              }, n.coroutine = function (e, n) {
                if ("function" != typeof e) throw new l("generatorFunction must be a function\n\n    See http://goo.gl/MqrFmX\n");var t = Object(n).yieldHandler,
                    r = u,
                    o = new Error().stack;return function () {
                  var n = e.apply(this, arguments),
                      i = new r(void 0, void 0, t, o),
                      a = i.promise();return i._generator = n, i._promiseFulfilled(void 0), a;
                };
              }, n.coroutine.addYieldHandler = function (e) {
                if ("function" != typeof e) throw new l("expecting a function but got " + p.classString(e));d.push(e);
              }, n.spawn = function (e) {
                if (a.deprecated("Promise.spawn()", "Promise.coroutine()"), "function" != typeof e) return t("generatorFunction must be a function\n\n    See http://goo.gl/MqrFmX\n");var r = new u(e, this),
                    o = r.promise();return r._run(n.spawn), o;
              };
            };
          }, { "./errors": 12, "./util": 36 }], 17: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r, o, i, a) {
              var s = e("./util");s.canEvaluate, s.tryCatch, s.errorObj;n.join = function () {
                var e,
                    n = arguments.length - 1;if (n > 0 && "function" == typeof arguments[n]) {
                  e = arguments[n];var r;
                }var o = [].slice.call(arguments);e && o.pop();var r = new t(o).promise();return void 0 !== e ? r.spread(e) : r;
              };
            };
          }, { "./util": 36 }], 18: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r, o, i, a) {
              function s(e, n, t, r) {
                this.constructor$(e), this._promise._captureStackTrace();var o = c();this._callback = null === o ? n : l.domainBind(o, n), this._preservedValues = r === i ? new Array(this.length()) : null, this._limit = t, this._inFlight = 0, this._queue = [], h.invoke(this._asyncInit, this, void 0);
              }function u(e, t, o, i) {
                if ("function" != typeof t) return r("expecting a function but got " + l.classString(t));var a = 0;if (void 0 !== o) {
                  if ("object" != (typeof o === "undefined" ? "undefined" : _typeof(o)) || null === o) return n.reject(new TypeError("options argument must be an object but it is " + l.classString(o)));if ("number" != typeof o.concurrency) return n.reject(new TypeError("'concurrency' must be a number but it is " + l.classString(o.concurrency)));a = o.concurrency;
                }return a = "number" == typeof a && isFinite(a) && a >= 1 ? a : 0, new s(e, t, a, i).promise();
              }var c = n._getDomain,
                  l = e("./util"),
                  p = l.tryCatch,
                  f = l.errorObj,
                  h = n._async;l.inherits(s, t), s.prototype._asyncInit = function () {
                this._init$(void 0, -2);
              }, s.prototype._init = function () {}, s.prototype._promiseFulfilled = function (e, t) {
                var r = this._values,
                    i = this.length(),
                    s = this._preservedValues,
                    u = this._limit;if (t < 0) {
                  if (t = -1 * t - 1, r[t] = e, u >= 1 && (this._inFlight--, this._drainQueue(), this._isResolved())) return !0;
                } else {
                  if (u >= 1 && this._inFlight >= u) return r[t] = e, this._queue.push(t), !1;null !== s && (s[t] = e);var c = this._promise,
                      l = this._callback,
                      h = c._boundValue();c._pushContext();var d = p(l).call(h, e, t, i),
                      m = c._popContext();if (a.checkForgottenReturns(d, m, null !== s ? "Promise.filter" : "Promise.map", c), d === f) return this._reject(d.e), !0;var _ = o(d, this._promise);if (_ instanceof n) {
                    _ = _._target();var v = _._bitField;if (0 == (50397184 & v)) return u >= 1 && this._inFlight++, r[t] = _, _._proxy(this, -1 * (t + 1)), !1;if (0 == (33554432 & v)) return 0 != (16777216 & v) ? (this._reject(_._reason()), !0) : (this._cancel(), !0);d = _._value();
                  }r[t] = d;
                }return ++this._totalResolved >= i && (null !== s ? this._filter(r, s) : this._resolve(r), !0);
              }, s.prototype._drainQueue = function () {
                for (var e = this._queue, n = this._limit, t = this._values; e.length > 0 && this._inFlight < n;) {
                  if (this._isResolved()) return;var r = e.pop();this._promiseFulfilled(t[r], r);
                }
              }, s.prototype._filter = function (e, n) {
                for (var t = n.length, r = new Array(t), o = 0, i = 0; i < t; ++i) {
                  e[i] && (r[o++] = n[i]);
                }r.length = o, this._resolve(r);
              }, s.prototype.preservedValues = function () {
                return this._preservedValues;
              }, n.prototype.map = function (e, n) {
                return u(this, e, n, null);
              }, n.map = function (e, n, t, r) {
                return u(e, n, t, r);
              };
            };
          }, { "./util": 36 }], 19: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r, o, i) {
              var a = e("./util"),
                  s = a.tryCatch;n.method = function (e) {
                if ("function" != typeof e) throw new n.TypeError("expecting a function but got " + a.classString(e));return function () {
                  var r = new n(t);r._captureStackTrace(), r._pushContext();var o = s(e).apply(this, arguments),
                      a = r._popContext();return i.checkForgottenReturns(o, a, "Promise.method", r), r._resolveFromSyncValue(o), r;
                };
              }, n.attempt = n.try = function (e) {
                if ("function" != typeof e) return o("expecting a function but got " + a.classString(e));var r = new n(t);r._captureStackTrace(), r._pushContext();var u;if (arguments.length > 1) {
                  i.deprecated("calling Promise.try with more than 1 argument");var c = arguments[1],
                      l = arguments[2];u = a.isArray(c) ? s(e).apply(l, c) : s(e).call(l, c);
                } else u = s(e)();var p = r._popContext();return i.checkForgottenReturns(u, p, "Promise.try", r), r._resolveFromSyncValue(u), r;
              }, n.prototype._resolveFromSyncValue = function (e) {
                e === a.errorObj ? this._rejectCallback(e.e, !1) : this._resolveCallback(e, !0);
              };
            };
          }, { "./util": 36 }], 20: [function (e, n, t) {
            "use strict";
            function r(e) {
              return e instanceof Error && l.getPrototypeOf(e) === Error.prototype;
            }function o(e) {
              var n;if (r(e)) {
                n = new c(e), n.name = e.name, n.message = e.message, n.stack = e.stack;for (var t = l.keys(e), o = 0; o < t.length; ++o) {
                  var i = t[o];p.test(i) || (n[i] = e[i]);
                }return n;
              }return a.markAsOriginatingFromRejection(e), e;
            }function i(e, n) {
              return function (t, r) {
                if (null !== e) {
                  if (t) {
                    var i = o(s(t));e._attachExtraTrace(i), e._reject(i);
                  } else if (n) {
                    var a = [].slice.call(arguments, 1);e._fulfill(a);
                  } else e._fulfill(r);e = null;
                }
              };
            }var a = e("./util"),
                s = a.maybeWrapAsError,
                u = e("./errors"),
                c = u.OperationalError,
                l = e("./es5"),
                p = /^(?:name|message|stack|cause)$/;n.exports = i;
          }, { "./errors": 12, "./es5": 13, "./util": 36 }], 21: [function (e, n, t) {
            "use strict";
            n.exports = function (n) {
              function t(e, n) {
                var t = this;if (!i.isArray(e)) return r.call(t, e, n);var o = s(n).apply(t._boundValue(), [null].concat(e));o === u && a.throwLater(o.e);
              }function r(e, n) {
                var t = this,
                    r = t._boundValue(),
                    o = void 0 === e ? s(n).call(r, null) : s(n).call(r, null, e);o === u && a.throwLater(o.e);
              }function o(e, n) {
                var t = this;if (!e) {
                  var r = new Error(e + "");r.cause = e, e = r;
                }var o = s(n).call(t._boundValue(), e);o === u && a.throwLater(o.e);
              }var i = e("./util"),
                  a = n._async,
                  s = i.tryCatch,
                  u = i.errorObj;n.prototype.asCallback = n.prototype.nodeify = function (e, n) {
                if ("function" == typeof e) {
                  var i = r;void 0 !== n && Object(n).spread && (i = t), this._then(i, o, void 0, this, e);
                }return this;
              };
            };
          }, { "./util": 36 }], 22: [function (e, t, r) {
            "use strict";
            t.exports = function () {
              function r() {}function o(e, n) {
                if (null == e || e.constructor !== i) throw new b("the promise constructor cannot be invoked directly\n\n    See http://goo.gl/MqrFmX\n");if ("function" != typeof n) throw new b("expecting a function but got " + d.classString(n));
              }function i(e) {
                e !== k && o(this, e), this._bitField = 0, this._fulfillmentHandler0 = void 0, this._rejectionHandler0 = void 0, this._promise0 = void 0, this._receiver0 = void 0, this._resolveFromExecutor(e), this._promiseCreated(), this._fireEvent("promiseCreated", this);
              }function a(e) {
                this.promise._resolveCallback(e);
              }function s(e) {
                this.promise._rejectCallback(e, !1);
              }function u(e) {
                var n = new i(k);n._fulfillmentHandler0 = e, n._rejectionHandler0 = e, n._promise0 = e, n._receiver0 = e;
              }var c,
                  l = function l() {
                return new b("circular promise resolution chain\n\n    See http://goo.gl/MqrFmX\n");
              },
                  p = function p() {
                return new i.PromiseInspection(this._target());
              },
                  f = function f(e) {
                return i.reject(new b(e));
              },
                  h = {},
                  d = e("./util");c = d.isNode ? function () {
                var e = n.domain;return void 0 === e && (e = null), e;
              } : function () {
                return null;
              }, d.notEnumerableProp(i, "_getDomain", c);var m = e("./es5"),
                  _ = e("./async"),
                  v = new _();m.defineProperty(i, "_async", { value: v });var y = e("./errors"),
                  b = i.TypeError = y.TypeError;i.RangeError = y.RangeError;var g = i.CancellationError = y.CancellationError;i.TimeoutError = y.TimeoutError, i.OperationalError = y.OperationalError, i.RejectionError = y.OperationalError, i.AggregateError = y.AggregateError;var k = function k() {},
                  x = {},
                  j = {},
                  w = e("./thenables")(i, k),
                  T = e("./promise_array")(i, k, w, f, r),
                  P = e("./context")(i),
                  C = P.create,
                  E = e("./debuggability")(i, P),
                  A = (E.CapturedTrace, e("./finally")(i, w, j)),
                  S = e("./catch_filter")(j),
                  F = e("./nodeback"),
                  O = d.errorObj,
                  R = d.tryCatch;return i.prototype.toString = function () {
                return "[object Promise]";
              }, i.prototype.caught = i.prototype.catch = function (e) {
                var n = arguments.length;if (n > 1) {
                  var t,
                      r = new Array(n - 1),
                      o = 0;for (t = 0; t < n - 1; ++t) {
                    var i = arguments[t];if (!d.isObject(i)) return f("Catch statement predicate: expecting an object but got " + d.classString(i));r[o++] = i;
                  }return r.length = o, e = arguments[t], this.then(void 0, S(r, e, this));
                }return this.then(void 0, e);
              }, i.prototype.reflect = function () {
                return this._then(p, p, void 0, this, void 0);
              }, i.prototype.then = function (e, n) {
                if (E.warnings() && arguments.length > 0 && "function" != typeof e && "function" != typeof n) {
                  var t = ".then() only accepts functions but was passed: " + d.classString(e);arguments.length > 1 && (t += ", " + d.classString(n)), this._warn(t);
                }return this._then(e, n, void 0, void 0, void 0);
              }, i.prototype.done = function (e, n) {
                this._then(e, n, void 0, void 0, void 0)._setIsFinal();
              }, i.prototype.spread = function (e) {
                return "function" != typeof e ? f("expecting a function but got " + d.classString(e)) : this.all()._then(e, void 0, void 0, x, void 0);
              }, i.prototype.toJSON = function () {
                var e = { isFulfilled: !1, isRejected: !1, fulfillmentValue: void 0, rejectionReason: void 0 };return this.isFulfilled() ? (e.fulfillmentValue = this.value(), e.isFulfilled = !0) : this.isRejected() && (e.rejectionReason = this.reason(), e.isRejected = !0), e;
              }, i.prototype.all = function () {
                return arguments.length > 0 && this._warn(".all() was passed arguments but it does not take any"), new T(this).promise();
              }, i.prototype.error = function (e) {
                return this.caught(d.originatesFromRejection, e);
              }, i.getNewLibraryCopy = t.exports, i.is = function (e) {
                return e instanceof i;
              }, i.fromNode = i.fromCallback = function (e) {
                var n = new i(k);n._captureStackTrace();var t = arguments.length > 1 && !!Object(arguments[1]).multiArgs,
                    r = R(e)(F(n, t));return r === O && n._rejectCallback(r.e, !0), n._isFateSealed() || n._setAsyncGuaranteed(), n;
              }, i.all = function (e) {
                return new T(e).promise();
              }, i.cast = function (e) {
                var n = w(e);return n instanceof i || (n = new i(k), n._captureStackTrace(), n._setFulfilled(), n._rejectionHandler0 = e), n;
              }, i.resolve = i.fulfilled = i.cast, i.reject = i.rejected = function (e) {
                var n = new i(k);return n._captureStackTrace(), n._rejectCallback(e, !0), n;
              }, i.setScheduler = function (e) {
                if ("function" != typeof e) throw new b("expecting a function but got " + d.classString(e));return v.setScheduler(e);
              }, i.prototype._then = function (e, n, t, r, o) {
                var a = void 0 !== o,
                    s = a ? o : new i(k),
                    u = this._target(),
                    l = u._bitField;a || (s._propagateFrom(this, 3), s._captureStackTrace(), void 0 === r && 0 != (2097152 & this._bitField) && (r = 0 != (50397184 & l) ? this._boundValue() : u === this ? void 0 : this._boundTo), this._fireEvent("promiseChained", this, s));var p = c();if (0 != (50397184 & l)) {
                  var f,
                      h,
                      m = u._settlePromiseCtx;0 != (33554432 & l) ? (h = u._rejectionHandler0, f = e) : 0 != (16777216 & l) ? (h = u._fulfillmentHandler0, f = n, u._unsetRejectionIsUnhandled()) : (m = u._settlePromiseLateCancellationObserver, h = new g("late cancellation observer"), u._attachExtraTrace(h), f = n), v.invoke(m, u, { handler: null === p ? f : "function" == typeof f && d.domainBind(p, f), promise: s, receiver: r, value: h });
                } else u._addCallbacks(e, n, s, r, p);return s;
              }, i.prototype._length = function () {
                return 65535 & this._bitField;
              }, i.prototype._isFateSealed = function () {
                return 0 != (117506048 & this._bitField);
              }, i.prototype._isFollowing = function () {
                return 67108864 == (67108864 & this._bitField);
              }, i.prototype._setLength = function (e) {
                this._bitField = -65536 & this._bitField | 65535 & e;
              }, i.prototype._setFulfilled = function () {
                this._bitField = 33554432 | this._bitField, this._fireEvent("promiseFulfilled", this);
              }, i.prototype._setRejected = function () {
                this._bitField = 16777216 | this._bitField, this._fireEvent("promiseRejected", this);
              }, i.prototype._setFollowing = function () {
                this._bitField = 67108864 | this._bitField, this._fireEvent("promiseResolved", this);
              }, i.prototype._setIsFinal = function () {
                this._bitField = 4194304 | this._bitField;
              }, i.prototype._isFinal = function () {
                return (4194304 & this._bitField) > 0;
              }, i.prototype._unsetCancelled = function () {
                this._bitField = -65537 & this._bitField;
              }, i.prototype._setCancelled = function () {
                this._bitField = 65536 | this._bitField, this._fireEvent("promiseCancelled", this);
              }, i.prototype._setWillBeCancelled = function () {
                this._bitField = 8388608 | this._bitField;
              }, i.prototype._setAsyncGuaranteed = function () {
                v.hasCustomScheduler() || (this._bitField = 134217728 | this._bitField);
              }, i.prototype._receiverAt = function (e) {
                var n = 0 === e ? this._receiver0 : this[4 * e - 4 + 3];if (n !== h) return void 0 === n && this._isBound() ? this._boundValue() : n;
              }, i.prototype._promiseAt = function (e) {
                return this[4 * e - 4 + 2];
              }, i.prototype._fulfillmentHandlerAt = function (e) {
                return this[4 * e - 4 + 0];
              }, i.prototype._rejectionHandlerAt = function (e) {
                return this[4 * e - 4 + 1];
              }, i.prototype._boundValue = function () {}, i.prototype._migrateCallback0 = function (e) {
                var n = (e._bitField, e._fulfillmentHandler0),
                    t = e._rejectionHandler0,
                    r = e._promise0,
                    o = e._receiverAt(0);void 0 === o && (o = h), this._addCallbacks(n, t, r, o, null);
              }, i.prototype._migrateCallbackAt = function (e, n) {
                var t = e._fulfillmentHandlerAt(n),
                    r = e._rejectionHandlerAt(n),
                    o = e._promiseAt(n),
                    i = e._receiverAt(n);void 0 === i && (i = h), this._addCallbacks(t, r, o, i, null);
              }, i.prototype._addCallbacks = function (e, n, t, r, o) {
                var i = this._length();if (i >= 65531 && (i = 0, this._setLength(0)), 0 === i) this._promise0 = t, this._receiver0 = r, "function" == typeof e && (this._fulfillmentHandler0 = null === o ? e : d.domainBind(o, e)), "function" == typeof n && (this._rejectionHandler0 = null === o ? n : d.domainBind(o, n));else {
                  var a = 4 * i - 4;this[a + 2] = t, this[a + 3] = r, "function" == typeof e && (this[a + 0] = null === o ? e : d.domainBind(o, e)), "function" == typeof n && (this[a + 1] = null === o ? n : d.domainBind(o, n));
                }return this._setLength(i + 1), i;
              }, i.prototype._proxy = function (e, n) {
                this._addCallbacks(void 0, void 0, n, e, null);
              }, i.prototype._resolveCallback = function (e, n) {
                if (0 == (117506048 & this._bitField)) {
                  if (e === this) return this._rejectCallback(l(), !1);var t = w(e, this);if (!(t instanceof i)) return this._fulfill(e);n && this._propagateFrom(t, 2);var r = t._target();if (r === this) return void this._reject(l());var o = r._bitField;if (0 == (50397184 & o)) {
                    var a = this._length();a > 0 && r._migrateCallback0(this);for (var s = 1; s < a; ++s) {
                      r._migrateCallbackAt(this, s);
                    }this._setFollowing(), this._setLength(0), this._setFollowee(r);
                  } else if (0 != (33554432 & o)) this._fulfill(r._value());else if (0 != (16777216 & o)) this._reject(r._reason());else {
                    var u = new g("late cancellation observer");r._attachExtraTrace(u), this._reject(u);
                  }
                }
              }, i.prototype._rejectCallback = function (e, n, t) {
                var r = d.ensureErrorObject(e),
                    o = r === e;if (!o && !t && E.warnings()) {
                  var i = "a promise was rejected with a non-error: " + d.classString(e);this._warn(i, !0);
                }this._attachExtraTrace(r, !!n && o), this._reject(e);
              }, i.prototype._resolveFromExecutor = function (e) {
                if (e !== k) {
                  var n = this;this._captureStackTrace(), this._pushContext();var t = !0,
                      r = this._execute(e, function (e) {
                    n._resolveCallback(e);
                  }, function (e) {
                    n._rejectCallback(e, t);
                  });t = !1, this._popContext(), void 0 !== r && n._rejectCallback(r, !0);
                }
              }, i.prototype._settlePromiseFromHandler = function (e, n, t, r) {
                var o = r._bitField;if (0 == (65536 & o)) {
                  r._pushContext();var i;n === x ? t && "number" == typeof t.length ? i = R(e).apply(this._boundValue(), t) : (i = O, i.e = new b("cannot .spread() a non-array: " + d.classString(t))) : i = R(e).call(n, t);var a = r._popContext();o = r._bitField, 0 == (65536 & o) && (i === j ? r._reject(t) : i === O ? r._rejectCallback(i.e, !1) : (E.checkForgottenReturns(i, a, "", r, this), r._resolveCallback(i)));
                }
              }, i.prototype._target = function () {
                for (var e = this; e._isFollowing();) {
                  e = e._followee();
                }return e;
              }, i.prototype._followee = function () {
                return this._rejectionHandler0;
              }, i.prototype._setFollowee = function (e) {
                this._rejectionHandler0 = e;
              }, i.prototype._settlePromise = function (e, n, t, o) {
                var a = e instanceof i,
                    s = this._bitField,
                    u = 0 != (134217728 & s);0 != (65536 & s) ? (a && e._invokeInternalOnCancel(), t instanceof A && t.isFinallyHandler() ? (t.cancelPromise = e, R(n).call(t, o) === O && e._reject(O.e)) : n === p ? e._fulfill(p.call(t)) : t instanceof r ? t._promiseCancelled(e) : a || e instanceof T ? e._cancel() : t.cancel()) : "function" == typeof n ? a ? (u && e._setAsyncGuaranteed(), this._settlePromiseFromHandler(n, t, o, e)) : n.call(t, o, e) : t instanceof r ? t._isResolved() || (0 != (33554432 & s) ? t._promiseFulfilled(o, e) : t._promiseRejected(o, e)) : a && (u && e._setAsyncGuaranteed(), 0 != (33554432 & s) ? e._fulfill(o) : e._reject(o));
              }, i.prototype._settlePromiseLateCancellationObserver = function (e) {
                var n = e.handler,
                    t = e.promise,
                    r = e.receiver,
                    o = e.value;"function" == typeof n ? t instanceof i ? this._settlePromiseFromHandler(n, r, o, t) : n.call(r, o, t) : t instanceof i && t._reject(o);
              }, i.prototype._settlePromiseCtx = function (e) {
                this._settlePromise(e.promise, e.handler, e.receiver, e.value);
              }, i.prototype._settlePromise0 = function (e, n, t) {
                var r = this._promise0,
                    o = this._receiverAt(0);this._promise0 = void 0, this._receiver0 = void 0, this._settlePromise(r, e, o, n);
              }, i.prototype._clearCallbackDataAtIndex = function (e) {
                var n = 4 * e - 4;this[n + 2] = this[n + 3] = this[n + 0] = this[n + 1] = void 0;
              }, i.prototype._fulfill = function (e) {
                var n = this._bitField;if (!((117506048 & n) >>> 16)) {
                  if (e === this) {
                    var t = l();return this._attachExtraTrace(t), this._reject(t);
                  }this._setFulfilled(), this._rejectionHandler0 = e, (65535 & n) > 0 && (0 != (134217728 & n) ? this._settlePromises() : v.settlePromises(this));
                }
              }, i.prototype._reject = function (e) {
                var n = this._bitField;if (!((117506048 & n) >>> 16)) {
                  if (this._setRejected(), this._fulfillmentHandler0 = e, this._isFinal()) return v.fatalError(e, d.isNode);(65535 & n) > 0 ? v.settlePromises(this) : this._ensurePossibleRejectionHandled();
                }
              }, i.prototype._fulfillPromises = function (e, n) {
                for (var t = 1; t < e; t++) {
                  var r = this._fulfillmentHandlerAt(t),
                      o = this._promiseAt(t),
                      i = this._receiverAt(t);this._clearCallbackDataAtIndex(t), this._settlePromise(o, r, i, n);
                }
              }, i.prototype._rejectPromises = function (e, n) {
                for (var t = 1; t < e; t++) {
                  var r = this._rejectionHandlerAt(t),
                      o = this._promiseAt(t),
                      i = this._receiverAt(t);this._clearCallbackDataAtIndex(t), this._settlePromise(o, r, i, n);
                }
              }, i.prototype._settlePromises = function () {
                var e = this._bitField,
                    n = 65535 & e;if (n > 0) {
                  if (0 != (16842752 & e)) {
                    var t = this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0, t, e), this._rejectPromises(n, t);
                  } else {
                    var r = this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0, r, e), this._fulfillPromises(n, r);
                  }this._setLength(0);
                }this._clearCancellationData();
              }, i.prototype._settledValue = function () {
                var e = this._bitField;return 0 != (33554432 & e) ? this._rejectionHandler0 : 0 != (16777216 & e) ? this._fulfillmentHandler0 : void 0;
              }, i.defer = i.pending = function () {
                return E.deprecated("Promise.defer", "new Promise"), { promise: new i(k), resolve: a, reject: s };
              }, d.notEnumerableProp(i, "_makeSelfResolutionError", l), e("./method")(i, k, w, f, E), e("./bind")(i, k, w, E), e("./cancel")(i, T, f, E), e("./direct_resolve")(i), e("./synchronous_inspection")(i), e("./join")(i, T, w, k, v, c), i.Promise = i, i.version = "3.5.1", e("./map.js")(i, T, f, w, k, E), e("./call_get.js")(i), e("./using.js")(i, f, w, C, k, E), e("./timers.js")(i, k, E), e("./generators.js")(i, f, k, w, r, E), e("./nodeify.js")(i), e("./promisify.js")(i, k), e("./props.js")(i, T, w, f), e("./race.js")(i, k, w, f), e("./reduce.js")(i, T, f, w, k, E), e("./settle.js")(i, T, E), e("./some.js")(i, T, f), e("./filter.js")(i, k), e("./each.js")(i, k), e("./any.js")(i), d.toFastProperties(i), d.toFastProperties(i.prototype), u({ a: 1 }), u({ b: 2 }), u({ c: 3 }), u(1), u(function () {}), u(void 0), u(!1), u(new i(k)), E.setBounds(_.firstLineError, d.lastLineError), i;
            };
          }, { "./any.js": 1, "./async": 2, "./bind": 3, "./call_get.js": 5, "./cancel": 6, "./catch_filter": 7, "./context": 8, "./debuggability": 9, "./direct_resolve": 10, "./each.js": 11, "./errors": 12, "./es5": 13, "./filter.js": 14, "./finally": 15, "./generators.js": 16, "./join": 17, "./map.js": 18, "./method": 19, "./nodeback": 20, "./nodeify.js": 21, "./promise_array": 23, "./promisify.js": 24, "./props.js": 25, "./race.js": 27, "./reduce.js": 28, "./settle.js": 30, "./some.js": 31, "./synchronous_inspection": 32, "./thenables": 33, "./timers.js": 34, "./using.js": 35, "./util": 36 }], 23: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r, o, i) {
              function a(e) {
                switch (e) {case -2:
                    return [];case -3:
                    return {};case -6:
                    return new Map();}
              }function s(e) {
                var r = this._promise = new n(t);e instanceof n && r._propagateFrom(e, 3), r._setOnCancel(this), this._values = e, this._length = 0, this._totalResolved = 0, this._init(void 0, -2);
              }var u = e("./util");u.isArray;return u.inherits(s, i), s.prototype.length = function () {
                return this._length;
              }, s.prototype.promise = function () {
                return this._promise;
              }, s.prototype._init = function e(t, i) {
                var s = r(this._values, this._promise);if (s instanceof n) {
                  s = s._target();var c = s._bitField;if (this._values = s, 0 == (50397184 & c)) return this._promise._setAsyncGuaranteed(), s._then(e, this._reject, void 0, this, i);if (0 == (33554432 & c)) return 0 != (16777216 & c) ? this._reject(s._reason()) : this._cancel();s = s._value();
                }if (null === (s = u.asArray(s))) {
                  var l = o("expecting an array or an iterable object but got " + u.classString(s)).reason();return void this._promise._rejectCallback(l, !1);
                }if (0 === s.length) return void (-5 === i ? this._resolveEmptyArray() : this._resolve(a(i)));this._iterate(s);
              }, s.prototype._iterate = function (e) {
                var t = this.getActualLength(e.length);this._length = t, this._values = this.shouldCopyValues() ? new Array(t) : this._values;for (var o = this._promise, i = !1, a = null, s = 0; s < t; ++s) {
                  var u = r(e[s], o);u instanceof n ? (u = u._target(), a = u._bitField) : a = null, i ? null !== a && u.suppressUnhandledRejections() : null !== a ? 0 == (50397184 & a) ? (u._proxy(this, s), this._values[s] = u) : i = 0 != (33554432 & a) ? this._promiseFulfilled(u._value(), s) : 0 != (16777216 & a) ? this._promiseRejected(u._reason(), s) : this._promiseCancelled(s) : i = this._promiseFulfilled(u, s);
                }i || o._setAsyncGuaranteed();
              }, s.prototype._isResolved = function () {
                return null === this._values;
              }, s.prototype._resolve = function (e) {
                this._values = null, this._promise._fulfill(e);
              }, s.prototype._cancel = function () {
                !this._isResolved() && this._promise._isCancellable() && (this._values = null, this._promise._cancel());
              }, s.prototype._reject = function (e) {
                this._values = null, this._promise._rejectCallback(e, !1);
              }, s.prototype._promiseFulfilled = function (e, n) {
                return this._values[n] = e, ++this._totalResolved >= this._length && (this._resolve(this._values), !0);
              }, s.prototype._promiseCancelled = function () {
                return this._cancel(), !0;
              }, s.prototype._promiseRejected = function (e) {
                return this._totalResolved++, this._reject(e), !0;
              }, s.prototype._resultCancelled = function () {
                if (!this._isResolved()) {
                  var e = this._values;if (this._cancel(), e instanceof n) e.cancel();else for (var t = 0; t < e.length; ++t) {
                    e[t] instanceof n && e[t].cancel();
                  }
                }
              }, s.prototype.shouldCopyValues = function () {
                return !0;
              }, s.prototype.getActualLength = function (e) {
                return e;
              }, s;
            };
          }, { "./util": 36 }], 24: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t) {
              function r(e) {
                return !k.test(e);
              }function o(e) {
                try {
                  return !0 === e.__isPromisified__;
                } catch (e) {
                  return !1;
                }
              }function i(e, n, t) {
                var r = h.getDataPropertyOrDefault(e, n + t, b);return !!r && o(r);
              }function a(e, n, t) {
                for (var r = 0; r < e.length; r += 2) {
                  var o = e[r];if (t.test(o)) for (var i = o.replace(t, ""), a = 0; a < e.length; a += 2) {
                    if (e[a] === i) throw new y("Cannot promisify an API that has normal methods with '%s'-suffix\n\n    See http://goo.gl/MqrFmX\n".replace("%s", n));
                  }
                }
              }function s(e, n, t, r) {
                for (var s = h.inheritedDataKeys(e), u = [], c = 0; c < s.length; ++c) {
                  var l = s[c],
                      p = e[l],
                      f = r === x || x(l, p, e);"function" != typeof p || o(p) || i(e, l, n) || !r(l, p, e, f) || u.push(l, p);
                }return a(u, n, t), u;
              }function u(e, r, o, i, a, s) {
                function u() {
                  var o = r;r === f && (o = this);var i = new n(t);i._captureStackTrace();var a = "string" == typeof l && this !== c ? this[l] : e,
                      u = d(i, s);try {
                    a.apply(o, m(arguments, u));
                  } catch (e) {
                    i._rejectCallback(_(e), !0, !0);
                  }return i._isFateSealed() || i._setAsyncGuaranteed(), i;
                }var c = function () {
                  return this;
                }(),
                    l = e;return "string" == typeof l && (e = i), h.notEnumerableProp(u, "__isPromisified__", !0), u;
              }function c(e, n, t, r, o) {
                for (var i = new RegExp(j(n) + "$"), a = s(e, n, i, t), u = 0, c = a.length; u < c; u += 2) {
                  var l = a[u],
                      p = a[u + 1],
                      d = l + n;if (r === w) e[d] = w(l, f, l, p, n, o);else {
                    var m = r(p, function () {
                      return w(l, f, l, p, n, o);
                    });h.notEnumerableProp(m, "__isPromisified__", !0), e[d] = m;
                  }
                }return h.toFastProperties(e), e;
              }function l(e, n, t) {
                return w(e, n, void 0, e, null, t);
              }var p,
                  f = {},
                  h = e("./util"),
                  d = e("./nodeback"),
                  m = h.withAppended,
                  _ = h.maybeWrapAsError,
                  v = h.canEvaluate,
                  y = e("./errors").TypeError,
                  b = { __isPromisified__: !0 },
                  g = ["arity", "length", "name", "arguments", "caller", "callee", "prototype", "__isPromisified__"],
                  k = new RegExp("^(?:" + g.join("|") + ")$"),
                  x = function x(e) {
                return h.isIdentifier(e) && "_" !== e.charAt(0) && "constructor" !== e;
              },
                  j = function j(e) {
                return e.replace(/([$])/, "\\$");
              },
                  w = v ? p : u;n.promisify = function (e, n) {
                if ("function" != typeof e) throw new y("expecting a function but got " + h.classString(e));if (o(e)) return e;n = Object(n);var t = void 0 === n.context ? f : n.context,
                    i = !!n.multiArgs,
                    a = l(e, t, i);return h.copyDescriptors(e, a, r), a;
              }, n.promisifyAll = function (e, n) {
                if ("function" != typeof e && "object" != (typeof e === "undefined" ? "undefined" : _typeof(e))) throw new y("the target of promisifyAll must be an object or a function\n\n    See http://goo.gl/MqrFmX\n");n = Object(n);var t = !!n.multiArgs,
                    r = n.suffix;"string" != typeof r && (r = "Async");var o = n.filter;"function" != typeof o && (o = x);var i = n.promisifier;if ("function" != typeof i && (i = w), !h.isIdentifier(r)) throw new RangeError("suffix must be a valid identifier\n\n    See http://goo.gl/MqrFmX\n");for (var a = h.inheritedDataKeys(e), s = 0; s < a.length; ++s) {
                  var u = e[a[s]];"constructor" !== a[s] && h.isClass(u) && (c(u.prototype, r, o, i, t), c(u, r, o, i, t));
                }return c(e, r, o, i, t);
              };
            };
          }, { "./errors": 12, "./nodeback": 20, "./util": 36 }], 25: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r, o) {
              function i(e) {
                var n,
                    t = !1;if (void 0 !== s && e instanceof s) n = p(e), t = !0;else {
                  var r = l.keys(e),
                      o = r.length;n = new Array(2 * o);for (var i = 0; i < o; ++i) {
                    var a = r[i];n[i] = e[a], n[i + o] = a;
                  }
                }this.constructor$(n), this._isMap = t, this._init$(void 0, t ? -6 : -3);
              }function a(e) {
                var t,
                    a = r(e);return c(a) ? (t = a instanceof n ? a._then(n.props, void 0, void 0, void 0, void 0) : new i(a).promise(), a instanceof n && t._propagateFrom(a, 2), t) : o("cannot await properties of a non-object\n\n    See http://goo.gl/MqrFmX\n");
              }var s,
                  u = e("./util"),
                  c = u.isObject,
                  l = e("./es5");"function" == typeof Map && (s = Map);var p = function () {
                function e(e, r) {
                  this[n] = e, this[n + t] = r, n++;
                }var n = 0,
                    t = 0;return function (r) {
                  t = r.size, n = 0;var o = new Array(2 * r.size);return r.forEach(e, o), o;
                };
              }(),
                  f = function f(e) {
                for (var n = new s(), t = e.length / 2 | 0, r = 0; r < t; ++r) {
                  var o = e[t + r],
                      i = e[r];n.set(o, i);
                }return n;
              };u.inherits(i, t), i.prototype._init = function () {}, i.prototype._promiseFulfilled = function (e, n) {
                if (this._values[n] = e, ++this._totalResolved >= this._length) {
                  var t;if (this._isMap) t = f(this._values);else {
                    t = {};for (var r = this.length(), o = 0, i = this.length(); o < i; ++o) {
                      t[this._values[o + r]] = this._values[o];
                    }
                  }return this._resolve(t), !0;
                }return !1;
              }, i.prototype.shouldCopyValues = function () {
                return !1;
              }, i.prototype.getActualLength = function (e) {
                return e >> 1;
              }, n.prototype.props = function () {
                return a(this);
              }, n.props = function (e) {
                return a(e);
              };
            };
          }, { "./es5": 13, "./util": 36 }], 26: [function (e, n, t) {
            "use strict";
            function r(e, n, t, r, o) {
              for (var i = 0; i < o; ++i) {
                t[i + r] = e[i + n], e[i + n] = void 0;
              }
            }function o(e) {
              this._capacity = e, this._length = 0, this._front = 0;
            }o.prototype._willBeOverCapacity = function (e) {
              return this._capacity < e;
            }, o.prototype._pushOne = function (e) {
              var n = this.length();this._checkCapacity(n + 1), this[this._front + n & this._capacity - 1] = e, this._length = n + 1;
            }, o.prototype.push = function (e, n, t) {
              var r = this.length() + 3;if (this._willBeOverCapacity(r)) return this._pushOne(e), this._pushOne(n), void this._pushOne(t);var o = this._front + r - 3;this._checkCapacity(r);var i = this._capacity - 1;this[o + 0 & i] = e, this[o + 1 & i] = n, this[o + 2 & i] = t, this._length = r;
            }, o.prototype.shift = function () {
              var e = this._front,
                  n = this[e];return this[e] = void 0, this._front = e + 1 & this._capacity - 1, this._length--, n;
            }, o.prototype.length = function () {
              return this._length;
            }, o.prototype._checkCapacity = function (e) {
              this._capacity < e && this._resizeTo(this._capacity << 1);
            }, o.prototype._resizeTo = function (e) {
              var n = this._capacity;this._capacity = e, r(this, 0, this, n, this._front + this._length & n - 1);
            }, n.exports = o;
          }, {}], 27: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r, o) {
              function i(e, i) {
                var u = r(e);if (u instanceof n) return s(u);if (null === (e = a.asArray(e))) return o("expecting an array or an iterable object but got " + a.classString(e));var c = new n(t);void 0 !== i && c._propagateFrom(i, 3);for (var l = c._fulfill, p = c._reject, f = 0, h = e.length; f < h; ++f) {
                  var d = e[f];(void 0 !== d || f in e) && n.cast(d)._then(l, p, void 0, c, null);
                }return c;
              }var a = e("./util"),
                  s = function s(e) {
                return e.then(function (n) {
                  return i(n, e);
                });
              };n.race = function (e) {
                return i(e, void 0);
              }, n.prototype.race = function () {
                return i(this, void 0);
              };
            };
          }, { "./util": 36 }], 28: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r, o, i, a) {
              function s(e, t, r, o) {
                this.constructor$(e);var a = f();this._fn = null === a ? t : h.domainBind(a, t), void 0 !== r && (r = n.resolve(r), r._attachCancellationCallback(this)), this._initialValue = r, this._currentCancellable = null, this._eachValues = o === i ? Array(this._length) : 0 === o ? null : void 0, this._promise._captureStackTrace(), this._init$(void 0, -5);
              }function u(e, n) {
                this.isFulfilled() ? n._resolve(e) : n._reject(e);
              }function c(e, n, t, o) {
                return "function" != typeof n ? r("expecting a function but got " + h.classString(n)) : new s(e, n, t, o).promise();
              }function l(e) {
                this.accum = e, this.array._gotAccum(e);var t = o(this.value, this.array._promise);return t instanceof n ? (this.array._currentCancellable = t, t._then(p, void 0, void 0, this, void 0)) : p.call(this, t);
              }function p(e) {
                var t = this.array,
                    r = t._promise,
                    o = d(t._fn);r._pushContext();var i;(i = void 0 !== t._eachValues ? o.call(r._boundValue(), e, this.index, this.length) : o.call(r._boundValue(), this.accum, e, this.index, this.length)) instanceof n && (t._currentCancellable = i);var s = r._popContext();return a.checkForgottenReturns(i, s, void 0 !== t._eachValues ? "Promise.each" : "Promise.reduce", r), i;
              }var f = n._getDomain,
                  h = e("./util"),
                  d = h.tryCatch;h.inherits(s, t), s.prototype._gotAccum = function (e) {
                void 0 !== this._eachValues && null !== this._eachValues && e !== i && this._eachValues.push(e);
              }, s.prototype._eachComplete = function (e) {
                return null !== this._eachValues && this._eachValues.push(e), this._eachValues;
              }, s.prototype._init = function () {}, s.prototype._resolveEmptyArray = function () {
                this._resolve(void 0 !== this._eachValues ? this._eachValues : this._initialValue);
              }, s.prototype.shouldCopyValues = function () {
                return !1;
              }, s.prototype._resolve = function (e) {
                this._promise._resolveCallback(e), this._values = null;
              }, s.prototype._resultCancelled = function (e) {
                if (e === this._initialValue) return this._cancel();this._isResolved() || (this._resultCancelled$(), this._currentCancellable instanceof n && this._currentCancellable.cancel(), this._initialValue instanceof n && this._initialValue.cancel());
              }, s.prototype._iterate = function (e) {
                this._values = e;var t,
                    r,
                    o = e.length;if (void 0 !== this._initialValue ? (t = this._initialValue, r = 0) : (t = n.resolve(e[0]), r = 1), this._currentCancellable = t, !t.isRejected()) for (; r < o; ++r) {
                  var i = { accum: null, value: e[r], index: r, length: o, array: this };t = t._then(l, void 0, void 0, i, void 0);
                }void 0 !== this._eachValues && (t = t._then(this._eachComplete, void 0, void 0, this, void 0)), t._then(u, u, void 0, t, this);
              }, n.prototype.reduce = function (e, n) {
                return c(this, e, n, null);
              }, n.reduce = function (e, n, t, r) {
                return c(e, n, t, r);
              };
            };
          }, { "./util": 36 }], 29: [function (e, o, i) {
            "use strict";
            var a,
                s = e("./util"),
                u = function u() {
              throw new Error("No async scheduler available\n\n    See http://goo.gl/MqrFmX\n");
            },
                c = s.getNativePromise();if (s.isNode && "undefined" == typeof MutationObserver) {
              var l = t.setImmediate,
                  p = n.nextTick;a = s.isRecentNode ? function (e) {
                l.call(t, e);
              } : function (e) {
                p.call(n, e);
              };
            } else if ("function" == typeof c && "function" == typeof c.resolve) {
              var f = c.resolve();a = function a(e) {
                f.then(e);
              };
            } else a = "undefined" == typeof MutationObserver || "undefined" != typeof window && window.navigator && (window.navigator.standalone || window.cordova) ? void 0 !== r ? function (e) {
              r(e);
            } : "undefined" != typeof setTimeout ? function (e) {
              setTimeout(e, 0);
            } : u : function () {
              var e = document.createElement("div"),
                  n = { attributes: !0 },
                  t = !1,
                  r = document.createElement("div");new MutationObserver(function () {
                e.classList.toggle("foo"), t = !1;
              }).observe(r, n);var o = function o() {
                t || (t = !0, r.classList.toggle("foo"));
              };return function (t) {
                var r = new MutationObserver(function () {
                  r.disconnect(), t();
                });r.observe(e, n), o();
              };
            }();o.exports = a;
          }, { "./util": 36 }], 30: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r) {
              function o(e) {
                this.constructor$(e);
              }var i = n.PromiseInspection;e("./util").inherits(o, t), o.prototype._promiseResolved = function (e, n) {
                return this._values[e] = n, ++this._totalResolved >= this._length && (this._resolve(this._values), !0);
              }, o.prototype._promiseFulfilled = function (e, n) {
                var t = new i();return t._bitField = 33554432, t._settledValueField = e, this._promiseResolved(n, t);
              }, o.prototype._promiseRejected = function (e, n) {
                var t = new i();return t._bitField = 16777216, t._settledValueField = e, this._promiseResolved(n, t);
              }, n.settle = function (e) {
                return r.deprecated(".settle()", ".reflect()"), new o(e).promise();
              }, n.prototype.settle = function () {
                return n.settle(this);
              };
            };
          }, { "./util": 36 }], 31: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r) {
              function o(e) {
                this.constructor$(e), this._howMany = 0, this._unwrap = !1, this._initialized = !1;
              }function i(e, n) {
                if ((0 | n) !== n || n < 0) return r("expecting a positive integer\n\n    See http://goo.gl/MqrFmX\n");var t = new o(e),
                    i = t.promise();return t.setHowMany(n), t.init(), i;
              }var a = e("./util"),
                  s = e("./errors").RangeError,
                  u = e("./errors").AggregateError,
                  c = a.isArray,
                  l = {};a.inherits(o, t), o.prototype._init = function () {
                if (this._initialized) {
                  if (0 === this._howMany) return void this._resolve([]);this._init$(void 0, -5);var e = c(this._values);!this._isResolved() && e && this._howMany > this._canPossiblyFulfill() && this._reject(this._getRangeError(this.length()));
                }
              }, o.prototype.init = function () {
                this._initialized = !0, this._init();
              }, o.prototype.setUnwrap = function () {
                this._unwrap = !0;
              }, o.prototype.howMany = function () {
                return this._howMany;
              }, o.prototype.setHowMany = function (e) {
                this._howMany = e;
              }, o.prototype._promiseFulfilled = function (e) {
                return this._addFulfilled(e), this._fulfilled() === this.howMany() && (this._values.length = this.howMany(), 1 === this.howMany() && this._unwrap ? this._resolve(this._values[0]) : this._resolve(this._values), !0);
              }, o.prototype._promiseRejected = function (e) {
                return this._addRejected(e), this._checkOutcome();
              }, o.prototype._promiseCancelled = function () {
                return this._values instanceof n || null == this._values ? this._cancel() : (this._addRejected(l), this._checkOutcome());
              }, o.prototype._checkOutcome = function () {
                if (this.howMany() > this._canPossiblyFulfill()) {
                  for (var e = new u(), n = this.length(); n < this._values.length; ++n) {
                    this._values[n] !== l && e.push(this._values[n]);
                  }return e.length > 0 ? this._reject(e) : this._cancel(), !0;
                }return !1;
              }, o.prototype._fulfilled = function () {
                return this._totalResolved;
              }, o.prototype._rejected = function () {
                return this._values.length - this.length();
              }, o.prototype._addRejected = function (e) {
                this._values.push(e);
              }, o.prototype._addFulfilled = function (e) {
                this._values[this._totalResolved++] = e;
              }, o.prototype._canPossiblyFulfill = function () {
                return this.length() - this._rejected();
              }, o.prototype._getRangeError = function (e) {
                var n = "Input array must contain at least " + this._howMany + " items but contains only " + e + " items";return new s(n);
              }, o.prototype._resolveEmptyArray = function () {
                this._reject(this._getRangeError(0));
              }, n.some = function (e, n) {
                return i(e, n);
              }, n.prototype.some = function (e) {
                return i(this, e);
              }, n._SomePromiseArray = o;
            };
          }, { "./errors": 12, "./util": 36 }], 32: [function (e, n, t) {
            "use strict";
            n.exports = function (e) {
              function n(e) {
                void 0 !== e ? (e = e._target(), this._bitField = e._bitField, this._settledValueField = e._isFateSealed() ? e._settledValue() : void 0) : (this._bitField = 0, this._settledValueField = void 0);
              }n.prototype._settledValue = function () {
                return this._settledValueField;
              };var t = n.prototype.value = function () {
                if (!this.isFulfilled()) throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n    See http://goo.gl/MqrFmX\n");return this._settledValue();
              },
                  r = n.prototype.error = n.prototype.reason = function () {
                if (!this.isRejected()) throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n    See http://goo.gl/MqrFmX\n");return this._settledValue();
              },
                  o = n.prototype.isFulfilled = function () {
                return 0 != (33554432 & this._bitField);
              },
                  i = n.prototype.isRejected = function () {
                return 0 != (16777216 & this._bitField);
              },
                  a = n.prototype.isPending = function () {
                return 0 == (50397184 & this._bitField);
              },
                  s = n.prototype.isResolved = function () {
                return 0 != (50331648 & this._bitField);
              };n.prototype.isCancelled = function () {
                return 0 != (8454144 & this._bitField);
              }, e.prototype.__isCancelled = function () {
                return 65536 == (65536 & this._bitField);
              }, e.prototype._isCancelled = function () {
                return this._target().__isCancelled();
              }, e.prototype.isCancelled = function () {
                return 0 != (8454144 & this._target()._bitField);
              }, e.prototype.isPending = function () {
                return a.call(this._target());
              }, e.prototype.isRejected = function () {
                return i.call(this._target());
              }, e.prototype.isFulfilled = function () {
                return o.call(this._target());
              }, e.prototype.isResolved = function () {
                return s.call(this._target());
              }, e.prototype.value = function () {
                return t.call(this._target());
              }, e.prototype.reason = function () {
                var e = this._target();return e._unsetRejectionIsUnhandled(), r.call(e);
              }, e.prototype._value = function () {
                return this._settledValue();
              }, e.prototype._reason = function () {
                return this._unsetRejectionIsUnhandled(), this._settledValue();
              }, e.PromiseInspection = n;
            };
          }, {}], 33: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t) {
              function r(e, r) {
                if (l(e)) {
                  if (e instanceof n) return e;var o = i(e);if (o === c) {
                    r && r._pushContext();var u = n.reject(o.e);return r && r._popContext(), u;
                  }if ("function" == typeof o) {
                    if (a(e)) {
                      var u = new n(t);return e._then(u._fulfill, u._reject, void 0, u, null), u;
                    }return s(e, o, r);
                  }
                }return e;
              }function o(e) {
                return e.then;
              }function i(e) {
                try {
                  return o(e);
                } catch (e) {
                  return c.e = e, c;
                }
              }function a(e) {
                try {
                  return p.call(e, "_promise0");
                } catch (e) {
                  return !1;
                }
              }function s(e, r, o) {
                function i(e) {
                  s && (s._resolveCallback(e), s = null);
                }function a(e) {
                  s && (s._rejectCallback(e, p, !0), s = null);
                }var s = new n(t),
                    l = s;o && o._pushContext(), s._captureStackTrace(), o && o._popContext();var p = !0,
                    f = u.tryCatch(r).call(e, i, a);return p = !1, s && f === c && (s._rejectCallback(f.e, !0, !0), s = null), l;
              }var u = e("./util"),
                  c = u.errorObj,
                  l = u.isObject,
                  p = {}.hasOwnProperty;return r;
            };
          }, { "./util": 36 }], 34: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r) {
              function o(e) {
                this.handle = e;
              }function i(e) {
                return clearTimeout(this.handle), e;
              }function a(e) {
                throw clearTimeout(this.handle), e;
              }var s = e("./util"),
                  u = n.TimeoutError;o.prototype._resultCancelled = function () {
                clearTimeout(this.handle);
              };var c = function c(e) {
                return l(+this).thenReturn(e);
              },
                  l = n.delay = function (e, i) {
                var a, s;return void 0 !== i ? (a = n.resolve(i)._then(c, null, null, e, void 0), r.cancellation() && i instanceof n && a._setOnCancel(i)) : (a = new n(t), s = setTimeout(function () {
                  a._fulfill();
                }, +e), r.cancellation() && a._setOnCancel(new o(s)), a._captureStackTrace()), a._setAsyncGuaranteed(), a;
              };n.prototype.delay = function (e) {
                return l(e, this);
              };var p = function p(e, n, t) {
                var r;r = "string" != typeof n ? n instanceof Error ? n : new u("operation timed out") : new u(n), s.markAsOriginatingFromRejection(r), e._attachExtraTrace(r), e._reject(r), null != t && t.cancel();
              };n.prototype.timeout = function (e, n) {
                e = +e;var t,
                    s,
                    u = new o(setTimeout(function () {
                  t.isPending() && p(t, n, s);
                }, e));return r.cancellation() ? (s = this.then(), t = s._then(i, a, void 0, u, void 0), t._setOnCancel(u)) : t = this._then(i, a, void 0, u, void 0), t;
              };
            };
          }, { "./util": 36 }], 35: [function (e, n, t) {
            "use strict";
            n.exports = function (n, t, r, o, i, a) {
              function s(e) {
                setTimeout(function () {
                  throw e;
                }, 0);
              }function u(e) {
                var n = r(e);return n !== e && "function" == typeof e._isDisposable && "function" == typeof e._getDisposer && e._isDisposable() && n._setDisposable(e._getDisposer()), n;
              }function c(e, t) {
                function o() {
                  if (a >= c) return l._fulfill();var i = u(e[a++]);if (i instanceof n && i._isDisposable()) {
                    try {
                      i = r(i._getDisposer().tryDispose(t), e.promise);
                    } catch (e) {
                      return s(e);
                    }if (i instanceof n) return i._then(o, s, null, null, null);
                  }o();
                }var a = 0,
                    c = e.length,
                    l = new n(i);return o(), l;
              }function l(e, n, t) {
                this._data = e, this._promise = n, this._context = t;
              }function p(e, n, t) {
                this.constructor$(e, n, t);
              }function f(e) {
                return l.isDisposer(e) ? (this.resources[this.index]._setDisposable(e), e.promise()) : e;
              }function h(e) {
                this.length = e, this.promise = null, this[e - 1] = null;
              }var d = e("./util"),
                  m = e("./errors").TypeError,
                  _ = e("./util").inherits,
                  v = d.errorObj,
                  y = d.tryCatch,
                  b = {};l.prototype.data = function () {
                return this._data;
              }, l.prototype.promise = function () {
                return this._promise;
              }, l.prototype.resource = function () {
                return this.promise().isFulfilled() ? this.promise().value() : b;
              }, l.prototype.tryDispose = function (e) {
                var n = this.resource(),
                    t = this._context;void 0 !== t && t._pushContext();var r = n !== b ? this.doDispose(n, e) : null;return void 0 !== t && t._popContext(), this._promise._unsetDisposable(), this._data = null, r;
              }, l.isDisposer = function (e) {
                return null != e && "function" == typeof e.resource && "function" == typeof e.tryDispose;
              }, _(p, l), p.prototype.doDispose = function (e, n) {
                return this.data().call(e, e, n);
              }, h.prototype._resultCancelled = function () {
                for (var e = this.length, t = 0; t < e; ++t) {
                  var r = this[t];r instanceof n && r.cancel();
                }
              }, n.using = function () {
                var e = arguments.length;if (e < 2) return t("you must pass at least 2 arguments to Promise.using");var o = arguments[e - 1];if ("function" != typeof o) return t("expecting a function but got " + d.classString(o));var i,
                    s = !0;2 === e && Array.isArray(arguments[0]) ? (i = arguments[0], e = i.length, s = !1) : (i = arguments, e--);for (var u = new h(e), p = 0; p < e; ++p) {
                  var m = i[p];if (l.isDisposer(m)) {
                    var _ = m;m = m.promise(), m._setDisposable(_);
                  } else {
                    var b = r(m);b instanceof n && (m = b._then(f, null, null, { resources: u, index: p }, void 0));
                  }u[p] = m;
                }for (var g = new Array(u.length), p = 0; p < g.length; ++p) {
                  g[p] = n.resolve(u[p]).reflect();
                }var k = n.all(g).then(function (e) {
                  for (var n = 0; n < e.length; ++n) {
                    var t = e[n];if (t.isRejected()) return v.e = t.error(), v;if (!t.isFulfilled()) return void k.cancel();e[n] = t.value();
                  }x._pushContext(), o = y(o);var r = s ? o.apply(void 0, e) : o(e),
                      i = x._popContext();return a.checkForgottenReturns(r, i, "Promise.using", x), r;
                }),
                    x = k.lastly(function () {
                  var e = new n.PromiseInspection(k);return c(u, e);
                });return u.promise = x, x._setOnCancel(u), x;
              }, n.prototype._setDisposable = function (e) {
                this._bitField = 131072 | this._bitField, this._disposer = e;
              }, n.prototype._isDisposable = function () {
                return (131072 & this._bitField) > 0;
              }, n.prototype._getDisposer = function () {
                return this._disposer;
              }, n.prototype._unsetDisposable = function () {
                this._bitField = -131073 & this._bitField, this._disposer = void 0;
              }, n.prototype.disposer = function (e) {
                if ("function" == typeof e) return new p(e, this, o());throw new m();
              };
            };
          }, { "./errors": 12, "./util": 36 }], 36: [function (e, r, o) {
            "use strict";
            function i() {
              try {
                var e = F;return F = null, e.apply(this, arguments);
              } catch (e) {
                return S.e = e, S;
              }
            }function a(e) {
              return F = e, i;
            }function s(e) {
              return null == e || !0 === e || !1 === e || "string" == typeof e || "number" == typeof e;
            }function u(e) {
              return "function" == typeof e || "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && null !== e;
            }function c(e) {
              return s(e) ? new Error(y(e)) : e;
            }function l(e, n) {
              var t,
                  r = e.length,
                  o = new Array(r + 1);for (t = 0; t < r; ++t) {
                o[t] = e[t];
              }return o[t] = n, o;
            }function p(e, n, t) {
              if (!E.isES5) return {}.hasOwnProperty.call(e, n) ? e[n] : void 0;var r = Object.getOwnPropertyDescriptor(e, n);return null != r ? null == r.get && null == r.set ? r.value : t : void 0;
            }function f(e, n, t) {
              if (s(e)) return e;var r = { value: t, configurable: !0, enumerable: !1, writable: !0 };return E.defineProperty(e, n, r), e;
            }function h(e) {
              throw e;
            }function d(e) {
              try {
                if ("function" == typeof e) {
                  var n = E.names(e.prototype),
                      t = E.isES5 && n.length > 1,
                      r = n.length > 0 && !(1 === n.length && "constructor" === n[0]),
                      o = q.test(e + "") && E.names(e).length > 0;if (t || r || o) return !0;
                }return !1;
              } catch (e) {
                return !1;
              }
            }function m(e) {
              function n() {}n.prototype = e;for (var t = 8; t--;) {
                new n();
              }return e;
            }function _(e) {
              return N.test(e);
            }function v(e, n, t) {
              for (var r = new Array(e), o = 0; o < e; ++o) {
                r[o] = n + o + t;
              }return r;
            }function y(e) {
              try {
                return e + "";
              } catch (e) {
                return "[no string representation]";
              }
            }function b(e) {
              return e instanceof Error || null !== e && "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && "string" == typeof e.message && "string" == typeof e.name;
            }function g(e) {
              try {
                f(e, "isOperational", !0);
              } catch (e) {}
            }function k(e) {
              return null != e && (e instanceof Error.__BluebirdErrorTypes__.OperationalError || !0 === e.isOperational);
            }function x(e) {
              return b(e) && E.propertyIsWritable(e, "stack");
            }function j(e) {
              return {}.toString.call(e);
            }function w(e, n, t) {
              for (var r = E.names(e), o = 0; o < r.length; ++o) {
                var i = r[o];if (t(i)) try {
                  E.defineProperty(n, i, E.getDescriptor(e, i));
                } catch (e) {}
              }
            }function T(e) {
              return U ? n.env[e] : void 0;
            }function P() {
              if ("function" == typeof Promise) try {
                var e = new Promise(function () {});if ("[object Promise]" === {}.toString.call(e)) return Promise;
              } catch (e) {}
            }function C(e, n) {
              return e.bind(n);
            }var E = e("./es5"),
                A = "undefined" == typeof navigator,
                S = { e: {} },
                F,
                O = "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== t ? t : void 0 !== this ? this : null,
                R = function R(e, n) {
              function t() {
                this.constructor = e, this.constructor$ = n;for (var t in n.prototype) {
                  r.call(n.prototype, t) && "$" !== t.charAt(t.length - 1) && (this[t + "$"] = n.prototype[t]);
                }
              }var r = {}.hasOwnProperty;return t.prototype = n.prototype, e.prototype = new t(), e.prototype;
            },
                I = function () {
              var e = [Array.prototype, Object.prototype, Function.prototype],
                  n = function n(_n2) {
                for (var t = 0; t < e.length; ++t) {
                  if (e[t] === _n2) return !0;
                }return !1;
              };if (E.isES5) {
                var t = Object.getOwnPropertyNames;return function (e) {
                  for (var r = [], o = Object.create(null); null != e && !n(e);) {
                    var i;try {
                      i = t(e);
                    } catch (e) {
                      return r;
                    }for (var a = 0; a < i.length; ++a) {
                      var s = i[a];if (!o[s]) {
                        o[s] = !0;var u = Object.getOwnPropertyDescriptor(e, s);null != u && null == u.get && null == u.set && r.push(s);
                      }
                    }e = E.getPrototypeOf(e);
                  }return r;
                };
              }var r = {}.hasOwnProperty;return function (t) {
                if (n(t)) return [];var o = [];e: for (var i in t) {
                  if (r.call(t, i)) o.push(i);else {
                    for (var a = 0; a < e.length; ++a) {
                      if (r.call(e[a], i)) continue e;
                    }o.push(i);
                  }
                }return o;
              };
            }(),
                q = /this\s*\.\s*\S+\s*=/,
                N = /^[a-z$_][a-z$_0-9]*$/i,
                L = function () {
              return "stack" in new Error() ? function (e) {
                return x(e) ? e : new Error(y(e));
              } : function (e) {
                if (x(e)) return e;try {
                  throw new Error(y(e));
                } catch (e) {
                  return e;
                }
              };
            }(),
                M = function M(e) {
              return E.isArray(e) ? e : null;
            };if ("undefined" != typeof Symbol && Symbol.iterator) {
              var D = "function" == typeof Array.from ? function (e) {
                return Array.from(e);
              } : function (e) {
                for (var n, t = [], r = e[Symbol.iterator](); !(n = r.next()).done;) {
                  t.push(n.value);
                }return t;
              };M = function M(e) {
                return E.isArray(e) ? e : null != e && "function" == typeof e[Symbol.iterator] ? D(e) : null;
              };
            }var V = void 0 !== n && "[object process]" === j(n).toLowerCase(),
                U = void 0 !== n && void 0 !== n.env,
                H = { isClass: d, isIdentifier: _, inheritedDataKeys: I, getDataPropertyOrDefault: p, thrower: h, isArray: E.isArray, asArray: M, notEnumerableProp: f, isPrimitive: s, isObject: u, isError: b, canEvaluate: A, errorObj: S, tryCatch: a, inherits: R, withAppended: l, maybeWrapAsError: c, toFastProperties: m, filledRange: v, toString: y, canAttachTrace: x, ensureErrorObject: L, originatesFromRejection: k, markAsOriginatingFromRejection: g, classString: j, copyDescriptors: w, hasDevTools: "undefined" != typeof chrome && chrome && "function" == typeof chrome.loadTimes, isNode: V, hasEnvVariables: U, env: T, global: O, getNativePromise: P, domainBind: C };H.isRecentNode = H.isNode && function () {
              var e = n.versions.node.split(".").map(Number);return 0 === e[0] && e[1] > 10 || e[0] > 0;
            }(), H.isNode && H.toFastProperties(n);try {
              throw new Error();
            } catch (e) {
              H.lastLineError = e;
            }r.exports = H;
          }, { "./es5": 13 }] }, {}, [4])(4);
      }), "undefined" != typeof window && null !== window ? window.P = window.Promise : "undefined" != typeof self && null !== self && (self.P = self.Promise);
    }).call(n, t(40), t(14), t(74).setImmediate);
  }, function (e, n) {
    var t;t = function () {
      return this;
    }();try {
      t = t || Function("return this")() || (0, eval)("this");
    } catch (e) {
      "object" == (typeof window === "undefined" ? "undefined" : _typeof(window)) && (t = window);
    }e.exports = t;
  }, function (e, n) {
    e.exports = function (e) {
      return e.webpackPolyfill || (e.deprecate = function () {}, e.paths = [], e.children || (e.children = []), Object.defineProperty(e, "loaded", { enumerable: !0, get: function get() {
          return e.l;
        } }), Object.defineProperty(e, "id", { enumerable: !0, get: function get() {
          return e.i;
        } }), e.webpackPolyfill = 1), e;
    };
  }, function (e, n, t) {
    function r(e) {
      var n = -1,
          t = null == e ? 0 : e.length;for (this.clear(); ++n < t;) {
        var r = e[n];this.set(r[0], r[1]);
      }
    }var o = t(95),
        i = t(96),
        a = t(97),
        s = t(98),
        u = t(99);r.prototype.clear = o, r.prototype.delete = i, r.prototype.get = a, r.prototype.has = s, r.prototype.set = u, e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      for (var t = e.length; t--;) {
        if (o(e[t][0], n)) return t;
      }return -1;
    }var o = t(9);e.exports = r;
  }, function (e, n, t) {
    var r = t(3),
        o = r(Object, "create");e.exports = o;
  }, function (e, n, t) {
    function r(e, n) {
      var t = e.__data__;return o(n) ? t["string" == typeof n ? "string" : "hash"] : t.map;
    }var o = t(117);e.exports = r;
  }, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = t(10),
        o = t(76),
        i = function () {
      function e(e, n) {
        this._rgb = e, this._population = n;
      }return e.applyFilter = function (e, n) {
        return "function" == typeof n ? o(e, function (e) {
          var t = e.r,
              r = e.g,
              o = e.b;return n(t, r, o, 255);
        }) : e;
      }, Object.defineProperty(e.prototype, "r", { get: function get() {
          return this._rgb[0];
        }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "g", { get: function get() {
          return this._rgb[1];
        }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "b", { get: function get() {
          return this._rgb[2];
        }, enumerable: !0, configurable: !0 }), e.prototype.getRgb = function () {
        return this._rgb;
      }, e.prototype.getHsl = function () {
        if (!this._hsl) {
          var e = this._rgb,
              n = e[0],
              t = e[1],
              o = e[2];this._hsl = r.rgbToHsl(n, t, o);
        }return this._hsl;
      }, e.prototype.getPopulation = function () {
        return this._population;
      }, e.prototype.getHex = function () {
        if (!this._hex) {
          var e = this._rgb,
              n = e[0],
              t = e[1],
              o = e[2];this._hex = r.rgbToHex(n, t, o);
        }return this._hex;
      }, e.prototype.getYiq = function () {
        if (!this._yiq) {
          var e = this._rgb;this._yiq = (299 * e[0] + 587 * e[1] + 114 * e[2]) / 1e3;
        }return this._yiq;
      }, e.prototype.getTitleTextColor = function () {
        return this.getYiq() < 200 ? "#fff" : "#000";
      }, e.prototype.getBodyTextColor = function () {
        return this.getYiq() < 150 ? "#fff" : "#000";
      }, e;
    }();n.Swatch = i;
  }, function (e, n, t) {
    function r(e) {
      return "symbol" == (typeof e === "undefined" ? "undefined" : _typeof(e)) || i(e) && o(e) == a;
    }var o = t(5),
        i = t(7),
        a = "[object Symbol]";e.exports = r;
  }, function (e, n, t) {
    (function (e) {
      var r = t(1),
          o = t(86),
          i = "object" == (typeof n === "undefined" ? "undefined" : _typeof(n)) && n && !n.nodeType && n,
          a = i && "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && e && !e.nodeType && e,
          s = a && a.exports === i,
          u = s ? r.Buffer : void 0,
          c = u ? u.isBuffer : void 0,
          l = c || o;e.exports = l;
    }).call(n, t(15)(e));
  }, function (e, n) {
    function t(e, n) {
      return !!(n = null == n ? r : n) && ("number" == typeof e || o.test(e)) && e > -1 && e % 1 == 0 && e < n;
    }var r = 9007199254740991,
        o = /^(?:0|[1-9]\d*)$/;e.exports = t;
  }, function (e, n) {
    function t(e) {
      return "number" == typeof e && e > -1 && e % 1 == 0 && e <= r;
    }var r = 9007199254740991;e.exports = t;
  }, function (e, n) {
    function t(e) {
      var n = e && e.constructor;return e === ("function" == typeof n && n.prototype || r);
    }var r = Object.prototype;e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      var n = this.__data__ = new o(e);this.size = n.size;
    }var o = t(16),
        i = t(100),
        a = t(101),
        s = t(102),
        u = t(103),
        c = t(104);r.prototype.clear = i, r.prototype.delete = a, r.prototype.get = s, r.prototype.has = u, r.prototype.set = c, e.exports = r;
  }, function (e, n, t) {
    var r = t(3),
        o = t(1),
        i = r(o, "Map");e.exports = i;
  }, function (e, n, t) {
    function r(e) {
      var n = -1,
          t = null == e ? 0 : e.length;for (this.clear(); ++n < t;) {
        var r = e[n];this.set(r[0], r[1]);
      }
    }var o = t(109),
        i = t(116),
        a = t(118),
        s = t(119),
        u = t(120);r.prototype.clear = o, r.prototype.delete = i, r.prototype.get = a, r.prototype.has = s, r.prototype.set = u, e.exports = r;
  }, function (e, n, t) {
    var r = t(41),
        o = t(56),
        i = Object.prototype,
        a = i.propertyIsEnumerable,
        s = Object.getOwnPropertySymbols,
        u = s ? function (e) {
      return null == e ? [] : (e = Object(e), r(s(e), function (n) {
        return a.call(e, n);
      }));
    } : o;e.exports = u;
  }, function (e, n, t) {
    function r(e, n) {
      return o(e) ? e : i(e, n) ? [e] : a(s(e));
    }var o = t(0),
        i = t(31),
        a = t(136),
        s = t(139);e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      if (o(e)) return !1;var t = typeof e === "undefined" ? "undefined" : _typeof(e);return !("number" != t && "symbol" != t && "boolean" != t && null != e && !i(e)) || s.test(e) || !a.test(e) || null != n && e in Object(n);
    }var o = t(0),
        i = t(21),
        a = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
        s = /^\w*$/;e.exports = r;
  }, function (e, n) {
    function t(e) {
      return e;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      return a(e) ? o(e, !0) : i(e);
    }var o = t(42),
        i = t(153),
        a = t(11);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      var n = new e.constructor(e.byteLength);return new o(n).set(new o(e)), n;
    }var o = t(51);e.exports = r;
  }, function (e, n, t) {
    var r = t(83),
        o = t(7),
        i = Object.prototype,
        a = i.hasOwnProperty,
        s = i.propertyIsEnumerable,
        u = r(function () {
      return arguments;
    }()) ? r : function (e) {
      return o(e) && a.call(e, "callee") && !s.call(e, "callee");
    };e.exports = u;
  }, function (e, n) {
    function t(e, n) {
      for (var t = -1, r = n.length, o = e.length; ++t < r;) {
        e[o + t] = n[t];
      }return e;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n) {
      n = o(n, e);for (var t = 0, r = n.length; null != e && t < r;) {
        e = e[i(n[t++])];
      }return t && t == r ? e : void 0;
    }var o = t(30),
        i = t(12);e.exports = r;
  }, function (e, n, t) {
    var r = t(45),
        o = r(Object.getPrototypeOf, Object);e.exports = o;
  }, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = t(20),
        o = t(13),
        i = t(60),
        a = t(156),
        s = t(10),
        u = t(177),
        c = t(181),
        l = t(183),
        p = function () {
      function e(n, t) {
        this._src = n, this.opts = i({}, t, e.DefaultOpts), this.opts.combinedFilter = l.combineFilters(this.opts.filters);
      }return e.from = function (e) {
        return new a.default(e);
      }, e.prototype._process = function (e, n) {
        var t = n.quantizer,
            i = n.generator;return e.scaleDown(n), e.applyFilter(n.combinedFilter).then(function (e) {
          return t(e.data, n);
        }).then(function (e) {
          return r.Swatch.applyFilter(e, n.combinedFilter);
        }).then(function (e) {
          return o.resolve(i(e));
        });
      }, e.prototype.palette = function () {
        return this.swatches();
      }, e.prototype.swatches = function () {
        return this._palette;
      }, e.prototype.getPalette = function (e) {
        var n = this,
            t = new this.opts.ImageClass();return t.load(this._src).then(function (e) {
          return n._process(e, n.opts);
        }).tap(function (e) {
          return n._palette = e;
        }).finally(function () {
          return t.remove();
        }).asCallback(e);
      }, e.Builder = a.default, e.Quantizer = u, e.Generator = c, e.Filter = l, e.Util = s, e.DefaultOpts = { colorCount: 64, quality: 5, generator: c.Default, ImageClass: null, quantizer: u.MMCQ, filters: [l.Default] }, e;
    }();n.default = p;
  }, function (e, n) {
    function t() {
      throw new Error("setTimeout has not been defined");
    }function r() {
      throw new Error("clearTimeout has not been defined");
    }function o(e) {
      if (l === setTimeout) return setTimeout(e, 0);if ((l === t || !l) && setTimeout) return l = setTimeout, setTimeout(e, 0);try {
        return l(e, 0);
      } catch (n) {
        try {
          return l.call(null, e, 0);
        } catch (n) {
          return l.call(this, e, 0);
        }
      }
    }function i(e) {
      if (p === clearTimeout) return clearTimeout(e);if ((p === r || !p) && clearTimeout) return p = clearTimeout, clearTimeout(e);try {
        return p(e);
      } catch (n) {
        try {
          return p.call(null, e);
        } catch (n) {
          return p.call(this, e);
        }
      }
    }function a() {
      m && h && (m = !1, h.length ? d = h.concat(d) : _ = -1, d.length && s());
    }function s() {
      if (!m) {
        var e = o(a);m = !0;for (var n = d.length; n;) {
          for (h = d, d = []; ++_ < n;) {
            h && h[_].run();
          }_ = -1, n = d.length;
        }h = null, m = !1, i(e);
      }
    }function u(e, n) {
      this.fun = e, this.array = n;
    }function c() {}var l,
        p,
        f = e.exports = {};!function () {
      try {
        l = "function" == typeof setTimeout ? setTimeout : t;
      } catch (e) {
        l = t;
      }try {
        p = "function" == typeof clearTimeout ? clearTimeout : r;
      } catch (e) {
        p = r;
      }
    }();var h,
        d = [],
        m = !1,
        _ = -1;f.nextTick = function (e) {
      var n = new Array(arguments.length - 1);if (arguments.length > 1) for (var t = 1; t < arguments.length; t++) {
        n[t - 1] = arguments[t];
      }d.push(new u(e, n)), 1 !== d.length || m || o(s);
    }, u.prototype.run = function () {
      this.fun.apply(null, this.array);
    }, f.title = "browser", f.browser = !0, f.env = {}, f.argv = [], f.version = "", f.versions = {}, f.on = c, f.addListener = c, f.once = c, f.off = c, f.removeListener = c, f.removeAllListeners = c, f.emit = c, f.prependListener = c, f.prependOnceListener = c, f.listeners = function (e) {
      return [];
    }, f.binding = function (e) {
      throw new Error("process.binding is not supported");
    }, f.cwd = function () {
      return "/";
    }, f.chdir = function (e) {
      throw new Error("process.chdir is not supported");
    }, f.umask = function () {
      return 0;
    };
  }, function (e, n) {
    function t(e, n) {
      for (var t = -1, r = null == e ? 0 : e.length, o = 0, i = []; ++t < r;) {
        var a = e[t];n(a, t, e) && (i[o++] = a);
      }return i;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n) {
      var t = a(e),
          r = !t && i(e),
          l = !t && !r && s(e),
          f = !t && !r && !l && c(e),
          h = t || r || l || f,
          d = h ? o(e.length, String) : [],
          m = d.length;for (var _ in e) {
        !n && !p.call(e, _) || h && ("length" == _ || l && ("offset" == _ || "parent" == _) || f && ("buffer" == _ || "byteLength" == _ || "byteOffset" == _) || u(_, m)) || d.push(_);
      }return d;
    }var o = t(82),
        i = t(35),
        a = t(0),
        s = t(22),
        u = t(23),
        c = t(44),
        l = Object.prototype,
        p = l.hasOwnProperty;e.exports = r;
  }, function (e, n, t) {
    (function (n) {
      var t = "object" == (typeof n === "undefined" ? "undefined" : _typeof(n)) && n && n.Object === Object && n;e.exports = t;
    }).call(n, t(14));
  }, function (e, n, t) {
    var r = t(87),
        o = t(88),
        i = t(89),
        a = i && i.isTypedArray,
        s = a ? o(a) : r;e.exports = s;
  }, function (e, n) {
    function t(e, n) {
      return function (t) {
        return e(n(t));
      };
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      if (!i(e)) return !1;var n = o(e);return n == s || n == u || n == a || n == c;
    }var o = t(5),
        i = t(2),
        a = "[object AsyncFunction]",
        s = "[object Function]",
        u = "[object GeneratorFunction]",
        c = "[object Proxy]";e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return "function" == typeof e ? e : null == e ? a : "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) ? s(e) ? i(e[0], e[1]) : o(e) : u(e);
    }var o = t(93),
        i = t(134),
        a = t(32),
        s = t(0),
        u = t(144);e.exports = r;
  }, function (e, n) {
    function t(e) {
      if (null != e) {
        try {
          return o.call(e);
        } catch (e) {}try {
          return e + "";
        } catch (e) {}
      }return "";
    }var r = Function.prototype,
        o = r.toString;e.exports = t;
  }, function (e, n, t) {
    function r(e, n, t, a, s) {
      return e === n || (null == e || null == n || !i(e) && !i(n) ? e !== e && n !== n : o(e, n, t, a, r, s));
    }var o = t(121),
        i = t(7);e.exports = r;
  }, function (e, n, t) {
    function r(e, n, t, r, c, l) {
      var p = t & s,
          f = e.length,
          h = n.length;if (f != h && !(p && h > f)) return !1;var d = l.get(e);if (d && l.get(n)) return d == n;var m = -1,
          _ = !0,
          v = t & u ? new o() : void 0;for (l.set(e, n), l.set(n, e); ++m < f;) {
        var y = e[m],
            b = n[m];if (r) var g = p ? r(b, y, m, n, e, l) : r(y, b, m, e, n, l);if (void 0 !== g) {
          if (g) continue;_ = !1;break;
        }if (v) {
          if (!i(n, function (e, n) {
            if (!a(v, n) && (y === e || c(y, e, t, r, l))) return v.push(n);
          })) {
            _ = !1;break;
          }
        } else if (y !== b && !c(y, b, t, r, l)) {
          _ = !1;break;
        }
      }return l.delete(e), l.delete(n), _;
    }var o = t(122),
        i = t(125),
        a = t(126),
        s = 1,
        u = 2;e.exports = r;
  }, function (e, n, t) {
    var r = t(1),
        o = r.Uint8Array;e.exports = o;
  }, function (e, n) {
    function t(e) {
      var n = -1,
          t = Array(e.size);return e.forEach(function (e, r) {
        t[++n] = [r, e];
      }), t;
    }e.exports = t;
  }, function (e, n) {
    function t(e) {
      var n = -1,
          t = Array(e.size);return e.forEach(function (e) {
        t[++n] = e;
      }), t;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      return o(e, a, i);
    }var o = t(55),
        i = t(29),
        a = t(4);e.exports = r;
  }, function (e, n, t) {
    function r(e, n, t) {
      var r = n(e);return i(e) ? r : o(r, t(e));
    }var o = t(36),
        i = t(0);e.exports = r;
  }, function (e, n) {
    function t() {
      return [];
    }e.exports = t;
  }, function (e, n, t) {
    var r = t(129),
        o = t(27),
        i = t(130),
        a = t(131),
        s = t(132),
        u = t(5),
        c = t(48),
        l = c(r),
        p = c(o),
        f = c(i),
        h = c(a),
        d = c(s),
        m = u;(r && "[object DataView]" != m(new r(new ArrayBuffer(1))) || o && "[object Map]" != m(new o()) || i && "[object Promise]" != m(i.resolve()) || a && "[object Set]" != m(new a()) || s && "[object WeakMap]" != m(new s())) && (m = function m(e) {
      var n = u(e),
          t = "[object Object]" == n ? e.constructor : void 0,
          r = t ? c(t) : "";if (r) switch (r) {case l:
          return "[object DataView]";case p:
          return "[object Map]";case f:
          return "[object Promise]";case h:
          return "[object Set]";case d:
          return "[object WeakMap]";}return n;
    }), e.exports = m;
  }, function (e, n, t) {
    function r(e) {
      return e === e && !o(e);
    }var o = t(2);e.exports = r;
  }, function (e, n) {
    function t(e, n) {
      return function (t) {
        return null != t && t[e] === n && (void 0 !== n || e in Object(t));
      };
    }e.exports = t;
  }, function (e, n, t) {
    var r = t(61),
        o = t(147),
        i = t(65),
        a = t(155),
        s = i(function (e) {
      return e.push(void 0, a), r(o, void 0, e);
    });e.exports = s;
  }, function (e, n) {
    function t(e, n, t) {
      switch (t.length) {case 0:
          return e.call(n);case 1:
          return e.call(n, t[0]);case 2:
          return e.call(n, t[0], t[1]);case 3:
          return e.call(n, t[0], t[1], t[2]);}return e.apply(n, t);
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n, t) {
      var r = e[n];s.call(e, n) && i(r, t) && (void 0 !== t || n in e) || o(e, n, t);
    }var o = t(63),
        i = t(9),
        a = Object.prototype,
        s = a.hasOwnProperty;e.exports = r;
  }, function (e, n, t) {
    function r(e, n, t) {
      "__proto__" == n && o ? o(e, n, { configurable: !0, enumerable: !0, value: t, writable: !0 }) : e[n] = t;
    }var o = t(64);e.exports = r;
  }, function (e, n, t) {
    var r = t(3),
        o = function () {
      try {
        var e = r(Object, "defineProperty");return e({}, "", {}), e;
      } catch (e) {}
    }();e.exports = o;
  }, function (e, n, t) {
    function r(e, n) {
      return a(i(e, n, o), e + "");
    }var o = t(32),
        i = t(69),
        a = t(70);e.exports = r;
  }, function (e, n, t) {
    var r = t(36),
        o = t(38),
        i = t(29),
        a = t(56),
        s = Object.getOwnPropertySymbols,
        u = s ? function (e) {
      for (var n = []; e;) {
        r(n, i(e)), e = o(e);
      }return n;
    } : a;e.exports = u;
  }, function (e, n) {
    function t(e, n, t, r) {
      var o = -1,
          i = null == e ? 0 : e.length;for (r && i && (t = e[++o]); ++o < i;) {
        t = n(t, e[o], o, e);
      }return t;
    }e.exports = t;
  }, function (e, n) {
    function t(e, n) {
      for (var t = -1, r = null == e ? 0 : e.length, o = Array(r); ++t < r;) {
        o[t] = n(e[t], t, e);
      }return o;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n, t) {
      return n = i(void 0 === n ? e.length - 1 : n, 0), function () {
        for (var r = arguments, a = -1, s = i(r.length - n, 0), u = Array(s); ++a < s;) {
          u[a] = r[n + a];
        }a = -1;for (var c = Array(n + 1); ++a < n;) {
          c[a] = r[a];
        }return c[n] = t(u), o(e, this, c);
      };
    }var o = t(61),
        i = Math.max;e.exports = r;
  }, function (e, n, t) {
    var r = t(149),
        o = t(151),
        i = o(r);e.exports = i;
  }, function (e, n, t) {
    function r(e, n, t, F, O, R) {
      var I,
          q = n & j,
          N = n & w,
          L = n & T;if (t && (I = O ? t(e, F, O, R) : t(e)), void 0 !== I) return I;if (!k(e)) return e;var M = b(e);if (M) {
        if (I = _(e), !q) return l(e, I);
      } else {
        var D = m(e),
            V = D == C || D == E;if (g(e)) return c(e, q);if (D == A || D == P || V && !O) {
          if (I = N || V ? {} : y(e), !q) return N ? f(e, u(I, e)) : p(e, s(I, e));
        } else {
          if (!S[D]) return O ? e : {};I = v(e, D, r, q);
        }
      }R || (R = new o());var U = R.get(e);if (U) return U;R.set(e, I);var H = L ? N ? d : h : N ? keysIn : x,
          B = M ? void 0 : H(e);return i(B || e, function (o, i) {
        B && (i = o, o = e[i]), a(I, i, r(o, n, t, i, e, R));
      }), I;
    }var o = t(26),
        i = t(158),
        a = t(62),
        s = t(159),
        u = t(160),
        c = t(161),
        l = t(162),
        p = t(163),
        f = t(164),
        h = t(54),
        d = t(72),
        m = t(57),
        _ = t(165),
        v = t(166),
        y = t(175),
        b = t(0),
        g = t(22),
        k = t(2),
        x = t(4),
        j = 1,
        w = 2,
        T = 4,
        P = "[object Arguments]",
        C = "[object Function]",
        E = "[object GeneratorFunction]",
        A = "[object Object]",
        S = {};S[P] = S["[object Array]"] = S["[object ArrayBuffer]"] = S["[object DataView]"] = S["[object Boolean]"] = S["[object Date]"] = S["[object Float32Array]"] = S["[object Float64Array]"] = S["[object Int8Array]"] = S["[object Int16Array]"] = S["[object Int32Array]"] = S["[object Map]"] = S["[object Number]"] = S[A] = S["[object RegExp]"] = S["[object Set]"] = S["[object String]"] = S["[object Symbol]"] = S["[object Uint8Array]"] = S["[object Uint8ClampedArray]"] = S["[object Uint16Array]"] = S["[object Uint32Array]"] = !0, S["[object Error]"] = S[C] = S["[object WeakMap]"] = !1, e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return o(e, a, i);
    }var o = t(55),
        i = t(66),
        a = t(33);e.exports = r;
  }, function (e, n, t) {
    "use strict";
    var r = t(39),
        o = t(185);r.default.DefaultOpts.ImageClass = o.default, e.exports = r.default;
  }, function (e, n, t) {
    function r(e, n) {
      this._id = e, this._clearFn = n;
    }var o = Function.prototype.apply;n.setTimeout = function () {
      return new r(o.call(setTimeout, window, arguments), clearTimeout);
    }, n.setInterval = function () {
      return new r(o.call(setInterval, window, arguments), clearInterval);
    }, n.clearTimeout = n.clearInterval = function (e) {
      e && e.close();
    }, r.prototype.unref = r.prototype.ref = function () {}, r.prototype.close = function () {
      this._clearFn.call(window, this._id);
    }, n.enroll = function (e, n) {
      clearTimeout(e._idleTimeoutId), e._idleTimeout = n;
    }, n.unenroll = function (e) {
      clearTimeout(e._idleTimeoutId), e._idleTimeout = -1;
    }, n._unrefActive = n.active = function (e) {
      clearTimeout(e._idleTimeoutId);var n = e._idleTimeout;n >= 0 && (e._idleTimeoutId = setTimeout(function () {
        e._onTimeout && e._onTimeout();
      }, n));
    }, t(75), n.setImmediate = setImmediate, n.clearImmediate = clearImmediate;
  }, function (e, n, t) {
    (function (e, n) {
      !function (e, t) {
        "use strict";
        function r(e) {
          "function" != typeof e && (e = new Function("" + e));for (var n = new Array(arguments.length - 1), t = 0; t < n.length; t++) {
            n[t] = arguments[t + 1];
          }var r = { callback: e, args: n };return c[u] = r, s(u), u++;
        }function o(e) {
          delete c[e];
        }function i(e) {
          var n = e.callback,
              r = e.args;switch (r.length) {case 0:
              n();break;case 1:
              n(r[0]);break;case 2:
              n(r[0], r[1]);break;case 3:
              n(r[0], r[1], r[2]);break;default:
              n.apply(t, r);}
        }function a(e) {
          if (l) setTimeout(a, 0, e);else {
            var n = c[e];if (n) {
              l = !0;try {
                i(n);
              } finally {
                o(e), l = !1;
              }
            }
          }
        }if (!e.setImmediate) {
          var s,
              u = 1,
              c = {},
              l = !1,
              p = e.document,
              f = Object.getPrototypeOf && Object.getPrototypeOf(e);f = f && f.setTimeout ? f : e, "[object process]" === {}.toString.call(e.process) ? function () {
            s = function s(e) {
              n.nextTick(function () {
                a(e);
              });
            };
          }() : function () {
            if (e.postMessage && !e.importScripts) {
              var n = !0,
                  t = e.onmessage;return e.onmessage = function () {
                n = !1;
              }, e.postMessage("", "*"), e.onmessage = t, n;
            }
          }() ? function () {
            var n = "setImmediate$" + Math.random() + "$",
                t = function t(_t) {
              _t.source === e && "string" == typeof _t.data && 0 === _t.data.indexOf(n) && a(+_t.data.slice(n.length));
            };e.addEventListener ? e.addEventListener("message", t, !1) : e.attachEvent("onmessage", t), s = function s(t) {
              e.postMessage(n + t, "*");
            };
          }() : e.MessageChannel ? function () {
            var e = new MessageChannel();e.port1.onmessage = function (e) {
              a(e.data);
            }, s = function s(n) {
              e.port2.postMessage(n);
            };
          }() : p && "onreadystatechange" in p.createElement("script") ? function () {
            var e = p.documentElement;s = function s(n) {
              var t = p.createElement("script");t.onreadystatechange = function () {
                a(n), t.onreadystatechange = null, e.removeChild(t), t = null;
              }, e.appendChild(t);
            };
          }() : function () {
            s = function s(e) {
              setTimeout(a, 0, e);
            };
          }(), f.setImmediate = r, f.clearImmediate = o;
        }
      }("undefined" == typeof self ? void 0 === e ? this : e : self);
    }).call(n, t(14), t(40));
  }, function (e, n, t) {
    function r(e, n) {
      return (s(e) ? o : i)(e, a(n, 3));
    }var o = t(41),
        i = t(77),
        a = t(47),
        s = t(0);e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      var t = [];return o(e, function (e, r, o) {
        n(e, r, o) && t.push(e);
      }), t;
    }var o = t(78);e.exports = r;
  }, function (e, n, t) {
    var r = t(79),
        o = t(92),
        i = o(r);e.exports = i;
  }, function (e, n, t) {
    function r(e, n) {
      return e && o(e, n, i);
    }var o = t(80),
        i = t(4);e.exports = r;
  }, function (e, n, t) {
    var r = t(81),
        o = r();e.exports = o;
  }, function (e, n) {
    function t(e) {
      return function (n, t, r) {
        for (var o = -1, i = Object(n), a = r(n), s = a.length; s--;) {
          var u = a[e ? s : ++o];if (!1 === t(i[u], u, i)) break;
        }return n;
      };
    }e.exports = t;
  }, function (e, n) {
    function t(e, n) {
      for (var t = -1, r = Array(e); ++t < e;) {
        r[t] = n(t);
      }return r;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      return i(e) && o(e) == a;
    }var o = t(5),
        i = t(7),
        a = "[object Arguments]";e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      var n = a.call(e, u),
          t = e[u];try {
        e[u] = void 0;var r = !0;
      } catch (e) {}var o = s.call(e);return r && (n ? e[u] = t : delete e[u]), o;
    }var o = t(6),
        i = Object.prototype,
        a = i.hasOwnProperty,
        s = i.toString,
        u = o ? o.toStringTag : void 0;e.exports = r;
  }, function (e, n) {
    function t(e) {
      return o.call(e);
    }var r = Object.prototype,
        o = r.toString;e.exports = t;
  }, function (e, n) {
    function t() {
      return !1;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      return a(e) && i(e.length) && !!s[o(e)];
    }var o = t(5),
        i = t(24),
        a = t(7),
        s = {};s["[object Float32Array]"] = s["[object Float64Array]"] = s["[object Int8Array]"] = s["[object Int16Array]"] = s["[object Int32Array]"] = s["[object Uint8Array]"] = s["[object Uint8ClampedArray]"] = s["[object Uint16Array]"] = s["[object Uint32Array]"] = !0, s["[object Arguments]"] = s["[object Array]"] = s["[object ArrayBuffer]"] = s["[object Boolean]"] = s["[object DataView]"] = s["[object Date]"] = s["[object Error]"] = s["[object Function]"] = s["[object Map]"] = s["[object Number]"] = s["[object Object]"] = s["[object RegExp]"] = s["[object Set]"] = s["[object String]"] = s["[object WeakMap]"] = !1, e.exports = r;
  }, function (e, n) {
    function t(e) {
      return function (n) {
        return e(n);
      };
    }e.exports = t;
  }, function (e, n, t) {
    (function (e) {
      var r = t(43),
          o = "object" == (typeof n === "undefined" ? "undefined" : _typeof(n)) && n && !n.nodeType && n,
          i = o && "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && e && !e.nodeType && e,
          a = i && i.exports === o,
          s = a && r.process,
          u = function () {
        try {
          return s && s.binding && s.binding("util");
        } catch (e) {}
      }();e.exports = u;
    }).call(n, t(15)(e));
  }, function (e, n, t) {
    function r(e) {
      if (!o(e)) return i(e);var n = [];for (var t in Object(e)) {
        s.call(e, t) && "constructor" != t && n.push(t);
      }return n;
    }var o = t(25),
        i = t(91),
        a = Object.prototype,
        s = a.hasOwnProperty;e.exports = r;
  }, function (e, n, t) {
    var r = t(45),
        o = r(Object.keys, Object);e.exports = o;
  }, function (e, n, t) {
    function r(e, n) {
      return function (t, r) {
        if (null == t) return t;if (!o(t)) return e(t, r);for (var i = t.length, a = n ? i : -1, s = Object(t); (n ? a-- : ++a < i) && !1 !== r(s[a], a, s);) {}return t;
      };
    }var o = t(11);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      var n = i(e);return 1 == n.length && n[0][2] ? a(n[0][0], n[0][1]) : function (t) {
        return t === e || o(t, e, n);
      };
    }var o = t(94),
        i = t(133),
        a = t(59);e.exports = r;
  }, function (e, n, t) {
    function r(e, n, t, r) {
      var u = t.length,
          c = u,
          l = !r;if (null == e) return !c;for (e = Object(e); u--;) {
        var p = t[u];if (l && p[2] ? p[1] !== e[p[0]] : !(p[0] in e)) return !1;
      }for (; ++u < c;) {
        p = t[u];var f = p[0],
            h = e[f],
            d = p[1];if (l && p[2]) {
          if (void 0 === h && !(f in e)) return !1;
        } else {
          var m = new o();if (r) var _ = r(h, d, f, e, n, m);if (!(void 0 === _ ? i(d, h, a | s, r, m) : _)) return !1;
        }
      }return !0;
    }var o = t(26),
        i = t(49),
        a = 1,
        s = 2;e.exports = r;
  }, function (e, n) {
    function t() {
      this.__data__ = [], this.size = 0;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      var n = this.__data__,
          t = o(n, e);return !(t < 0) && (t == n.length - 1 ? n.pop() : a.call(n, t, 1), --this.size, !0);
    }var o = t(17),
        i = Array.prototype,
        a = i.splice;e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      var n = this.__data__,
          t = o(n, e);return t < 0 ? void 0 : n[t][1];
    }var o = t(17);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return o(this.__data__, e) > -1;
    }var o = t(17);e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      var t = this.__data__,
          r = o(t, e);return r < 0 ? (++this.size, t.push([e, n])) : t[r][1] = n, this;
    }var o = t(17);e.exports = r;
  }, function (e, n, t) {
    function r() {
      this.__data__ = new o(), this.size = 0;
    }var o = t(16);e.exports = r;
  }, function (e, n) {
    function t(e) {
      var n = this.__data__,
          t = n.delete(e);return this.size = n.size, t;
    }e.exports = t;
  }, function (e, n) {
    function t(e) {
      return this.__data__.get(e);
    }e.exports = t;
  }, function (e, n) {
    function t(e) {
      return this.__data__.has(e);
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n) {
      var t = this.__data__;if (t instanceof o) {
        var r = t.__data__;if (!i || r.length < s - 1) return r.push([e, n]), this.size = ++t.size, this;t = this.__data__ = new a(r);
      }return t.set(e, n), this.size = t.size, this;
    }var o = t(16),
        i = t(27),
        a = t(28),
        s = 200;e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return !(!a(e) || i(e)) && (o(e) ? d : c).test(s(e));
    }var o = t(46),
        i = t(106),
        a = t(2),
        s = t(48),
        u = /[\\^$.*+?()[\]{}|]/g,
        c = /^\[object .+?Constructor\]$/,
        l = Function.prototype,
        p = Object.prototype,
        f = l.toString,
        h = p.hasOwnProperty,
        d = RegExp("^" + f.call(h).replace(u, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return !!i && i in e;
    }var o = t(107),
        i = function () {
      var e = /[^.]+$/.exec(o && o.keys && o.keys.IE_PROTO || "");return e ? "Symbol(src)_1." + e : "";
    }();e.exports = r;
  }, function (e, n, t) {
    var r = t(1),
        o = r["__core-js_shared__"];e.exports = o;
  }, function (e, n) {
    function t(e, n) {
      return null == e ? void 0 : e[n];
    }e.exports = t;
  }, function (e, n, t) {
    function r() {
      this.size = 0, this.__data__ = { hash: new o(), map: new (a || i)(), string: new o() };
    }var o = t(110),
        i = t(16),
        a = t(27);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      var n = -1,
          t = null == e ? 0 : e.length;for (this.clear(); ++n < t;) {
        var r = e[n];this.set(r[0], r[1]);
      }
    }var o = t(111),
        i = t(112),
        a = t(113),
        s = t(114),
        u = t(115);r.prototype.clear = o, r.prototype.delete = i, r.prototype.get = a, r.prototype.has = s, r.prototype.set = u, e.exports = r;
  }, function (e, n, t) {
    function r() {
      this.__data__ = o ? o(null) : {}, this.size = 0;
    }var o = t(18);e.exports = r;
  }, function (e, n) {
    function t(e) {
      var n = this.has(e) && delete this.__data__[e];return this.size -= n ? 1 : 0, n;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      var n = this.__data__;if (o) {
        var t = n[e];return t === i ? void 0 : t;
      }return s.call(n, e) ? n[e] : void 0;
    }var o = t(18),
        i = "__lodash_hash_undefined__",
        a = Object.prototype,
        s = a.hasOwnProperty;e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      var n = this.__data__;return o ? void 0 !== n[e] : a.call(n, e);
    }var o = t(18),
        i = Object.prototype,
        a = i.hasOwnProperty;e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      var t = this.__data__;return this.size += this.has(e) ? 0 : 1, t[e] = o && void 0 === n ? i : n, this;
    }var o = t(18),
        i = "__lodash_hash_undefined__";e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      var n = o(this, e).delete(e);return this.size -= n ? 1 : 0, n;
    }var o = t(19);e.exports = r;
  }, function (e, n) {
    function t(e) {
      var n = typeof e === "undefined" ? "undefined" : _typeof(e);return "string" == n || "number" == n || "symbol" == n || "boolean" == n ? "__proto__" !== e : null === e;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      return o(this, e).get(e);
    }var o = t(19);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return o(this, e).has(e);
    }var o = t(19);e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      var t = o(this, e),
          r = t.size;return t.set(e, n), this.size += t.size == r ? 0 : 1, this;
    }var o = t(19);e.exports = r;
  }, function (e, n, t) {
    function r(e, n, t, r, _, y) {
      var b = c(e),
          g = c(n),
          k = b ? d : u(e),
          x = g ? d : u(n);k = k == h ? m : k, x = x == h ? m : x;var j = k == m,
          w = x == m,
          T = k == x;if (T && l(e)) {
        if (!l(n)) return !1;b = !0, j = !1;
      }if (T && !j) return y || (y = new o()), b || p(e) ? i(e, n, t, r, _, y) : a(e, n, k, t, r, _, y);if (!(t & f)) {
        var P = j && v.call(e, "__wrapped__"),
            C = w && v.call(n, "__wrapped__");if (P || C) {
          var E = P ? e.value() : e,
              A = C ? n.value() : n;return y || (y = new o()), _(E, A, t, r, y);
        }
      }return !!T && (y || (y = new o()), s(e, n, t, r, _, y));
    }var o = t(26),
        i = t(50),
        a = t(127),
        s = t(128),
        u = t(57),
        c = t(0),
        l = t(22),
        p = t(44),
        f = 1,
        h = "[object Arguments]",
        d = "[object Array]",
        m = "[object Object]",
        _ = Object.prototype,
        v = _.hasOwnProperty;e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      var n = -1,
          t = null == e ? 0 : e.length;for (this.__data__ = new o(); ++n < t;) {
        this.add(e[n]);
      }
    }var o = t(28),
        i = t(123),
        a = t(124);r.prototype.add = r.prototype.push = i, r.prototype.has = a, e.exports = r;
  }, function (e, n) {
    function t(e) {
      return this.__data__.set(e, r), this;
    }var r = "__lodash_hash_undefined__";e.exports = t;
  }, function (e, n) {
    function t(e) {
      return this.__data__.has(e);
    }e.exports = t;
  }, function (e, n) {
    function t(e, n) {
      for (var t = -1, r = null == e ? 0 : e.length; ++t < r;) {
        if (n(e[t], t, e)) return !0;
      }return !1;
    }e.exports = t;
  }, function (e, n) {
    function t(e, n) {
      return e.has(n);
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n, t, r, o, j, T) {
      switch (t) {case x:
          if (e.byteLength != n.byteLength || e.byteOffset != n.byteOffset) return !1;e = e.buffer, n = n.buffer;case k:
          return !(e.byteLength != n.byteLength || !j(new i(e), new i(n)));case f:case h:case _:
          return a(+e, +n);case d:
          return e.name == n.name && e.message == n.message;case v:case b:
          return e == n + "";case m:
          var P = u;case y:
          var C = r & l;if (P || (P = c), e.size != n.size && !C) return !1;var E = T.get(e);if (E) return E == n;r |= p, T.set(e, n);var A = s(P(e), P(n), r, o, j, T);return T.delete(e), A;case g:
          if (w) return w.call(e) == w.call(n);}return !1;
    }var o = t(6),
        i = t(51),
        a = t(9),
        s = t(50),
        u = t(52),
        c = t(53),
        l = 1,
        p = 2,
        f = "[object Boolean]",
        h = "[object Date]",
        d = "[object Error]",
        m = "[object Map]",
        _ = "[object Number]",
        v = "[object RegExp]",
        y = "[object Set]",
        b = "[object String]",
        g = "[object Symbol]",
        k = "[object ArrayBuffer]",
        x = "[object DataView]",
        j = o ? o.prototype : void 0,
        w = j ? j.valueOf : void 0;e.exports = r;
  }, function (e, n, t) {
    function r(e, n, t, r, a, u) {
      var c = t & i,
          l = o(e),
          p = l.length;if (p != o(n).length && !c) return !1;for (var f = p; f--;) {
        var h = l[f];if (!(c ? h in n : s.call(n, h))) return !1;
      }var d = u.get(e);if (d && u.get(n)) return d == n;var m = !0;u.set(e, n), u.set(n, e);for (var _ = c; ++f < p;) {
        h = l[f];var v = e[h],
            y = n[h];if (r) var b = c ? r(y, v, h, n, e, u) : r(v, y, h, e, n, u);if (!(void 0 === b ? v === y || a(v, y, t, r, u) : b)) {
          m = !1;break;
        }_ || (_ = "constructor" == h);
      }if (m && !_) {
        var g = e.constructor,
            k = n.constructor;g != k && "constructor" in e && "constructor" in n && !("function" == typeof g && g instanceof g && "function" == typeof k && k instanceof k) && (m = !1);
      }return u.delete(e), u.delete(n), m;
    }var o = t(54),
        i = 1,
        a = Object.prototype,
        s = a.hasOwnProperty;e.exports = r;
  }, function (e, n, t) {
    var r = t(3),
        o = t(1),
        i = r(o, "DataView");e.exports = i;
  }, function (e, n, t) {
    var r = t(3),
        o = t(1),
        i = r(o, "Promise");e.exports = i;
  }, function (e, n, t) {
    var r = t(3),
        o = t(1),
        i = r(o, "Set");e.exports = i;
  }, function (e, n, t) {
    var r = t(3),
        o = t(1),
        i = r(o, "WeakMap");e.exports = i;
  }, function (e, n, t) {
    function r(e) {
      for (var n = i(e), t = n.length; t--;) {
        var r = n[t],
            a = e[r];n[t] = [r, a, o(a)];
      }return n;
    }var o = t(58),
        i = t(4);e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      return s(e) && u(n) ? c(l(e), n) : function (t) {
        var r = i(t, e);return void 0 === r && r === n ? a(t, e) : o(n, r, p | f);
      };
    }var o = t(49),
        i = t(135),
        a = t(141),
        s = t(31),
        u = t(58),
        c = t(59),
        l = t(12),
        p = 1,
        f = 2;e.exports = r;
  }, function (e, n, t) {
    function r(e, n, t) {
      var r = null == e ? void 0 : o(e, n);return void 0 === r ? t : r;
    }var o = t(37);e.exports = r;
  }, function (e, n, t) {
    var r = t(137),
        o = /^\./,
        i = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
        a = /\\(\\)?/g,
        s = r(function (e) {
      var n = [];return o.test(e) && n.push(""), e.replace(i, function (e, t, r, o) {
        n.push(r ? o.replace(a, "$1") : t || e);
      }), n;
    });e.exports = s;
  }, function (e, n, t) {
    function r(e) {
      var n = o(e, function (e) {
        return t.size === i && t.clear(), e;
      }),
          t = n.cache;return n;
    }var o = t(138),
        i = 500;e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      if ("function" != typeof e || null != n && "function" != typeof n) throw new TypeError(i);var t = function t() {
        var r = arguments,
            o = n ? n.apply(this, r) : r[0],
            i = t.cache;if (i.has(o)) return i.get(o);var a = e.apply(this, r);return t.cache = i.set(o, a) || i, a;
      };return t.cache = new (r.Cache || o)(), t;
    }var o = t(28),
        i = "Expected a function";r.Cache = o, e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return null == e ? "" : o(e);
    }var o = t(140);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      if ("string" == typeof e) return e;if (a(e)) return i(e, r) + "";if (s(e)) return l ? l.call(e) : "";var n = e + "";return "0" == n && 1 / e == -u ? "-0" : n;
    }var o = t(6),
        i = t(68),
        a = t(0),
        s = t(21),
        u = 1 / 0,
        c = o ? o.prototype : void 0,
        l = c ? c.toString : void 0;e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      return null != e && i(e, n, o);
    }var o = t(142),
        i = t(143);e.exports = r;
  }, function (e, n) {
    function t(e, n) {
      return null != e && n in Object(e);
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n, t) {
      n = o(n, e);for (var r = -1, l = n.length, p = !1; ++r < l;) {
        var f = c(n[r]);if (!(p = null != e && t(e, f))) break;e = e[f];
      }return p || ++r != l ? p : !!(l = null == e ? 0 : e.length) && u(l) && s(f, l) && (a(e) || i(e));
    }var o = t(30),
        i = t(35),
        a = t(0),
        s = t(23),
        u = t(24),
        c = t(12);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return a(e) ? o(s(e)) : i(e);
    }var o = t(145),
        i = t(146),
        a = t(31),
        s = t(12);e.exports = r;
  }, function (e, n) {
    function t(e) {
      return function (n) {
        return null == n ? void 0 : n[e];
      };
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      return function (n) {
        return o(n, e);
      };
    }var o = t(37);e.exports = r;
  }, function (e, n, t) {
    var r = t(8),
        o = t(148),
        i = t(33),
        a = o(function (e, n, t, o) {
      r(n, i(n), e, o);
    });e.exports = a;
  }, function (e, n, t) {
    function r(e) {
      return o(function (n, t) {
        var r = -1,
            o = t.length,
            a = o > 1 ? t[o - 1] : void 0,
            s = o > 2 ? t[2] : void 0;for (a = e.length > 3 && "function" == typeof a ? (o--, a) : void 0, s && i(t[0], t[1], s) && (a = o < 3 ? void 0 : a, o = 1), n = Object(n); ++r < o;) {
          var u = t[r];u && e(n, u, r, a);
        }return n;
      });
    }var o = t(65),
        i = t(152);e.exports = r;
  }, function (e, n, t) {
    var r = t(150),
        o = t(64),
        i = t(32),
        a = o ? function (e, n) {
      return o(e, "toString", { configurable: !0, enumerable: !1, value: r(n), writable: !0 });
    } : i;e.exports = a;
  }, function (e, n) {
    function t(e) {
      return function () {
        return e;
      };
    }e.exports = t;
  }, function (e, n) {
    function t(e) {
      var n = 0,
          t = 0;return function () {
        var a = i(),
            s = o - (a - t);if (t = a, s > 0) {
          if (++n >= r) return arguments[0];
        } else n = 0;return e.apply(void 0, arguments);
      };
    }var r = 800,
        o = 16,
        i = Date.now;e.exports = t;
  }, function (e, n, t) {
    function r(e, n, t) {
      if (!s(t)) return !1;var r = typeof n === "undefined" ? "undefined" : _typeof(n);return !!("number" == r ? i(t) && a(n, t.length) : "string" == r && n in t) && o(t[n], e);
    }var o = t(9),
        i = t(11),
        a = t(23),
        s = t(2);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      if (!o(e)) return a(e);var n = i(e),
          t = [];for (var r in e) {
        ("constructor" != r || !n && u.call(e, r)) && t.push(r);
      }return t;
    }var o = t(2),
        i = t(25),
        a = t(154),
        s = Object.prototype,
        u = s.hasOwnProperty;e.exports = r;
  }, function (e, n) {
    function t(e) {
      var n = [];if (null != e) for (var t in Object(e)) {
        n.push(t);
      }return n;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n, t, r) {
      return void 0 === e || o(e, i[t]) && !a.call(r, t) ? n : e;
    }var o = t(9),
        i = Object.prototype,
        a = i.hasOwnProperty;e.exports = r;
  }, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = t(157),
        o = t(39),
        i = function () {
      function e(e, n) {
        void 0 === n && (n = {}), this._src = e, this._opts = n, this._opts.filters = r(o.default.DefaultOpts.filters);
      }return e.prototype.maxColorCount = function (e) {
        return this._opts.colorCount = e, this;
      }, e.prototype.maxDimension = function (e) {
        return this._opts.maxDimension = e, this;
      }, e.prototype.addFilter = function (e) {
        return this._opts.filters.push(e), this;
      }, e.prototype.removeFilter = function (e) {
        var n = this._opts.filters.indexOf(e);return n > 0 && this._opts.filters.splice(n), this;
      }, e.prototype.clearFilters = function () {
        return this._opts.filters = [], this;
      }, e.prototype.quality = function (e) {
        return this._opts.quality = e, this;
      }, e.prototype.useImageClass = function (e) {
        return this._opts.ImageClass = e, this;
      }, e.prototype.useGenerator = function (e) {
        return this._opts.generator = e, this;
      }, e.prototype.useQuantizer = function (e) {
        return this._opts.quantizer = e, this;
      }, e.prototype.build = function () {
        return new o.default(this._src, this._opts);
      }, e.prototype.getPalette = function (e) {
        return this.build().getPalette(e);
      }, e.prototype.getSwatches = function (e) {
        return this.build().getPalette(e);
      }, e;
    }();n.default = i;
  }, function (e, n, t) {
    function r(e) {
      return o(e, i);
    }var o = t(71),
        i = 4;e.exports = r;
  }, function (e, n) {
    function t(e, n) {
      for (var t = -1, r = null == e ? 0 : e.length; ++t < r && !1 !== n(e[t], t, e);) {}return e;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n) {
      return e && o(n, i(n), e);
    }var o = t(8),
        i = t(4);e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      return e && o(n, i(n), e);
    }var o = t(8),
        i = t(33);e.exports = r;
  }, function (e, n, t) {
    (function (e) {
      function r(e, n) {
        if (n) return e.slice();var t = e.length,
            r = c ? c(t) : new e.constructor(t);return e.copy(r), r;
      }var o = t(1),
          i = "object" == (typeof n === "undefined" ? "undefined" : _typeof(n)) && n && !n.nodeType && n,
          a = i && "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && e && !e.nodeType && e,
          s = a && a.exports === i,
          u = s ? o.Buffer : void 0,
          c = u ? u.allocUnsafe : void 0;e.exports = r;
    }).call(n, t(15)(e));
  }, function (e, n) {
    function t(e, n) {
      var t = -1,
          r = e.length;for (n || (n = Array(r)); ++t < r;) {
        n[t] = e[t];
      }return n;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n) {
      return o(e, i(e), n);
    }var o = t(8),
        i = t(29);e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      return o(e, i(e), n);
    }var o = t(8),
        i = t(66);e.exports = r;
  }, function (e, n) {
    function t(e) {
      var n = e.length,
          t = e.constructor(n);return n && "string" == typeof e[0] && o.call(e, "index") && (t.index = e.index, t.input = e.input), t;
    }var r = Object.prototype,
        o = r.hasOwnProperty;e.exports = t;
  }, function (e, n, t) {
    function r(e, n, t, r) {
      var S = e.constructor;switch (n) {case b:
          return o(e);case p:case f:
          return new S(+e);case g:
          return i(e, r);case k:case x:case j:case w:case T:case P:case C:case E:case A:
          return l(e, r);case h:
          return a(e, r, t);case d:case v:
          return new S(e);case m:
          return s(e);case _:
          return u(e, r, t);case y:
          return c(e);}
    }var o = t(34),
        i = t(167),
        a = t(168),
        s = t(170),
        u = t(171),
        c = t(173),
        l = t(174),
        p = "[object Boolean]",
        f = "[object Date]",
        h = "[object Map]",
        d = "[object Number]",
        m = "[object RegExp]",
        _ = "[object Set]",
        v = "[object String]",
        y = "[object Symbol]",
        b = "[object ArrayBuffer]",
        g = "[object DataView]",
        k = "[object Float32Array]",
        x = "[object Float64Array]",
        j = "[object Int8Array]",
        w = "[object Int16Array]",
        T = "[object Int32Array]",
        P = "[object Uint8Array]",
        C = "[object Uint8ClampedArray]",
        E = "[object Uint16Array]",
        A = "[object Uint32Array]";e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      var t = n ? o(e.buffer) : e.buffer;return new e.constructor(t, e.byteOffset, e.byteLength);
    }var o = t(34);e.exports = r;
  }, function (e, n, t) {
    function r(e, n, t) {
      var r = n ? t(a(e), s) : a(e);return i(r, o, new e.constructor());
    }var o = t(169),
        i = t(67),
        a = t(52),
        s = 1;e.exports = r;
  }, function (e, n) {
    function t(e, n) {
      return e.set(n[0], n[1]), e;
    }e.exports = t;
  }, function (e, n) {
    function t(e) {
      var n = new e.constructor(e.source, r.exec(e));return n.lastIndex = e.lastIndex, n;
    }var r = /\w*$/;e.exports = t;
  }, function (e, n, t) {
    function r(e, n, t) {
      var r = n ? t(a(e), s) : a(e);return i(r, o, new e.constructor());
    }var o = t(172),
        i = t(67),
        a = t(53),
        s = 1;e.exports = r;
  }, function (e, n) {
    function t(e, n) {
      return e.add(n), e;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      return a ? Object(a.call(e)) : {};
    }var o = t(6),
        i = o ? o.prototype : void 0,
        a = i ? i.valueOf : void 0;e.exports = r;
  }, function (e, n, t) {
    function r(e, n) {
      var t = n ? o(e.buffer) : e.buffer;return new e.constructor(t, e.byteOffset, e.length);
    }var o = t(34);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return "function" != typeof e.constructor || a(e) ? {} : o(i(e));
    }var o = t(176),
        i = t(38),
        a = t(25);e.exports = r;
  }, function (e, n, t) {
    var r = t(2),
        o = Object.create,
        i = function () {
      function e() {}return function (n) {
        if (!r(n)) return {};if (o) return o(n);e.prototype = n;var t = new e();return e.prototype = void 0, t;
      };
    }();e.exports = i;
  }, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = t(178);n.MMCQ = r.default, n.WebWorker = null;
  }, function (e, n, t) {
    "use strict";
    function r(e, n) {
      for (var t = e.size(); e.size() < n;) {
        var r = e.pop();if (!(r && r.count() > 0)) break;var o = r.split(),
            i = o[0],
            a = o[1];if (e.push(i), a && a.count() > 0 && e.push(a), e.size() === t) break;t = e.size();
      }
    }function o(e) {
      for (var n = []; e.size();) {
        var t = e.pop(),
            r = t.avg();r[0], r[1], r[2];n.push(new i.Swatch(r, t.count()));
      }return n;
    }Object.defineProperty(n, "__esModule", { value: !0 });var i = t(20),
        a = t(179),
        s = t(180),
        u = function u(e, n) {
      if (0 === e.length || n.colorCount < 2 || n.colorCount > 256) throw new Error("Wrong MMCQ parameters");var t = a.default.build(e),
          i = t.hist,
          u = (Object.keys(i).length, new s.default(function (e, n) {
        return e.count() - n.count();
      }));u.push(t), r(u, .75 * n.colorCount);var c = new s.default(function (e, n) {
        return e.count() * e.volume() - n.count() * n.volume();
      });return c.contents = u.contents, r(c, n.colorCount - c.size()), o(c);
    };n.default = u;
  }, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = t(10),
        o = function () {
      function e(e, n, t, r, o, i, a) {
        this._volume = -1, this._count = -1, this.dimension = { r1: e, r2: n, g1: t, g2: r, b1: o, b2: i }, this.hist = a;
      }return e.build = function (n, t) {
        var o,
            i,
            a,
            s,
            u,
            c,
            l,
            p,
            f,
            h = 1 << 3 * r.SIGBITS,
            d = new Uint32Array(h);o = a = u = 0, i = s = c = Number.MAX_VALUE;for (var m = n.length / 4, _ = 0; _ < m;) {
          var v = 4 * _;if (_++, l = n[v + 0], p = n[v + 1], f = n[v + 2], 0 !== n[v + 3]) {
            l >>= r.RSHIFT, p >>= r.RSHIFT, f >>= r.RSHIFT;d[r.getColorIndex(l, p, f)] += 1, l > o && (o = l), l < i && (i = l), p > a && (a = p), p < s && (s = p), f > u && (u = f), f < c && (c = f);
          }
        }return new e(i, o, s, a, c, u, d);
      }, e.prototype.invalidate = function () {
        this._volume = this._count = -1, this._avg = null;
      }, e.prototype.volume = function () {
        if (this._volume < 0) {
          var e = this.dimension,
              n = e.r1,
              t = e.r2,
              r = e.g1,
              o = e.g2,
              i = e.b1,
              a = e.b2;this._volume = (t - n + 1) * (o - r + 1) * (a - i + 1);
        }return this._volume;
      }, e.prototype.count = function () {
        if (this._count < 0) {
          for (var e = this.hist, n = this.dimension, t = n.r1, o = n.r2, i = n.g1, a = n.g2, s = n.b1, u = n.b2, c = 0, l = t; l <= o; l++) {
            for (var p = i; p <= a; p++) {
              for (var f = s; f <= u; f++) {
                var h = r.getColorIndex(l, p, f);c += e[h];
              }
            }
          }this._count = c;
        }return this._count;
      }, e.prototype.clone = function () {
        var n = this.hist,
            t = this.dimension;return new e(t.r1, t.r2, t.g1, t.g2, t.b1, t.b2, n);
      }, e.prototype.avg = function () {
        if (!this._avg) {
          var e = this.hist,
              n = this.dimension,
              t = n.r1,
              o = n.r2,
              i = n.g1,
              a = n.g2,
              s = n.b1,
              u = n.b2,
              c = 0,
              l = 1 << 8 - r.SIGBITS,
              p = void 0,
              f = void 0,
              h = void 0;p = f = h = 0;for (var d = t; d <= o; d++) {
            for (var m = i; m <= a; m++) {
              for (var _ = s; _ <= u; _++) {
                var v = r.getColorIndex(d, m, _),
                    y = e[v];c += y, p += y * (d + .5) * l, f += y * (m + .5) * l, h += y * (_ + .5) * l;
              }
            }
          }this._avg = c ? [~~(p / c), ~~(f / c), ~~(h / c)] : [~~(l * (t + o + 1) / 2), ~~(l * (i + a + 1) / 2), ~~(l * (s + u + 1) / 2)];
        }return this._avg;
      }, e.prototype.contains = function (e) {
        var n = e[0],
            t = e[1],
            o = e[2],
            i = this.dimension,
            a = i.r1,
            s = i.r2,
            u = i.g1,
            c = i.g2,
            l = i.b1,
            p = i.b2;return n >>= r.RSHIFT, t >>= r.RSHIFT, o >>= r.RSHIFT, n >= a && n <= s && t >= u && t <= c && o >= l && o <= p;
      }, e.prototype.split = function () {
        var e = this.hist,
            n = this.dimension,
            t = n.r1,
            o = n.r2,
            i = n.g1,
            a = n.g2,
            s = n.b1,
            u = n.b2,
            c = this.count();if (!c) return [];if (1 === c) return [this.clone()];var l,
            p,
            f = o - t + 1,
            h = a - i + 1,
            d = u - s + 1,
            m = Math.max(f, h, d),
            _ = null;l = p = 0;var v = null;if (m === f) {
          v = "r", _ = new Uint32Array(o + 1);for (var y = t; y <= o; y++) {
            l = 0;for (var b = i; b <= a; b++) {
              for (var g = s; g <= u; g++) {
                var k = r.getColorIndex(y, b, g);l += e[k];
              }
            }p += l, _[y] = p;
          }
        } else if (m === h) {
          v = "g", _ = new Uint32Array(a + 1);for (var b = i; b <= a; b++) {
            l = 0;for (var y = t; y <= o; y++) {
              for (var g = s; g <= u; g++) {
                var k = r.getColorIndex(y, b, g);l += e[k];
              }
            }p += l, _[b] = p;
          }
        } else {
          v = "b", _ = new Uint32Array(u + 1);for (var g = s; g <= u; g++) {
            l = 0;for (var y = t; y <= o; y++) {
              for (var b = i; b <= a; b++) {
                var k = r.getColorIndex(y, b, g);l += e[k];
              }
            }p += l, _[g] = p;
          }
        }for (var x = -1, j = new Uint32Array(_.length), w = 0; w < _.length; w++) {
          var T = _[w];x < 0 && T > p / 2 && (x = w), j[w] = p - T;
        }var P = this;return function (e) {
          var n = e + "1",
              t = e + "2",
              r = P.dimension[n],
              o = P.dimension[t],
              i = P.clone(),
              a = P.clone(),
              s = x - r,
              u = o - x;for (s <= u ? (o = Math.min(o - 1, ~~(x + u / 2)), o = Math.max(0, o)) : (o = Math.max(r, ~~(x - 1 - s / 2)), o = Math.min(P.dimension[t], o)); !_[o];) {
            o++;
          }for (var c = j[o]; !c && _[o - 1];) {
            c = j[--o];
          }return i.dimension[t] = o, a.dimension[n] = o + 1, [i, a];
        }(v);
      }, e;
    }();n.default = o;
  }, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = function () {
      function e(e) {
        this._comparator = e, this.contents = [], this._sorted = !1;
      }return e.prototype._sort = function () {
        this._sorted || (this.contents.sort(this._comparator), this._sorted = !0);
      }, e.prototype.push = function (e) {
        this.contents.push(e), this._sorted = !1;
      }, e.prototype.peek = function (e) {
        return this._sort(), e = "number" == typeof e ? e : this.contents.length - 1, this.contents[e];
      }, e.prototype.pop = function () {
        return this._sort(), this.contents.pop();
      }, e.prototype.size = function () {
        return this.contents.length;
      }, e.prototype.map = function (e) {
        return this._sort(), this.contents.map(e);
      }, e;
    }();n.default = r;
  }, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = t(182);n.Default = r.default;
  }, function (e, n, t) {
    "use strict";
    function r(e) {
      var n = 0;return e.forEach(function (e) {
        n = Math.max(n, e.getPopulation());
      }), n;
    }function o(e, n) {
      return e.Vibrant === n || e.DarkVibrant === n || e.LightVibrant === n || e.Muted === n || e.DarkMuted === n || e.LightMuted === n;
    }function i(e, n, t, r, o, i, a) {
      function s(e, n) {
        return 1 - Math.abs(e - n);
      }return function () {
        for (var e = [], n = 0; n < arguments.length; n++) {
          e[n] = arguments[n];
        }for (var t = 0, r = 0, o = 0; o < e.length; o += 2) {
          var i = e[o],
              a = e[o + 1];t += i * a, r += a;
        }return t / r;
      }(s(e, n), a.weightSaturation, s(t, r), a.weightLuma, o / i, a.weightPopulation);
    }function a(e, n, t, r, a, s, u, c, l, p) {
      var f = null,
          h = 0;return n.forEach(function (n) {
        var d = n.getHsl(),
            m = d[1],
            _ = d[2];if (m >= c && m <= l && _ >= a && _ <= s && !o(e, n)) {
          var v = i(m, u, _, r, n.getPopulation(), t, p);(null === f || v > h) && (f = n, h = v);
        }
      }), f;
    }function s(e, n, t) {
      var r = {};return r.Vibrant = a(r, e, n, t.targetNormalLuma, t.minNormalLuma, t.maxNormalLuma, t.targetVibrantSaturation, t.minVibrantSaturation, 1, t), r.LightVibrant = a(r, e, n, t.targetLightLuma, t.minLightLuma, 1, t.targetVibrantSaturation, t.minVibrantSaturation, 1, t), r.DarkVibrant = a(r, e, n, t.targetDarkLuma, 0, t.maxDarkLuma, t.targetVibrantSaturation, t.minVibrantSaturation, 1, t), r.Muted = a(r, e, n, t.targetNormalLuma, t.minNormalLuma, t.maxNormalLuma, t.targetMutesSaturation, 0, t.maxMutesSaturation, t), r.LightMuted = a(r, e, n, t.targetLightLuma, t.minLightLuma, 1, t.targetMutesSaturation, 0, t.maxMutesSaturation, t), r.DarkMuted = a(r, e, n, t.targetDarkLuma, 0, t.maxDarkLuma, t.targetMutesSaturation, 0, t.maxMutesSaturation, t), r;
    }function u(e, n, t) {
      if (null === e.Vibrant && null !== e.DarkVibrant) {
        var r = e.DarkVibrant.getHsl(),
            o = r[0],
            i = r[1],
            a = r[2];a = t.targetNormalLuma, e.Vibrant = new c.Swatch(l.hslToRgb(o, i, a), 0);
      }if (null === e.DarkVibrant && null !== e.Vibrant) {
        var s = e.Vibrant.getHsl(),
            o = s[0],
            i = s[1],
            a = s[2];a = t.targetDarkLuma, e.DarkVibrant = new c.Swatch(l.hslToRgb(o, i, a), 0);
      }
    }Object.defineProperty(n, "__esModule", { value: !0 });var c = t(20),
        l = t(10),
        p = t(60),
        f = { targetDarkLuma: .26, maxDarkLuma: .45, minLightLuma: .55, targetLightLuma: .74, minNormalLuma: .3, targetNormalLuma: .5, maxNormalLuma: .7, targetMutesSaturation: .3, maxMutesSaturation: .4, targetVibrantSaturation: 1, minVibrantSaturation: .35, weightSaturation: 3, weightLuma: 6.5, weightPopulation: .5 },
        h = function h(e, n) {
      n = p({}, n, f);var t = r(e),
          o = s(e, t, n);return u(o, t, n), o;
    };n.default = h;
  }, function (e, n, t) {
    "use strict";
    function r(e) {
      return Array.isArray(e) && 0 !== e.length ? function (n, t, r, o) {
        if (0 === o) return !1;for (var i = 0; i < e.length; i++) {
          if (!e[i](n, t, r, o)) return !1;
        }return !0;
      } : null;
    }Object.defineProperty(n, "__esModule", { value: !0 });var o = t(184);n.Default = o.default, n.combineFilters = r;
  }, function (e, n, t) {
    "use strict";
    function r(e, n, t, r) {
      return r >= 125 && !(e > 250 && n > 250 && t > 250);
    }Object.defineProperty(n, "__esModule", { value: !0 }), n.default = r;
  }, function (e, n, t) {
    "use strict";
    function r(e) {
      var n = u.parse(e);return null === n.protocol && null === n.host && null === n.port;
    }function o(e, n) {
      var t = u.parse(e),
          r = u.parse(n);return t.protocol === r.protocol && t.hostname === r.hostname && t.port === r.port;
    }var i = this && this.__extends || function () {
      var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, n) {
        e.__proto__ = n;
      } || function (e, n) {
        for (var t in n) {
          n.hasOwnProperty(t) && (e[t] = n[t]);
        }
      };return function (n, t) {
        function r() {
          this.constructor = n;
        }e(n, t), n.prototype = null === t ? Object.create(t) : (r.prototype = t.prototype, new r());
      };
    }();Object.defineProperty(n, "__esModule", { value: !0 });var a = t(13),
        s = t(186),
        u = t(187),
        c = function (e) {
      function n() {
        return null !== e && e.apply(this, arguments) || this;
      }return i(n, e), n.prototype._initCanvas = function () {
        var e = this.image,
            n = this._canvas = document.createElement("canvas"),
            t = this._context = n.getContext("2d");n.className = "vibrant-canvas", n.style.display = "none", this._width = n.width = e.width, this._height = n.height = e.height, t.drawImage(e, 0, 0), document.body.appendChild(n);
      }, n.prototype.load = function (e) {
        var n = this,
            t = null,
            i = null;if ("string" == typeof e) t = document.createElement("img"), i = e;else {
          if (!(e instanceof HTMLImageElement)) return a.reject(new Error("Cannot load buffer as an image in browser"));t = e, i = e.src;
        }return this.image = t, r(i) || o(window.location.href, i) || (t.crossOrigin = "anonymous"), "string" == typeof e && (t.src = i), new a(function (e, r) {
          var o = function o() {
            n._initCanvas(), e(n);
          };t.complete ? o() : (t.onload = o, t.onerror = function (e) {
            return r(new Error("Fail to load image: " + i));
          });
        });
      }, n.prototype.clear = function () {
        this._context.clearRect(0, 0, this._width, this._height);
      }, n.prototype.update = function (e) {
        this._context.putImageData(e, 0, 0);
      }, n.prototype.getWidth = function () {
        return this._width;
      }, n.prototype.getHeight = function () {
        return this._height;
      }, n.prototype.resize = function (e, n, t) {
        var r = this,
            o = r._canvas,
            i = r._context,
            a = r.image;this._width = o.width = e, this._height = o.height = n, i.scale(t, t), i.drawImage(a, 0, 0);
      }, n.prototype.getPixelCount = function () {
        return this._width * this._height;
      }, n.prototype.getImageData = function () {
        return this._context.getImageData(0, 0, this._width, this._height);
      }, n.prototype.remove = function () {
        this._canvas.parentNode.removeChild(this._canvas);
      }, n;
    }(s.ImageBase);n.default = c;
  }, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = t(13),
        o = function () {
      function e() {}return e.prototype.scaleDown = function (e) {
        var n = this.getWidth(),
            t = this.getHeight(),
            r = 1;if (e.maxDimension > 0) {
          var o = Math.max(n, t);o > e.maxDimension && (r = e.maxDimension / o);
        } else r = 1 / e.quality;r < 1 && this.resize(n * r, t * r, r);
      }, e.prototype.applyFilter = function (e) {
        var n = this.getImageData();if ("function" == typeof e) for (var t = n.data, o = t.length / 4, i = void 0, a = void 0, s = void 0, u = void 0, c = void 0, l = 0; l < o; l++) {
          i = 4 * l, a = t[i + 0], s = t[i + 1], u = t[i + 2], c = t[i + 3], e(a, s, u, c) || (t[i + 3] = 0);
        }return r.resolve(n);
      }, e;
    }();n.ImageBase = o;
  }, function (e, n, t) {
    "use strict";
    function r() {
      this.protocol = null, this.slashes = null, this.auth = null, this.host = null, this.port = null, this.hostname = null, this.hash = null, this.search = null, this.query = null, this.pathname = null, this.path = null, this.href = null;
    }function o(e, n, t) {
      if (e && c.isObject(e) && e instanceof r) return e;var o = new r();return o.parse(e, n, t), o;
    }function i(e) {
      return c.isString(e) && (e = o(e)), e instanceof r ? e.format() : r.prototype.format.call(e);
    }function a(e, n) {
      return o(e, !1, !0).resolve(n);
    }function s(e, n) {
      return e ? o(e, !1, !0).resolveObject(n) : n;
    }var u = t(188),
        c = t(189);n.parse = o, n.resolve = a, n.resolveObject = s, n.format = i, n.Url = r;var l = /^([a-z0-9.+-]+:)/i,
        p = /:[0-9]*$/,
        f = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
        h = ["<", ">", '"', "`", " ", "\r", "\n", "\t"],
        d = ["{", "}", "|", "\\", "^", "`"].concat(h),
        m = ["'"].concat(d),
        _ = ["%", "/", "?", ";", "#"].concat(m),
        v = ["/", "?", "#"],
        y = /^[+a-z0-9A-Z_-]{0,63}$/,
        b = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
        g = { javascript: !0, "javascript:": !0 },
        k = { javascript: !0, "javascript:": !0 },
        x = { http: !0, https: !0, ftp: !0, gopher: !0, file: !0, "http:": !0, "https:": !0, "ftp:": !0, "gopher:": !0, "file:": !0 },
        j = t(190);r.prototype.parse = function (e, n, t) {
      if (!c.isString(e)) throw new TypeError("Parameter 'url' must be a string, not " + (typeof e === "undefined" ? "undefined" : _typeof(e)));var r = e.indexOf("?"),
          o = -1 !== r && r < e.indexOf("#") ? "?" : "#",
          i = e.split(o),
          a = /\\/g;i[0] = i[0].replace(a, "/"), e = i.join(o);var s = e;if (s = s.trim(), !t && 1 === e.split("#").length) {
        var p = f.exec(s);if (p) return this.path = s, this.href = s, this.pathname = p[1], p[2] ? (this.search = p[2], this.query = n ? j.parse(this.search.substr(1)) : this.search.substr(1)) : n && (this.search = "", this.query = {}), this;
      }var h = l.exec(s);if (h) {
        h = h[0];var d = h.toLowerCase();this.protocol = d, s = s.substr(h.length);
      }if (t || h || s.match(/^\/\/[^@\/]+@[^@\/]+/)) {
        var w = "//" === s.substr(0, 2);!w || h && k[h] || (s = s.substr(2), this.slashes = !0);
      }if (!k[h] && (w || h && !x[h])) {
        for (var T = -1, P = 0; P < v.length; P++) {
          var C = s.indexOf(v[P]);-1 !== C && (-1 === T || C < T) && (T = C);
        }var E, A;A = -1 === T ? s.lastIndexOf("@") : s.lastIndexOf("@", T), -1 !== A && (E = s.slice(0, A), s = s.slice(A + 1), this.auth = decodeURIComponent(E)), T = -1;for (var P = 0; P < _.length; P++) {
          var C = s.indexOf(_[P]);-1 !== C && (-1 === T || C < T) && (T = C);
        }-1 === T && (T = s.length), this.host = s.slice(0, T), s = s.slice(T), this.parseHost(), this.hostname = this.hostname || "";var S = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1];if (!S) for (var F = this.hostname.split(/\./), P = 0, O = F.length; P < O; P++) {
          var R = F[P];if (R && !R.match(y)) {
            for (var I = "", q = 0, N = R.length; q < N; q++) {
              R.charCodeAt(q) > 127 ? I += "x" : I += R[q];
            }if (!I.match(y)) {
              var L = F.slice(0, P),
                  M = F.slice(P + 1),
                  D = R.match(b);D && (L.push(D[1]), M.unshift(D[2])), M.length && (s = "/" + M.join(".") + s), this.hostname = L.join(".");break;
            }
          }
        }this.hostname.length > 255 ? this.hostname = "" : this.hostname = this.hostname.toLowerCase(), S || (this.hostname = u.toASCII(this.hostname));var V = this.port ? ":" + this.port : "",
            U = this.hostname || "";this.host = U + V, this.href += this.host, S && (this.hostname = this.hostname.substr(1, this.hostname.length - 2), "/" !== s[0] && (s = "/" + s));
      }if (!g[d]) for (var P = 0, O = m.length; P < O; P++) {
        var H = m[P];if (-1 !== s.indexOf(H)) {
          var B = encodeURIComponent(H);B === H && (B = escape(H)), s = s.split(H).join(B);
        }
      }var z = s.indexOf("#");-1 !== z && (this.hash = s.substr(z), s = s.slice(0, z));var G = s.indexOf("?");if (-1 !== G ? (this.search = s.substr(G), this.query = s.substr(G + 1), n && (this.query = j.parse(this.query)), s = s.slice(0, G)) : n && (this.search = "", this.query = {}), s && (this.pathname = s), x[d] && this.hostname && !this.pathname && (this.pathname = "/"), this.pathname || this.search) {
        var V = this.pathname || "",
            W = this.search || "";this.path = V + W;
      }return this.href = this.format(), this;
    }, r.prototype.format = function () {
      var e = this.auth || "";e && (e = encodeURIComponent(e), e = e.replace(/%3A/i, ":"), e += "@");var n = this.protocol || "",
          t = this.pathname || "",
          r = this.hash || "",
          o = !1,
          i = "";this.host ? o = e + this.host : this.hostname && (o = e + (-1 === this.hostname.indexOf(":") ? this.hostname : "[" + this.hostname + "]"), this.port && (o += ":" + this.port)), this.query && c.isObject(this.query) && Object.keys(this.query).length && (i = j.stringify(this.query));var a = this.search || i && "?" + i || "";return n && ":" !== n.substr(-1) && (n += ":"), this.slashes || (!n || x[n]) && !1 !== o ? (o = "//" + (o || ""), t && "/" !== t.charAt(0) && (t = "/" + t)) : o || (o = ""), r && "#" !== r.charAt(0) && (r = "#" + r), a && "?" !== a.charAt(0) && (a = "?" + a), t = t.replace(/[?#]/g, function (e) {
        return encodeURIComponent(e);
      }), a = a.replace("#", "%23"), n + o + t + a + r;
    }, r.prototype.resolve = function (e) {
      return this.resolveObject(o(e, !1, !0)).format();
    }, r.prototype.resolveObject = function (e) {
      if (c.isString(e)) {
        var n = new r();n.parse(e, !1, !0), e = n;
      }for (var t = new r(), o = Object.keys(this), i = 0; i < o.length; i++) {
        var a = o[i];t[a] = this[a];
      }if (t.hash = e.hash, "" === e.href) return t.href = t.format(), t;if (e.slashes && !e.protocol) {
        for (var s = Object.keys(e), u = 0; u < s.length; u++) {
          var l = s[u];"protocol" !== l && (t[l] = e[l]);
        }return x[t.protocol] && t.hostname && !t.pathname && (t.path = t.pathname = "/"), t.href = t.format(), t;
      }if (e.protocol && e.protocol !== t.protocol) {
        if (!x[e.protocol]) {
          for (var p = Object.keys(e), f = 0; f < p.length; f++) {
            var h = p[f];t[h] = e[h];
          }return t.href = t.format(), t;
        }if (t.protocol = e.protocol, e.host || k[e.protocol]) t.pathname = e.pathname;else {
          for (var d = (e.pathname || "").split("/"); d.length && !(e.host = d.shift());) {}e.host || (e.host = ""), e.hostname || (e.hostname = ""), "" !== d[0] && d.unshift(""), d.length < 2 && d.unshift(""), t.pathname = d.join("/");
        }if (t.search = e.search, t.query = e.query, t.host = e.host || "", t.auth = e.auth, t.hostname = e.hostname || e.host, t.port = e.port, t.pathname || t.search) {
          var m = t.pathname || "",
              _ = t.search || "";t.path = m + _;
        }return t.slashes = t.slashes || e.slashes, t.href = t.format(), t;
      }var v = t.pathname && "/" === t.pathname.charAt(0),
          y = e.host || e.pathname && "/" === e.pathname.charAt(0),
          b = y || v || t.host && e.pathname,
          g = b,
          j = t.pathname && t.pathname.split("/") || [],
          d = e.pathname && e.pathname.split("/") || [],
          w = t.protocol && !x[t.protocol];if (w && (t.hostname = "", t.port = null, t.host && ("" === j[0] ? j[0] = t.host : j.unshift(t.host)), t.host = "", e.protocol && (e.hostname = null, e.port = null, e.host && ("" === d[0] ? d[0] = e.host : d.unshift(e.host)), e.host = null), b = b && ("" === d[0] || "" === j[0])), y) t.host = e.host || "" === e.host ? e.host : t.host, t.hostname = e.hostname || "" === e.hostname ? e.hostname : t.hostname, t.search = e.search, t.query = e.query, j = d;else if (d.length) j || (j = []), j.pop(), j = j.concat(d), t.search = e.search, t.query = e.query;else if (!c.isNullOrUndefined(e.search)) {
        if (w) {
          t.hostname = t.host = j.shift();var T = !!(t.host && t.host.indexOf("@") > 0) && t.host.split("@");T && (t.auth = T.shift(), t.host = t.hostname = T.shift());
        }return t.search = e.search, t.query = e.query, c.isNull(t.pathname) && c.isNull(t.search) || (t.path = (t.pathname ? t.pathname : "") + (t.search ? t.search : "")), t.href = t.format(), t;
      }if (!j.length) return t.pathname = null, t.search ? t.path = "/" + t.search : t.path = null, t.href = t.format(), t;for (var P = j.slice(-1)[0], C = (t.host || e.host || j.length > 1) && ("." === P || ".." === P) || "" === P, E = 0, A = j.length; A >= 0; A--) {
        P = j[A], "." === P ? j.splice(A, 1) : ".." === P ? (j.splice(A, 1), E++) : E && (j.splice(A, 1), E--);
      }if (!b && !g) for (; E--; E) {
        j.unshift("..");
      }!b || "" === j[0] || j[0] && "/" === j[0].charAt(0) || j.unshift(""), C && "/" !== j.join("/").substr(-1) && j.push("");var S = "" === j[0] || j[0] && "/" === j[0].charAt(0);if (w) {
        t.hostname = t.host = S ? "" : j.length ? j.shift() : "";var T = !!(t.host && t.host.indexOf("@") > 0) && t.host.split("@");T && (t.auth = T.shift(), t.host = t.hostname = T.shift());
      }return b = b || t.host && j.length, b && !S && j.unshift(""), j.length ? t.pathname = j.join("/") : (t.pathname = null, t.path = null), c.isNull(t.pathname) && c.isNull(t.search) || (t.path = (t.pathname ? t.pathname : "") + (t.search ? t.search : "")), t.auth = e.auth || t.auth, t.slashes = t.slashes || e.slashes, t.href = t.format(), t;
    }, r.prototype.parseHost = function () {
      var e = this.host,
          n = p.exec(e);n && (n = n[0], ":" !== n && (this.port = n.substr(1)), e = e.substr(0, e.length - n.length)), e && (this.hostname = e);
    };
  }, function (e, n, t) {
    (function (e, r) {
      var o;!function (i) {
        function a(e) {
          throw new RangeError(O[e]);
        }function s(e, n) {
          for (var t = e.length, r = []; t--;) {
            r[t] = n(e[t]);
          }return r;
        }function u(e, n) {
          var t = e.split("@"),
              r = "";return t.length > 1 && (r = t[0] + "@", e = t[1]), e = e.replace(F, "."), r + s(e.split("."), n).join(".");
        }function c(e) {
          for (var n, t, r = [], o = 0, i = e.length; o < i;) {
            n = e.charCodeAt(o++), n >= 55296 && n <= 56319 && o < i ? (t = e.charCodeAt(o++), 56320 == (64512 & t) ? r.push(((1023 & n) << 10) + (1023 & t) + 65536) : (r.push(n), o--)) : r.push(n);
          }return r;
        }function l(e) {
          return s(e, function (e) {
            var n = "";return e > 65535 && (e -= 65536, n += q(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), n += q(e);
          }).join("");
        }function p(e) {
          return e - 48 < 10 ? e - 22 : e - 65 < 26 ? e - 65 : e - 97 < 26 ? e - 97 : k;
        }function f(e, n) {
          return e + 22 + 75 * (e < 26) - ((0 != n) << 5);
        }function h(e, n, t) {
          var r = 0;for (e = t ? I(e / T) : e >> 1, e += I(e / n); e > R * j >> 1; r += k) {
            e = I(e / R);
          }return I(r + (R + 1) * e / (e + w));
        }function d(e) {
          var n,
              t,
              r,
              o,
              i,
              s,
              u,
              c,
              f,
              d,
              m = [],
              _ = e.length,
              v = 0,
              y = C,
              b = P;for (t = e.lastIndexOf(E), t < 0 && (t = 0), r = 0; r < t; ++r) {
            e.charCodeAt(r) >= 128 && a("not-basic"), m.push(e.charCodeAt(r));
          }for (o = t > 0 ? t + 1 : 0; o < _;) {
            for (i = v, s = 1, u = k; o >= _ && a("invalid-input"), c = p(e.charCodeAt(o++)), (c >= k || c > I((g - v) / s)) && a("overflow"), v += c * s, f = u <= b ? x : u >= b + j ? j : u - b, !(c < f); u += k) {
              d = k - f, s > I(g / d) && a("overflow"), s *= d;
            }n = m.length + 1, b = h(v - i, n, 0 == i), I(v / n) > g - y && a("overflow"), y += I(v / n), v %= n, m.splice(v++, 0, y);
          }return l(m);
        }function m(e) {
          var n,
              t,
              r,
              o,
              i,
              s,
              u,
              l,
              p,
              d,
              m,
              _,
              v,
              y,
              b,
              w = [];for (e = c(e), _ = e.length, n = C, t = 0, i = P, s = 0; s < _; ++s) {
            (m = e[s]) < 128 && w.push(q(m));
          }for (r = o = w.length, o && w.push(E); r < _;) {
            for (u = g, s = 0; s < _; ++s) {
              (m = e[s]) >= n && m < u && (u = m);
            }for (v = r + 1, u - n > I((g - t) / v) && a("overflow"), t += (u - n) * v, n = u, s = 0; s < _; ++s) {
              if (m = e[s], m < n && ++t > g && a("overflow"), m == n) {
                for (l = t, p = k; d = p <= i ? x : p >= i + j ? j : p - i, !(l < d); p += k) {
                  b = l - d, y = k - d, w.push(q(f(d + b % y, 0))), l = I(b / y);
                }w.push(q(f(l, 0))), i = h(t, v, r == o), t = 0, ++r;
              }
            }++t, ++n;
          }return w.join("");
        }function _(e) {
          return u(e, function (e) {
            return A.test(e) ? d(e.slice(4).toLowerCase()) : e;
          });
        }function v(e) {
          return u(e, function (e) {
            return S.test(e) ? "xn--" + m(e) : e;
          });
        }var y = ("object" == (typeof n === "undefined" ? "undefined" : _typeof(n)) && n && n.nodeType, "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && e && e.nodeType, "object" == (typeof r === "undefined" ? "undefined" : _typeof(r)) && r);var b,
            g = 2147483647,
            k = 36,
            x = 1,
            j = 26,
            w = 38,
            T = 700,
            P = 72,
            C = 128,
            E = "-",
            A = /^xn--/,
            S = /[^\x20-\x7E]/,
            F = /[\x2E\u3002\uFF0E\uFF61]/g,
            O = { overflow: "Overflow: input needs wider integers to process", "not-basic": "Illegal input >= 0x80 (not a basic code point)", "invalid-input": "Invalid input" },
            R = k - x,
            I = Math.floor,
            q = String.fromCharCode;b = { version: "1.4.1", ucs2: { decode: c, encode: l }, decode: d, encode: m, toASCII: v, toUnicode: _ }, void 0 !== (o = function () {
          return b;
        }.call(n, t, n, e)) && (e.exports = o);
      }();
    }).call(n, t(15)(e), t(14));
  }, function (e, n, t) {
    "use strict";
    e.exports = { isString: function isString(e) {
        return "string" == typeof e;
      }, isObject: function isObject(e) {
        return "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && null !== e;
      }, isNull: function isNull(e) {
        return null === e;
      }, isNullOrUndefined: function isNullOrUndefined(e) {
        return null == e;
      } };
  }, function (e, n, t) {
    "use strict";
    n.decode = n.parse = t(191), n.encode = n.stringify = t(192);
  }, function (e, n, t) {
    "use strict";
    function r(e, n) {
      return Object.prototype.hasOwnProperty.call(e, n);
    }e.exports = function (e, n, t, i) {
      n = n || "&", t = t || "=";var a = {};if ("string" != typeof e || 0 === e.length) return a;var s = /\+/g;e = e.split(n);var u = 1e3;i && "number" == typeof i.maxKeys && (u = i.maxKeys);var c = e.length;u > 0 && c > u && (c = u);for (var l = 0; l < c; ++l) {
        var p,
            f,
            h,
            d,
            m = e[l].replace(s, "%20"),
            _ = m.indexOf(t);_ >= 0 ? (p = m.substr(0, _), f = m.substr(_ + 1)) : (p = m, f = ""), h = decodeURIComponent(p), d = decodeURIComponent(f), r(a, h) ? o(a[h]) ? a[h].push(d) : a[h] = [a[h], d] : a[h] = d;
      }return a;
    };var o = Array.isArray || function (e) {
      return "[object Array]" === Object.prototype.toString.call(e);
    };
  }, function (e, n, t) {
    "use strict";
    function r(e, n) {
      if (e.map) return e.map(n);for (var t = [], r = 0; r < e.length; r++) {
        t.push(n(e[r], r));
      }return t;
    }var o = function o(e) {
      switch (typeof e === "undefined" ? "undefined" : _typeof(e)) {case "string":
          return e;case "boolean":
          return e ? "true" : "false";case "number":
          return isFinite(e) ? e : "";default:
          return "";}
    };e.exports = function (e, n, t, s) {
      return n = n || "&", t = t || "=", null === e && (e = void 0), "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) ? r(a(e), function (a) {
        var s = encodeURIComponent(o(a)) + t;return i(e[a]) ? r(e[a], function (e) {
          return s + encodeURIComponent(o(e));
        }).join(n) : s + encodeURIComponent(o(e[a]));
      }).join(n) : s ? encodeURIComponent(o(s)) + t + encodeURIComponent(o(e)) : "";
    };var i = Array.isArray || function (e) {
      return "[object Array]" === Object.prototype.toString.call(e);
    },
        a = Object.keys || function (e) {
      var n = [];for (var t in e) {
        Object.prototype.hasOwnProperty.call(e, t) && n.push(t);
      }return n;
    };
  },, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = t(73),
        o = t(195);!function (e) {
      e.Vibrant = r, r.Quantizer.WebWorker = o.default;
    }("object" == (typeof window === "undefined" ? "undefined" : _typeof(window)) && window instanceof Window ? window : e.exports);
  }, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = t(196),
        o = function o(e, n) {
      return r.default.instance.quantize(e, n);
    };n.default = o;
  }, function (e, n, t) {
    "use strict";
    Object.defineProperty(n, "__esModule", { value: !0 });var r = t(20),
        o = t(197),
        i = t(208),
        a = t(10),
        s = t(215),
        u = function () {
      function e() {
        this._workers = [], this._queue = [], this._executing = {};
      }return Object.defineProperty(e, "instance", { get: function get() {
          return this._instance || (this._instance = new e()), this._instance;
        }, enumerable: !0, configurable: !0 }), e.prototype._findIdleWorker = function () {
        var e;return 0 === this._workers.length || this._workers.length < 5 ? (e = new s(), e.id = this._workers.length, e.idle = !0, this._workers.push(e), e.onmessage = this._onMessage.bind(this, e.id)) : e = i(this._workers, "idle"), e;
      }, e.prototype._enqueue = function (n, t) {
        var r = a.defer(),
            o = { id: e._task_id++, payload: { pixels: n, opts: t }, deferred: r };return this._queue.push(o), this._tryDequeue(), r.promise;
      }, e.prototype._tryDequeue = function () {
        if (!(this._queue.length <= 0)) {
          var e = this._findIdleWorker();if (e) {
            var n = this._queue.shift();this._executing[n.id] = n;var t = o(n, "deferred");t.payload.opts = o(t.payload.opts, "ImageClass", "combinedFilter", "filters", "generator", "quantizer"), e.postMessage(t), e.idle = !1;
          }
        }
      }, e.prototype._onMessage = function (e, n) {
        var t = n.data;if (t) {
          var o = t.id,
              i = this._executing[o];switch (this._executing[o] = void 0, t.type) {case "return":
              i.deferred.resolve(t.payload.map(function (e) {
                var n = e._rgb,
                    t = e._population;return new r.Swatch(n, t);
              }));break;case "error":
              i.deferred.reject(new Error(t.payload));}this._workers[e].idle = !0, this._tryDequeue();
        }
      }, e.prototype.quantize = function (e, n) {
        return this._enqueue(e, n);
      }, e._task_id = 0, e;
    }();n.default = u;
  }, function (e, n, t) {
    var r = t(68),
        o = t(71),
        i = t(198),
        a = t(30),
        s = t(8),
        u = t(202),
        c = t(204),
        l = t(72),
        p = c(function (e, n) {
      var t = {};if (null == e) return t;var c = !1;n = r(n, function (n) {
        return n = a(n, e), c || (c = n.length > 1), n;
      }), s(e, l(e), t), c && (t = o(t, 7, u));for (var p = n.length; p--;) {
        i(t, n[p]);
      }return t;
    });e.exports = p;
  }, function (e, n, t) {
    function r(e, n) {
      return n = o(n, e), null == (e = a(e, n)) || delete e[s(i(n))];
    }var o = t(30),
        i = t(199),
        a = t(200),
        s = t(12);e.exports = r;
  }, function (e, n) {
    function t(e) {
      var n = null == e ? 0 : e.length;return n ? e[n - 1] : void 0;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e, n) {
      return n.length < 2 ? e : o(e, i(n, 0, -1));
    }var o = t(37),
        i = t(201);e.exports = r;
  }, function (e, n) {
    function t(e, n, t) {
      var r = -1,
          o = e.length;n < 0 && (n = -n > o ? 0 : o + n), t = t > o ? o : t, t < 0 && (t += o), o = n > t ? 0 : t - n >>> 0, n >>>= 0;for (var i = Array(o); ++r < o;) {
        i[r] = e[r + n];
      }return i;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      return o(e) ? void 0 : e;
    }var o = t(203);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      if (!a(e) || o(e) != s) return !1;var n = i(e);if (null === n) return !0;var t = p.call(n, "constructor") && n.constructor;return "function" == typeof t && t instanceof t && l.call(t) == f;
    }var o = t(5),
        i = t(38),
        a = t(7),
        s = "[object Object]",
        u = Function.prototype,
        c = Object.prototype,
        l = u.toString,
        p = c.hasOwnProperty,
        f = l.call(Object);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return a(i(e, void 0, o), e + "");
    }var o = t(205),
        i = t(69),
        a = t(70);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return (null == e ? 0 : e.length) ? o(e, 1) : [];
    }var o = t(206);e.exports = r;
  }, function (e, n, t) {
    function r(e, n, t, a, s) {
      var u = -1,
          c = e.length;for (t || (t = i), s || (s = []); ++u < c;) {
        var l = e[u];n > 0 && t(l) ? n > 1 ? r(l, n - 1, t, a, s) : o(s, l) : a || (s[s.length] = l);
      }return s;
    }var o = t(36),
        i = t(207);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      return a(e) || i(e) || !!(s && e && e[s]);
    }var o = t(6),
        i = t(35),
        a = t(0),
        s = o ? o.isConcatSpreadable : void 0;e.exports = r;
  }, function (e, n, t) {
    var r = t(209),
        o = t(210),
        i = r(o);e.exports = i;
  }, function (e, n, t) {
    function r(e) {
      return function (n, t, r) {
        var s = Object(n);if (!i(n)) {
          var u = o(t, 3);n = a(n), t = function t(e) {
            return u(s[e], e, s);
          };
        }var c = e(n, t, r);return c > -1 ? s[u ? n[c] : c] : void 0;
      };
    }var o = t(47),
        i = t(11),
        a = t(4);e.exports = r;
  }, function (e, n, t) {
    function r(e, n, t) {
      var r = null == e ? 0 : e.length;if (!r) return -1;var u = null == t ? 0 : a(t);return u < 0 && (u = s(r + u, 0)), o(e, i(n, 3), u);
    }var o = t(211),
        i = t(47),
        a = t(212),
        s = Math.max;e.exports = r;
  }, function (e, n) {
    function t(e, n, t, r) {
      for (var o = e.length, i = t + (r ? 1 : -1); r ? i-- : ++i < o;) {
        if (n(e[i], i, e)) return i;
      }return -1;
    }e.exports = t;
  }, function (e, n, t) {
    function r(e) {
      var n = o(e),
          t = n % 1;return n === n ? t ? n - t : n : 0;
    }var o = t(213);e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      if (!e) return 0 === e ? e : 0;if ((e = o(e)) === i || e === -i) {
        return (e < 0 ? -1 : 1) * a;
      }return e === e ? e : 0;
    }var o = t(214),
        i = 1 / 0,
        a = 1.7976931348623157e308;e.exports = r;
  }, function (e, n, t) {
    function r(e) {
      if ("number" == typeof e) return e;if (i(e)) return a;if (o(e)) {
        var n = "function" == typeof e.valueOf ? e.valueOf() : e;e = o(n) ? n + "" : n;
      }if ("string" != typeof e) return 0 === e ? e : +e;e = e.replace(s, "");var t = c.test(e);return t || l.test(e) ? p(e.slice(2), t ? 2 : 8) : u.test(e) ? a : +e;
    }var o = t(2),
        i = t(21),
        a = NaN,
        s = /^\s+|\s+$/g,
        u = /^[-+]0x[0-9a-f]+$/i,
        c = /^0b[01]+$/i,
        l = /^0o[0-7]+$/i,
        p = parseInt;e.exports = r;
  }, function (e, n, t) {
    e.exports = function () {
      return t(216)("/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 39);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar freeGlobal = __webpack_require__(23);\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsNative = __webpack_require__(78),\n    getValue = __webpack_require__(81);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(5),\n    getRawTag = __webpack_require__(54),\n    objectToString = __webpack_require__(55);\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(0);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar listCacheClear = __webpack_require__(68),\n    listCacheDelete = __webpack_require__(69),\n    listCacheGet = __webpack_require__(70),\n    listCacheHas = __webpack_require__(71),\n    listCacheSet = __webpack_require__(72);\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar eq = __webpack_require__(31);\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(2);\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isKeyable = __webpack_require__(90);\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isSymbol = __webpack_require__(18);\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\n} catch(e) {\n\t// This works if the window reference is available\n\tif(typeof window === \"object\")\n\t\tg = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeKeys = __webpack_require__(51),\n    baseKeys = __webpack_require__(60),\n    isArrayLike = __webpack_require__(28);\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(2),\n    root = __webpack_require__(0);\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar mapCacheClear = __webpack_require__(82),\n    mapCacheDelete = __webpack_require__(89),\n    mapCacheGet = __webpack_require__(91),\n    mapCacheHas = __webpack_require__(92),\n    mapCacheSet = __webpack_require__(93);\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArray = __webpack_require__(1),\n    isSymbol = __webpack_require__(18);\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(3),\n    isObjectLike = __webpack_require__(4);\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Bluebird = __webpack_require__(42);\nexports.DELTAE94_DIFF_STATUS = {\n    NA: 0,\n    PERFECT: 1,\n    CLOSE: 2,\n    GOOD: 10,\n    SIMILAR: 50\n};\nexports.SIGBITS = 5;\nexports.RSHIFT = 8 - exports.SIGBITS;\nfunction defer() {\n    var resolve;\n    var reject;\n    var promise = new Bluebird(function (_resolve, _reject) {\n        resolve = _resolve;\n        reject = _reject;\n    });\n    return { resolve: resolve, reject: reject, promise: promise };\n}\nexports.defer = defer;\nfunction hexToRgb(hex) {\n    var m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n    return m === null ? null : [m[1], m[2], m[3]].map(function (s) { return parseInt(s, 16); });\n}\nexports.hexToRgb = hexToRgb;\nfunction rgbToHex(r, g, b) {\n    return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1, 7);\n}\nexports.rgbToHex = rgbToHex;\nfunction rgbToHsl(r, g, b) {\n    r /= 255;\n    g /= 255;\n    b /= 255;\n    var max = Math.max(r, g, b);\n    var min = Math.min(r, g, b);\n    var h;\n    var s;\n    var l = (max + min) / 2;\n    if (max === min) {\n        h = s = 0;\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch (max) {\n            case r:\n                h = (g - b) / d + (g < b ? 6 : 0);\n                break;\n            case g:\n                h = (b - r) / d + 2;\n                break;\n            case b:\n                h = (r - g) / d + 4;\n                break;\n        }\n        h /= 6;\n    }\n    return [h, s, l];\n}\nexports.rgbToHsl = rgbToHsl;\nfunction hslToRgb(h, s, l) {\n    var r;\n    var g;\n    var b;\n    function hue2rgb(p, q, t) {\n        if (t < 0)\n            t += 1;\n        if (t > 1)\n            t -= 1;\n        if (t < 1 / 6)\n            return p + (q - p) * 6 * t;\n        if (t < 1 / 2)\n            return q;\n        if (t < 2 / 3)\n            return p + (q - p) * (2 / 3 - t) * 6;\n        return p;\n    }\n    if (s === 0) {\n        r = g = b = l;\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - (l * s);\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1 / 3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - (1 / 3));\n    }\n    return [\n        r * 255,\n        g * 255,\n        b * 255\n    ];\n}\nexports.hslToRgb = hslToRgb;\nfunction rgbToXyz(r, g, b) {\n    r /= 255;\n    g /= 255;\n    b /= 255;\n    r = r > 0.04045 ? Math.pow((r + 0.005) / 1.055, 2.4) : r / 12.92;\n    g = g > 0.04045 ? Math.pow((g + 0.005) / 1.055, 2.4) : g / 12.92;\n    b = b > 0.04045 ? Math.pow((b + 0.005) / 1.055, 2.4) : b / 12.92;\n    r *= 100;\n    g *= 100;\n    b *= 100;\n    var x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n    var y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n    var z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n    return [x, y, z];\n}\nexports.rgbToXyz = rgbToXyz;\nfunction xyzToCIELab(x, y, z) {\n    var REF_X = 95.047;\n    var REF_Y = 100;\n    var REF_Z = 108.883;\n    x /= REF_X;\n    y /= REF_Y;\n    z /= REF_Z;\n    x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n    y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n    z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n    var L = 116 * y - 16;\n    var a = 500 * (x - y);\n    var b = 200 * (y - z);\n    return [L, a, b];\n}\nexports.xyzToCIELab = xyzToCIELab;\nfunction rgbToCIELab(r, g, b) {\n    var _a = rgbToXyz(r, g, b), x = _a[0], y = _a[1], z = _a[2];\n    return xyzToCIELab(x, y, z);\n}\nexports.rgbToCIELab = rgbToCIELab;\nfunction deltaE94(lab1, lab2) {\n    var WEIGHT_L = 1;\n    var WEIGHT_C = 1;\n    var WEIGHT_H = 1;\n    var L1 = lab1[0], a1 = lab1[1], b1 = lab1[2];\n    var L2 = lab2[0], a2 = lab2[1], b2 = lab2[2];\n    var dL = L1 - L2;\n    var da = a1 - a2;\n    var db = b1 - b2;\n    var xC1 = Math.sqrt(a1 * a1 + b1 * b1);\n    var xC2 = Math.sqrt(a2 * a2 + b2 * b2);\n    var xDL = L2 - L1;\n    var xDC = xC2 - xC1;\n    var xDE = Math.sqrt(dL * dL + da * da + db * db);\n    var xDH = (Math.sqrt(xDE) > Math.sqrt(Math.abs(xDL)) + Math.sqrt(Math.abs(xDC)))\n        ? Math.sqrt(xDE * xDE - xDL * xDL - xDC * xDC)\n        : 0;\n    var xSC = 1 + 0.045 * xC1;\n    var xSH = 1 + 0.015 * xC1;\n    xDL /= WEIGHT_L;\n    xDC /= WEIGHT_C * xSC;\n    xDH /= WEIGHT_H * xSH;\n    return Math.sqrt(xDL * xDL + xDC * xDC + xDH * xDH);\n}\nexports.deltaE94 = deltaE94;\nfunction rgbDiff(rgb1, rgb2) {\n    var lab1 = rgbToCIELab.apply(undefined, rgb1);\n    var lab2 = rgbToCIELab.apply(undefined, rgb2);\n    return deltaE94(lab1, lab2);\n}\nexports.rgbDiff = rgbDiff;\nfunction hexDiff(hex1, hex2) {\n    var rgb1 = hexToRgb(hex1);\n    var rgb2 = hexToRgb(hex2);\n    return rgbDiff(rgb1, rgb2);\n}\nexports.hexDiff = hexDiff;\nfunction getColorDiffStatus(d) {\n    if (d < exports.DELTAE94_DIFF_STATUS.NA)\n        return 'N/A';\n    // Not perceptible by human eyes\n    if (d <= exports.DELTAE94_DIFF_STATUS.PERFECT)\n        return 'Perfect';\n    // Perceptible through close observation\n    if (d <= exports.DELTAE94_DIFF_STATUS.CLOSE)\n        return 'Close';\n    // Perceptible at a glance\n    if (d <= exports.DELTAE94_DIFF_STATUS.GOOD)\n        return 'Good';\n    // Colors are more similar than opposite\n    if (d < exports.DELTAE94_DIFF_STATUS.SIMILAR)\n        return 'Similar';\n    return 'Wrong';\n}\nexports.getColorDiffStatus = getColorDiffStatus;\nfunction getColorIndex(r, g, b) {\n    return (r << (2 * exports.SIGBITS)) + (g << exports.SIGBITS) + b;\n}\nexports.getColorIndex = getColorIndex;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsArguments = __webpack_require__(53),\n    isObjectLike = __webpack_require__(4);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(0),\n    stubFalse = __webpack_require__(56);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(25)(module)))\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\n\tif(!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif(!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsTypedArray = __webpack_require__(57),\n    baseUnary = __webpack_require__(58),\n    nodeUtil = __webpack_require__(59);\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(29),\n    isLength = __webpack_require__(13);\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(3),\n    isObject = __webpack_require__(14);\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ListCache = __webpack_require__(6),\n    stackClear = __webpack_require__(73),\n    stackDelete = __webpack_require__(74),\n    stackGet = __webpack_require__(75),\n    stackHas = __webpack_require__(76),\n    stackSet = __webpack_require__(77);\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports) {\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsEqualDeep = __webpack_require__(94),\n    isObjectLike = __webpack_require__(4);\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar SetCache = __webpack_require__(95),\n    arraySome = __webpack_require__(98),\n    cacheHas = __webpack_require__(99);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(14);\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar castPath = __webpack_require__(38),\n    toKey = __webpack_require__(10);\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArray = __webpack_require__(1),\n    isKey = __webpack_require__(17),\n    stringToPath = __webpack_require__(118),\n    toString = __webpack_require__(121);\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar mmcq_1 = __webpack_require__(40);\nself.onmessage = function (event) {\n    var data = event.data;\n    var id = data.id, payload = data.payload;\n    var response;\n    try {\n        var swatches = mmcq_1.default(payload.pixels, payload.opts);\n        response = {\n            id: id,\n            type: 'return',\n            payload: swatches\n        };\n    }\n    catch (e) {\n        response = {\n            id: id,\n            type: 'error',\n            payload: e.message\n        };\n    }\n    self.postMessage(response);\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = __webpack_require__(41);\nvar vbox_1 = __webpack_require__(131);\nvar pqueue_1 = __webpack_require__(132);\nvar fractByPopulations = 0.75;\nfunction _splitBoxes(pq, target) {\n    var lastSize = pq.size();\n    while (pq.size() < target) {\n        var vbox = pq.pop();\n        if (vbox && vbox.count() > 0) {\n            var _a = vbox.split(), vbox1 = _a[0], vbox2 = _a[1];\n            pq.push(vbox1);\n            if (vbox2 && vbox2.count() > 0)\n                pq.push(vbox2);\n            // No more new boxes, converged\n            if (pq.size() === lastSize) {\n                break;\n            }\n            else {\n                lastSize = pq.size();\n            }\n        }\n        else {\n            break;\n        }\n    }\n}\nvar MMCQ = function (pixels, opts) {\n    if (pixels.length === 0 || opts.colorCount < 2 || opts.colorCount > 256) {\n        throw new Error('Wrong MMCQ parameters');\n    }\n    var vbox = vbox_1.default.build(pixels);\n    var hist = vbox.hist;\n    var colorCount = Object.keys(hist).length;\n    var pq = new pqueue_1.default(function (a, b) { return a.count() - b.count(); });\n    pq.push(vbox);\n    // first set of colors, sorted by population\n    _splitBoxes(pq, fractByPopulations * opts.colorCount);\n    // Re-order\n    var pq2 = new pqueue_1.default(function (a, b) { return a.count() * a.volume() - b.count() * b.volume(); });\n    pq2.contents = pq.contents;\n    // next set - generate the median cuts using the (npix * vol) sorting.\n    _splitBoxes(pq2, opts.colorCount - pq2.size());\n    // calculate the actual colors\n    return generateSwatches(pq2);\n};\nfunction generateSwatches(pq) {\n    var swatches = [];\n    while (pq.size()) {\n        var v = pq.pop();\n        var color = v.avg();\n        var r = color[0], g = color[1], b = color[2];\n        swatches.push(new color_1.Swatch(color, v.count()));\n    }\n    return swatches;\n}\nexports.default = MMCQ;\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(19);\nvar filter = __webpack_require__(45);\nvar Swatch = /** @class */ (function () {\n    function Swatch(rgb, population) {\n        this._rgb = rgb;\n        this._population = population;\n    }\n    Swatch.applyFilter = function (colors, f) {\n        return typeof f === 'function'\n            ? filter(colors, function (_a) {\n                var r = _a.r, g = _a.g, b = _a.b;\n                return f(r, g, b, 255);\n            })\n            : colors;\n    };\n    Object.defineProperty(Swatch.prototype, \"r\", {\n        get: function () { return this._rgb[0]; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Swatch.prototype, \"g\", {\n        get: function () { return this._rgb[1]; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Swatch.prototype, \"b\", {\n        get: function () { return this._rgb[2]; },\n        enumerable: true,\n        configurable: true\n    });\n    Swatch.prototype.getRgb = function () { return this._rgb; };\n    Swatch.prototype.getHsl = function () {\n        if (!this._hsl) {\n            var _a = this._rgb, r = _a[0], g = _a[1], b = _a[2];\n            this._hsl = util_1.rgbToHsl(r, g, b);\n        }\n        return this._hsl;\n    };\n    Swatch.prototype.getPopulation = function () { return this._population; };\n    Swatch.prototype.getHex = function () {\n        if (!this._hex) {\n            var _a = this._rgb, r = _a[0], g = _a[1], b = _a[2];\n            this._hex = util_1.rgbToHex(r, g, b);\n        }\n        return this._hex;\n    };\n    Swatch.prototype.getYiq = function () {\n        if (!this._yiq) {\n            var rgb = this._rgb;\n            this._yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n        }\n        return this._yiq;\n    };\n    Swatch.prototype.getTitleTextColor = function () {\n        return this.getYiq() < 200 ? '#fff' : '#000';\n    };\n    Swatch.prototype.getBodyTextColor = function () {\n        return this.getYiq() < 150 ? '#fff' : '#000';\n    };\n    return Swatch;\n}());\nexports.Swatch = Swatch;\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, global, setImmediate) {/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2017 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.1\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(true)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n    var ret = new SomePromiseArray(promises);\n    var promise = ret.promise();\n    ret.setHowMany(1);\n    ret.setUnwrap();\n    ret.init();\n    return promise;\n}\n\nPromise.any = function (promises) {\n    return any(promises);\n};\n\nPromise.prototype.any = function () {\n    return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n    this._customScheduler = false;\n    this._isTickUsed = false;\n    this._lateQueue = new Queue(16);\n    this._normalQueue = new Queue(16);\n    this._haveDrainedQueues = false;\n    this._trampolineEnabled = true;\n    var self = this;\n    this.drainQueues = function () {\n        self._drainQueues();\n    };\n    this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n    var prev = this._schedule;\n    this._schedule = fn;\n    this._customScheduler = true;\n    return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n    return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n    this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n    if (util.hasDevTools) {\n        this._trampolineEnabled = false;\n    }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n    return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n    if (isNode) {\n        process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n            \"\\n\");\n        process.exit(2);\n    } else {\n        this.throwLater(e);\n    }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n    if (arguments.length === 1) {\n        arg = fn;\n        fn = function () { throw arg; };\n    }\n    if (typeof setTimeout !== \"undefined\") {\n        setTimeout(function() {\n            fn(arg);\n        }, 0);\n    } else try {\n        this._schedule(function() {\n            fn(arg);\n        });\n    } catch (e) {\n        throw new Error(\"No async scheduler available\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n    this._lateQueue.push(fn, receiver, arg);\n    this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n    this._normalQueue.push(fn, receiver, arg);\n    this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n    this._normalQueue._pushOne(promise);\n    this._queueTick();\n}\n\nif (!util.hasDevTools) {\n    Async.prototype.invokeLater = AsyncInvokeLater;\n    Async.prototype.invoke = AsyncInvoke;\n    Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n    Async.prototype.invokeLater = function (fn, receiver, arg) {\n        if (this._trampolineEnabled) {\n            AsyncInvokeLater.call(this, fn, receiver, arg);\n        } else {\n            this._schedule(function() {\n                setTimeout(function() {\n                    fn.call(receiver, arg);\n                }, 100);\n            });\n        }\n    };\n\n    Async.prototype.invoke = function (fn, receiver, arg) {\n        if (this._trampolineEnabled) {\n            AsyncInvoke.call(this, fn, receiver, arg);\n        } else {\n            this._schedule(function() {\n                fn.call(receiver, arg);\n            });\n        }\n    };\n\n    Async.prototype.settlePromises = function(promise) {\n        if (this._trampolineEnabled) {\n            AsyncSettlePromises.call(this, promise);\n        } else {\n            this._schedule(function() {\n                promise._settlePromises();\n            });\n        }\n    };\n}\n\nAsync.prototype._drainQueue = function(queue) {\n    while (queue.length() > 0) {\n        var fn = queue.shift();\n        if (typeof fn !== \"function\") {\n            fn._settlePromises();\n            continue;\n        }\n        var receiver = queue.shift();\n        var arg = queue.shift();\n        fn.call(receiver, arg);\n    }\n};\n\nAsync.prototype._drainQueues = function () {\n    this._drainQueue(this._normalQueue);\n    this._reset();\n    this._haveDrainedQueues = true;\n    this._drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n    if (!this._isTickUsed) {\n        this._isTickUsed = true;\n        this._schedule(this.drainQueues);\n    }\n};\n\nAsync.prototype._reset = function () {\n    this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n    this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n    context.promiseRejectionQueued = true;\n    context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n    if (((this._bitField & 50397184) === 0)) {\n        this._resolveCallback(context.target);\n    }\n};\n\nvar bindingRejected = function(e, context) {\n    if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n    if (!calledBind) {\n        calledBind = true;\n        Promise.prototype._propagateFrom = debug.propagateFromFunction();\n        Promise.prototype._boundValue = debug.boundValueFunction();\n    }\n    var maybePromise = tryConvertToPromise(thisArg);\n    var ret = new Promise(INTERNAL);\n    ret._propagateFrom(this, 1);\n    var target = this._target();\n    ret._setBoundTo(maybePromise);\n    if (maybePromise instanceof Promise) {\n        var context = {\n            promiseRejectionQueued: false,\n            promise: ret,\n            target: target,\n            bindingPromise: maybePromise\n        };\n        target._then(INTERNAL, targetRejected, undefined, ret, context);\n        maybePromise._then(\n            bindingResolved, bindingRejected, undefined, ret, context);\n        ret._setOnCancel(maybePromise);\n    } else {\n        ret._resolveCallback(target);\n    }\n    return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n    if (obj !== undefined) {\n        this._bitField = this._bitField | 2097152;\n        this._boundTo = obj;\n    } else {\n        this._bitField = this._bitField & (~2097152);\n    }\n};\n\nPromise.prototype._isBound = function () {\n    return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n    return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n    try { if (Promise === bluebird) Promise = old; }\n    catch (e) {}\n    return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n    var callerCache = cr(null);\n    var getterCache = cr(null);\n    callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (false) {\nvar makeMethodCaller = function (methodName) {\n    return new Function(\"ensureMethod\", \"                                    \\n\\\n        return function(obj) {                                               \\n\\\n            'use strict'                                                     \\n\\\n            var len = this.length;                                           \\n\\\n            ensureMethod(obj, 'methodName');                                 \\n\\\n            switch(len) {                                                    \\n\\\n                case 1: return obj.methodName(this[0]);                      \\n\\\n                case 2: return obj.methodName(this[0], this[1]);             \\n\\\n                case 3: return obj.methodName(this[0], this[1], this[2]);    \\n\\\n                case 0: return obj.methodName();                             \\n\\\n                default:                                                     \\n\\\n                    return obj.methodName.apply(obj, this);                  \\n\\\n            }                                                                \\n\\\n        };                                                                   \\n\\\n        \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n    return new Function(\"obj\", \"                                             \\n\\\n        'use strict';                                                        \\n\\\n        return obj.propertyName;                                             \\n\\\n        \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n    var ret = cache[name];\n    if (typeof ret !== \"function\") {\n        if (!isIdentifier(name)) {\n            return null;\n        }\n        ret = compiler(name);\n        cache[name] = ret;\n        cache[\" size\"]++;\n        if (cache[\" size\"] > 512) {\n            var keys = Object.keys(cache);\n            for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n            cache[\" size\"] = keys.length - 256;\n        }\n    }\n    return ret;\n};\n\ngetMethodCaller = function(name) {\n    return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n    return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n    var fn;\n    if (obj != null) fn = obj[methodName];\n    if (typeof fn !== \"function\") {\n        var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n            util.toString(methodName) + \"'\";\n        throw new Promise.TypeError(message);\n    }\n    return fn;\n}\n\nfunction caller(obj) {\n    var methodName = this.pop();\n    var fn = ensureMethod(obj, methodName);\n    return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n    var args = [].slice.call(arguments, 1);;\n    if (false) {\n        if (canEvaluate) {\n            var maybeCaller = getMethodCaller(methodName);\n            if (maybeCaller !== null) {\n                return this._then(\n                    maybeCaller, undefined, undefined, args, undefined);\n            }\n        }\n    }\n    args.push(methodName);\n    return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n    return obj[this];\n}\nfunction indexedGetter(obj) {\n    var index = +this;\n    if (index < 0) index = Math.max(0, index + obj.length);\n    return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n    var isIndex = (typeof propertyName === \"number\");\n    var getter;\n    if (!isIndex) {\n        if (canEvaluate) {\n            var maybeGetter = getGetter(propertyName);\n            getter = maybeGetter !== null ? maybeGetter : namedGetter;\n        } else {\n            getter = namedGetter;\n        }\n    } else {\n        getter = indexedGetter;\n    }\n    return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n    if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n    var promise = this;\n    var child = promise;\n    while (promise._isCancellable()) {\n        if (!promise._cancelBy(child)) {\n            if (child._isFollowing()) {\n                child._followee().cancel();\n            } else {\n                child._cancelBranched();\n            }\n            break;\n        }\n\n        var parent = promise._cancellationParent;\n        if (parent == null || !parent._isCancellable()) {\n            if (promise._isFollowing()) {\n                promise._followee().cancel();\n            } else {\n                promise._cancelBranched();\n            }\n            break;\n        } else {\n            if (promise._isFollowing()) promise._followee().cancel();\n            promise._setWillBeCancelled();\n            child = promise;\n            promise = parent;\n        }\n    }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n    this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n    return this._branchesRemainingToCancel === undefined ||\n           this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n    if (canceller === this) {\n        this._branchesRemainingToCancel = 0;\n        this._invokeOnCancel();\n        return true;\n    } else {\n        this._branchHasCancelled();\n        if (this._enoughBranchesHaveCancelled()) {\n            this._invokeOnCancel();\n            return true;\n        }\n    }\n    return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n    if (this._enoughBranchesHaveCancelled()) {\n        this._cancel();\n    }\n};\n\nPromise.prototype._cancel = function() {\n    if (!this._isCancellable()) return;\n    this._setCancelled();\n    async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n    if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n    this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n    return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n    return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n    if (util.isArray(onCancelCallback)) {\n        for (var i = 0; i < onCancelCallback.length; ++i) {\n            this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n        }\n    } else if (onCancelCallback !== undefined) {\n        if (typeof onCancelCallback === \"function\") {\n            if (!internalOnly) {\n                var e = tryCatch(onCancelCallback).call(this._boundValue());\n                if (e === errorObj) {\n                    this._attachExtraTrace(e.e);\n                    async.throwLater(e.e);\n                }\n            }\n        } else {\n            onCancelCallback._resultCancelled(this);\n        }\n    }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n    var onCancelCallback = this._onCancel();\n    this._unsetOnCancel();\n    async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n    if (this._isCancellable()) {\n        this._doInvokeOnCancel(this._onCancel(), true);\n        this._unsetOnCancel();\n    }\n};\n\nPromise.prototype._resultCancelled = function() {\n    this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n    return function(e) {\n        var boundTo = promise._boundValue();\n        predicateLoop: for (var i = 0; i < instances.length; ++i) {\n            var item = instances[i];\n\n            if (item === Error ||\n                (item != null && item.prototype instanceof Error)) {\n                if (e instanceof item) {\n                    return tryCatch(cb).call(boundTo, e);\n                }\n            } else if (typeof item === \"function\") {\n                var matchesPredicate = tryCatch(item).call(boundTo, e);\n                if (matchesPredicate === errorObj) {\n                    return matchesPredicate;\n                } else if (matchesPredicate) {\n                    return tryCatch(cb).call(boundTo, e);\n                }\n            } else if (util.isObject(e)) {\n                var keys = getKeys(item);\n                for (var j = 0; j < keys.length; ++j) {\n                    var key = keys[j];\n                    if (item[key] != e[key]) {\n                        continue predicateLoop;\n                    }\n                }\n                return tryCatch(cb).call(boundTo, e);\n            }\n        }\n        return NEXT_FILTER;\n    };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n    this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n    if (this._trace !== undefined) {\n        this._trace._promiseCreated = null;\n        contextStack.push(this._trace);\n    }\n};\n\nContext.prototype._popContext = function () {\n    if (this._trace !== undefined) {\n        var trace = contextStack.pop();\n        var ret = trace._promiseCreated;\n        trace._promiseCreated = null;\n        return ret;\n    }\n    return null;\n};\n\nfunction createContext() {\n    if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n    var lastIndex = contextStack.length - 1;\n    if (lastIndex >= 0) {\n        return contextStack[lastIndex];\n    }\n    return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n    var Promise_pushContext = Promise.prototype._pushContext;\n    var Promise_popContext = Promise.prototype._popContext;\n    var Promise_PeekContext = Promise._peekContext;\n    var Promise_peekContext = Promise.prototype._peekContext;\n    var Promise_promiseCreated = Promise.prototype._promiseCreated;\n    Context.deactivateLongStackTraces = function() {\n        Promise.prototype._pushContext = Promise_pushContext;\n        Promise.prototype._popContext = Promise_popContext;\n        Promise._peekContext = Promise_PeekContext;\n        Promise.prototype._peekContext = Promise_peekContext;\n        Promise.prototype._promiseCreated = Promise_promiseCreated;\n        longStackTraces = false;\n    };\n    longStackTraces = true;\n    Promise.prototype._pushContext = Context.prototype._pushContext;\n    Promise.prototype._popContext = Context.prototype._popContext;\n    Promise._peekContext = Promise.prototype._peekContext = peekContext;\n    Promise.prototype._promiseCreated = function() {\n        var ctx = this._peekContext();\n        if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n    };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n    /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n                        (true ||\n                         util.env(\"BLUEBIRD_DEBUG\") ||\n                         util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n    (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n    (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n    (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n    var target = this._target();\n    target._bitField = ((target._bitField & (~1048576)) |\n                      524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n    if ((this._bitField & 524288) !== 0) return;\n    this._setRejectionIsUnhandled();\n    var self = this;\n    setTimeout(function() {\n        self._notifyUnhandledRejection();\n    }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n    fireRejectionEvent(\"rejectionHandled\",\n                                  unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n    this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n    return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n    if (this._isRejectionUnhandled()) {\n        var reason = this._settledValue();\n        this._setUnhandledRejectionIsNotified();\n        fireRejectionEvent(\"unhandledRejection\",\n                                      possiblyUnhandledRejection, reason, this);\n    }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n    this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n    this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n    return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n    this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n    this._bitField = this._bitField & (~1048576);\n    if (this._isUnhandledRejectionNotified()) {\n        this._unsetUnhandledRejectionIsNotified();\n        this._notifyUnhandledRejectionIsHandled();\n    }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n    return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n    return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n    var domain = getDomain();\n    possiblyUnhandledRejection =\n        typeof fn === \"function\" ? (domain === null ?\n                                            fn : util.domainBind(domain, fn))\n                                 : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n    var domain = getDomain();\n    unhandledRejectionHandled =\n        typeof fn === \"function\" ? (domain === null ?\n                                            fn : util.domainBind(domain, fn))\n                                 : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n    if (async.haveItemsQueued() && !config.longStackTraces) {\n        throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    if (!config.longStackTraces && longStackTracesIsSupported()) {\n        var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n        var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n        config.longStackTraces = true;\n        disableLongStackTraces = function() {\n            if (async.haveItemsQueued() && !config.longStackTraces) {\n                throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n            }\n            Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n            Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n            Context.deactivateLongStackTraces();\n            async.enableTrampoline();\n            config.longStackTraces = false;\n        };\n        Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n        Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n        Context.activateLongStackTraces();\n        async.disableTrampolineIfNecessary();\n    }\n};\n\nPromise.hasLongStackTraces = function () {\n    return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n    try {\n        if (typeof CustomEvent === \"function\") {\n            var event = new CustomEvent(\"CustomEvent\");\n            util.global.dispatchEvent(event);\n            return function(name, event) {\n                var domEvent = new CustomEvent(name.toLowerCase(), {\n                    detail: event,\n                    cancelable: true\n                });\n                return !util.global.dispatchEvent(domEvent);\n            };\n        } else if (typeof Event === \"function\") {\n            var event = new Event(\"CustomEvent\");\n            util.global.dispatchEvent(event);\n            return function(name, event) {\n                var domEvent = new Event(name.toLowerCase(), {\n                    cancelable: true\n                });\n                domEvent.detail = event;\n                return !util.global.dispatchEvent(domEvent);\n            };\n        } else {\n            var event = document.createEvent(\"CustomEvent\");\n            event.initCustomEvent(\"testingtheevent\", false, true, {});\n            util.global.dispatchEvent(event);\n            return function(name, event) {\n                var domEvent = document.createEvent(\"CustomEvent\");\n                domEvent.initCustomEvent(name.toLowerCase(), false, true,\n                    event);\n                return !util.global.dispatchEvent(domEvent);\n            };\n        }\n    } catch (e) {}\n    return function() {\n        return false;\n    };\n})();\n\nvar fireGlobalEvent = (function() {\n    if (util.isNode) {\n        return function() {\n            return process.emit.apply(process, arguments);\n        };\n    } else {\n        if (!util.global) {\n            return function() {\n                return false;\n            };\n        }\n        return function(name) {\n            var methodName = \"on\" + name.toLowerCase();\n            var method = util.global[methodName];\n            if (!method) return false;\n            method.apply(util.global, [].slice.call(arguments, 1));\n            return true;\n        };\n    }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n    return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n    promiseCreated: generatePromiseLifecycleEventObject,\n    promiseFulfilled: generatePromiseLifecycleEventObject,\n    promiseRejected: generatePromiseLifecycleEventObject,\n    promiseResolved: generatePromiseLifecycleEventObject,\n    promiseCancelled: generatePromiseLifecycleEventObject,\n    promiseChained: function(name, promise, child) {\n        return {promise: promise, child: child};\n    },\n    warning: function(name, warning) {\n        return {warning: warning};\n    },\n    unhandledRejection: function (name, reason, promise) {\n        return {reason: reason, promise: promise};\n    },\n    rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n    var globalEventFired = false;\n    try {\n        globalEventFired = fireGlobalEvent.apply(null, arguments);\n    } catch (e) {\n        async.throwLater(e);\n        globalEventFired = true;\n    }\n\n    var domEventFired = false;\n    try {\n        domEventFired = fireDomEvent(name,\n                    eventToObjectGenerator[name].apply(null, arguments));\n    } catch (e) {\n        async.throwLater(e);\n        domEventFired = true;\n    }\n\n    return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n    opts = Object(opts);\n    if (\"longStackTraces\" in opts) {\n        if (opts.longStackTraces) {\n            Promise.longStackTraces();\n        } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n            disableLongStackTraces();\n        }\n    }\n    if (\"warnings\" in opts) {\n        var warningsOption = opts.warnings;\n        config.warnings = !!warningsOption;\n        wForgottenReturn = config.warnings;\n\n        if (util.isObject(warningsOption)) {\n            if (\"wForgottenReturn\" in warningsOption) {\n                wForgottenReturn = !!warningsOption.wForgottenReturn;\n            }\n        }\n    }\n    if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n        if (async.haveItemsQueued()) {\n            throw new Error(\n                \"cannot enable cancellation after promises are in use\");\n        }\n        Promise.prototype._clearCancellationData =\n            cancellationClearCancellationData;\n        Promise.prototype._propagateFrom = cancellationPropagateFrom;\n        Promise.prototype._onCancel = cancellationOnCancel;\n        Promise.prototype._setOnCancel = cancellationSetOnCancel;\n        Promise.prototype._attachCancellationCallback =\n            cancellationAttachCancellationCallback;\n        Promise.prototype._execute = cancellationExecute;\n        propagateFromFunction = cancellationPropagateFrom;\n        config.cancellation = true;\n    }\n    if (\"monitoring\" in opts) {\n        if (opts.monitoring && !config.monitoring) {\n            config.monitoring = true;\n            Promise.prototype._fireEvent = activeFireEvent;\n        } else if (!opts.monitoring && config.monitoring) {\n            config.monitoring = false;\n            Promise.prototype._fireEvent = defaultFireEvent;\n        }\n    }\n    return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n    try {\n        executor(resolve, reject);\n    } catch (e) {\n        return e;\n    }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n    ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n    ;\n    ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n    var promise = this;\n    try {\n        executor(resolve, reject, function(onCancel) {\n            if (typeof onCancel !== \"function\") {\n                throw new TypeError(\"onCancel must be a function, got: \" +\n                                    util.toString(onCancel));\n            }\n            promise._attachCancellationCallback(onCancel);\n        });\n    } catch (e) {\n        return e;\n    }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n    if (!this._isCancellable()) return this;\n\n    var previousOnCancel = this._onCancel();\n    if (previousOnCancel !== undefined) {\n        if (util.isArray(previousOnCancel)) {\n            previousOnCancel.push(onCancel);\n        } else {\n            this._setOnCancel([previousOnCancel, onCancel]);\n        }\n    } else {\n        this._setOnCancel(onCancel);\n    }\n}\n\nfunction cancellationOnCancel() {\n    return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n    this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n    this._cancellationParent = undefined;\n    this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n    if ((flags & 1) !== 0) {\n        this._cancellationParent = parent;\n        var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n        if (branchesRemainingToCancel === undefined) {\n            branchesRemainingToCancel = 0;\n        }\n        parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n    }\n    if ((flags & 2) !== 0 && parent._isBound()) {\n        this._setBoundTo(parent._boundTo);\n    }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n    if ((flags & 2) !== 0 && parent._isBound()) {\n        this._setBoundTo(parent._boundTo);\n    }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n    var ret = this._boundTo;\n    if (ret !== undefined) {\n        if (ret instanceof Promise) {\n            if (ret.isFulfilled()) {\n                return ret.value();\n            } else {\n                return undefined;\n            }\n        }\n    }\n    return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n    this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n    if (canAttachTrace(error)) {\n        var trace = this._trace;\n        if (trace !== undefined) {\n            if (ignoreSelf) trace = trace._parent;\n        }\n        if (trace !== undefined) {\n            trace.attachExtraTrace(error);\n        } else if (!error.__stackCleaned__) {\n            var parsed = parseStackAndMessage(error);\n            util.notEnumerableProp(error, \"stack\",\n                parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n            util.notEnumerableProp(error, \"__stackCleaned__\", true);\n        }\n    }\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n                               parent) {\n    if (returnValue === undefined && promiseCreated !== null &&\n        wForgottenReturn) {\n        if (parent !== undefined && parent._returnedNonUndefined()) return;\n        if ((promise._bitField & 65535) === 0) return;\n\n        if (name) name = name + \" \";\n        var handlerLine = \"\";\n        var creatorLine = \"\";\n        if (promiseCreated._trace) {\n            var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n            var stack = cleanStack(traceLines);\n            for (var i = stack.length - 1; i >= 0; --i) {\n                var line = stack[i];\n                if (!nodeFramePattern.test(line)) {\n                    var lineMatches = line.match(parseLinePattern);\n                    if (lineMatches) {\n                        handlerLine  = \"at \" + lineMatches[1] +\n                            \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n                    }\n                    break;\n                }\n            }\n\n            if (stack.length > 0) {\n                var firstUserLine = stack[0];\n                for (var i = 0; i < traceLines.length; ++i) {\n\n                    if (traceLines[i] === firstUserLine) {\n                        if (i > 0) {\n                            creatorLine = \"\\n\" + traceLines[i - 1];\n                        }\n                        break;\n                    }\n                }\n\n            }\n        }\n        var msg = \"a promise was created in a \" + name +\n            \"handler \" + handlerLine + \"but was not returned from it, \" +\n            \"see http://goo.gl/rRqMUw\" +\n            creatorLine;\n        promise._warn(msg, true, promiseCreated);\n    }\n}\n\nfunction deprecated(name, replacement) {\n    var message = name +\n        \" is deprecated and will be removed in a future version.\";\n    if (replacement) message += \" Use \" + replacement + \" instead.\";\n    return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n    if (!config.warnings) return;\n    var warning = new Warning(message);\n    var ctx;\n    if (shouldUseOwnTrace) {\n        promise._attachExtraTrace(warning);\n    } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n        ctx.attachExtraTrace(warning);\n    } else {\n        var parsed = parseStackAndMessage(warning);\n        warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n    }\n\n    if (!activeFireEvent(\"warning\", warning)) {\n        formatAndLogError(warning, \"\", true);\n    }\n}\n\nfunction reconstructStack(message, stacks) {\n    for (var i = 0; i < stacks.length - 1; ++i) {\n        stacks[i].push(\"From previous event:\");\n        stacks[i] = stacks[i].join(\"\\n\");\n    }\n    if (i < stacks.length) {\n        stacks[i] = stacks[i].join(\"\\n\");\n    }\n    return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n    for (var i = 0; i < stacks.length; ++i) {\n        if (stacks[i].length === 0 ||\n            ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n            stacks.splice(i, 1);\n            i--;\n        }\n    }\n}\n\nfunction removeCommonRoots(stacks) {\n    var current = stacks[0];\n    for (var i = 1; i < stacks.length; ++i) {\n        var prev = stacks[i];\n        var currentLastIndex = current.length - 1;\n        var currentLastLine = current[currentLastIndex];\n        var commonRootMeetPoint = -1;\n\n        for (var j = prev.length - 1; j >= 0; --j) {\n            if (prev[j] === currentLastLine) {\n                commonRootMeetPoint = j;\n                break;\n            }\n        }\n\n        for (var j = commonRootMeetPoint; j >= 0; --j) {\n            var line = prev[j];\n            if (current[currentLastIndex] === line) {\n                current.pop();\n                currentLastIndex--;\n            } else {\n                break;\n            }\n        }\n        current = prev;\n    }\n}\n\nfunction cleanStack(stack) {\n    var ret = [];\n    for (var i = 0; i < stack.length; ++i) {\n        var line = stack[i];\n        var isTraceLine = \"    (No stack trace)\" === line ||\n            stackFramePattern.test(line);\n        var isInternalFrame = isTraceLine && shouldIgnore(line);\n        if (isTraceLine && !isInternalFrame) {\n            if (indentStackFrames && line.charAt(0) !== \" \") {\n                line = \"    \" + line;\n            }\n            ret.push(line);\n        }\n    }\n    return ret;\n}\n\nfunction stackFramesAsArray(error) {\n    var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n    for (var i = 0; i < stack.length; ++i) {\n        var line = stack[i];\n        if (\"    (No stack trace)\" === line || stackFramePattern.test(line)) {\n            break;\n        }\n    }\n    if (i > 0 && error.name != \"SyntaxError\") {\n        stack = stack.slice(i);\n    }\n    return stack;\n}\n\nfunction parseStackAndMessage(error) {\n    var stack = error.stack;\n    var message = error.toString();\n    stack = typeof stack === \"string\" && stack.length > 0\n                ? stackFramesAsArray(error) : [\"    (No stack trace)\"];\n    return {\n        message: message,\n        stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n    };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n    if (typeof console !== \"undefined\") {\n        var message;\n        if (util.isObject(error)) {\n            var stack = error.stack;\n            message = title + formatStack(stack, error);\n        } else {\n            message = title + String(error);\n        }\n        if (typeof printWarning === \"function\") {\n            printWarning(message, isSoft);\n        } else if (typeof console.log === \"function\" ||\n            typeof console.log === \"object\") {\n            console.log(message);\n        }\n    }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n    var localEventFired = false;\n    try {\n        if (typeof localHandler === \"function\") {\n            localEventFired = true;\n            if (name === \"rejectionHandled\") {\n                localHandler(promise);\n            } else {\n                localHandler(reason, promise);\n            }\n        }\n    } catch (e) {\n        async.throwLater(e);\n    }\n\n    if (name === \"unhandledRejection\") {\n        if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n            formatAndLogError(reason, \"Unhandled rejection \");\n        }\n    } else {\n        activeFireEvent(name, promise);\n    }\n}\n\nfunction formatNonError(obj) {\n    var str;\n    if (typeof obj === \"function\") {\n        str = \"[function \" +\n            (obj.name || \"anonymous\") +\n            \"]\";\n    } else {\n        str = obj && typeof obj.toString === \"function\"\n            ? obj.toString() : util.toString(obj);\n        var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n        if (ruselessToString.test(str)) {\n            try {\n                var newStr = JSON.stringify(obj);\n                str = newStr;\n            }\n            catch(e) {\n\n            }\n        }\n        if (str.length === 0) {\n            str = \"(empty array)\";\n        }\n    }\n    return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n    var maxChars = 41;\n    if (str.length < maxChars) {\n        return str;\n    }\n    return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n    return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n    var matches = line.match(parseLineInfoRegex);\n    if (matches) {\n        return {\n            fileName: matches[1],\n            line: parseInt(matches[2], 10)\n        };\n    }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n    if (!longStackTracesIsSupported()) return;\n    var firstStackLines = firstLineError.stack.split(\"\\n\");\n    var lastStackLines = lastLineError.stack.split(\"\\n\");\n    var firstIndex = -1;\n    var lastIndex = -1;\n    var firstFileName;\n    var lastFileName;\n    for (var i = 0; i < firstStackLines.length; ++i) {\n        var result = parseLineInfo(firstStackLines[i]);\n        if (result) {\n            firstFileName = result.fileName;\n            firstIndex = result.line;\n            break;\n        }\n    }\n    for (var i = 0; i < lastStackLines.length; ++i) {\n        var result = parseLineInfo(lastStackLines[i]);\n        if (result) {\n            lastFileName = result.fileName;\n            lastIndex = result.line;\n            break;\n        }\n    }\n    if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n        firstFileName !== lastFileName || firstIndex >= lastIndex) {\n        return;\n    }\n\n    shouldIgnore = function(line) {\n        if (bluebirdFramePattern.test(line)) return true;\n        var info = parseLineInfo(line);\n        if (info) {\n            if (info.fileName === firstFileName &&\n                (firstIndex <= info.line && info.line <= lastIndex)) {\n                return true;\n            }\n        }\n        return false;\n    };\n}\n\nfunction CapturedTrace(parent) {\n    this._parent = parent;\n    this._promisesCreated = 0;\n    var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n    captureStackTrace(this, CapturedTrace);\n    if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n    var length = this._length;\n    if (length < 2) return;\n    var nodes = [];\n    var stackToIndex = {};\n\n    for (var i = 0, node = this; node !== undefined; ++i) {\n        nodes.push(node);\n        node = node._parent;\n    }\n    length = this._length = i;\n    for (var i = length - 1; i >= 0; --i) {\n        var stack = nodes[i].stack;\n        if (stackToIndex[stack] === undefined) {\n            stackToIndex[stack] = i;\n        }\n    }\n    for (var i = 0; i < length; ++i) {\n        var currentStack = nodes[i].stack;\n        var index = stackToIndex[currentStack];\n        if (index !== undefined && index !== i) {\n            if (index > 0) {\n                nodes[index - 1]._parent = undefined;\n                nodes[index - 1]._length = 1;\n            }\n            nodes[i]._parent = undefined;\n            nodes[i]._length = 1;\n            var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n            if (index < length - 1) {\n                cycleEdgeNode._parent = nodes[index + 1];\n                cycleEdgeNode._parent.uncycle();\n                cycleEdgeNode._length =\n                    cycleEdgeNode._parent._length + 1;\n            } else {\n                cycleEdgeNode._parent = undefined;\n                cycleEdgeNode._length = 1;\n            }\n            var currentChildLength = cycleEdgeNode._length + 1;\n            for (var j = i - 2; j >= 0; --j) {\n                nodes[j]._length = currentChildLength;\n                currentChildLength++;\n            }\n            return;\n        }\n    }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n    if (error.__stackCleaned__) return;\n    this.uncycle();\n    var parsed = parseStackAndMessage(error);\n    var message = parsed.message;\n    var stacks = [parsed.stack];\n\n    var trace = this;\n    while (trace !== undefined) {\n        stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n        trace = trace._parent;\n    }\n    removeCommonRoots(stacks);\n    removeDuplicateOrEmptyJumps(stacks);\n    util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n    util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n    var v8stackFramePattern = /^\\s*at\\s*/;\n    var v8stackFormatter = function(stack, error) {\n        if (typeof stack === \"string\") return stack;\n\n        if (error.name !== undefined &&\n            error.message !== undefined) {\n            return error.toString();\n        }\n        return formatNonError(error);\n    };\n\n    if (typeof Error.stackTraceLimit === \"number\" &&\n        typeof Error.captureStackTrace === \"function\") {\n        Error.stackTraceLimit += 6;\n        stackFramePattern = v8stackFramePattern;\n        formatStack = v8stackFormatter;\n        var captureStackTrace = Error.captureStackTrace;\n\n        shouldIgnore = function(line) {\n            return bluebirdFramePattern.test(line);\n        };\n        return function(receiver, ignoreUntil) {\n            Error.stackTraceLimit += 6;\n            captureStackTrace(receiver, ignoreUntil);\n            Error.stackTraceLimit -= 6;\n        };\n    }\n    var err = new Error();\n\n    if (typeof err.stack === \"string\" &&\n        err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n        stackFramePattern = /@/;\n        formatStack = v8stackFormatter;\n        indentStackFrames = true;\n        return function captureStackTrace(o) {\n            o.stack = new Error().stack;\n        };\n    }\n\n    var hasStackAfterThrow;\n    try { throw new Error(); }\n    catch(e) {\n        hasStackAfterThrow = (\"stack\" in e);\n    }\n    if (!(\"stack\" in err) && hasStackAfterThrow &&\n        typeof Error.stackTraceLimit === \"number\") {\n        stackFramePattern = v8stackFramePattern;\n        formatStack = v8stackFormatter;\n        return function captureStackTrace(o) {\n            Error.stackTraceLimit += 6;\n            try { throw new Error(); }\n            catch(e) { o.stack = e.stack; }\n            Error.stackTraceLimit -= 6;\n        };\n    }\n\n    formatStack = function(stack, error) {\n        if (typeof stack === \"string\") return stack;\n\n        if ((typeof error === \"object\" ||\n            typeof error === \"function\") &&\n            error.name !== undefined &&\n            error.message !== undefined) {\n            return error.toString();\n        }\n        return formatNonError(error);\n    };\n\n    return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n    printWarning = function (message) {\n        console.warn(message);\n    };\n    if (util.isNode && process.stderr.isTTY) {\n        printWarning = function(message, isSoft) {\n            var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n            console.warn(color + message + \"\\u001b[0m\\n\");\n        };\n    } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n        printWarning = function(message, isSoft) {\n            console.warn(\"%c\" + message,\n                        isSoft ? \"color: darkorange\" : \"color: red\");\n        };\n    }\n}\n\nvar config = {\n    warnings: warnings,\n    longStackTraces: false,\n    cancellation: false,\n    monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n    longStackTraces: function() {\n        return config.longStackTraces;\n    },\n    warnings: function() {\n        return config.warnings;\n    },\n    cancellation: function() {\n        return config.cancellation;\n    },\n    monitoring: function() {\n        return config.monitoring;\n    },\n    propagateFromFunction: function() {\n        return propagateFromFunction;\n    },\n    boundValueFunction: function() {\n        return boundValueFunction;\n    },\n    checkForgottenReturns: checkForgottenReturns,\n    setBounds: setBounds,\n    warn: warn,\n    deprecated: deprecated,\n    CapturedTrace: CapturedTrace,\n    fireDomEvent: fireDomEvent,\n    fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n    return this.value;\n}\nfunction thrower() {\n    throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n    if (value instanceof Promise) value.suppressUnhandledRejections();\n    return this._then(\n        returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n    return this._then(\n        thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n    if (arguments.length <= 1) {\n        return this._then(\n            undefined, thrower, undefined, {reason: reason}, undefined);\n    } else {\n        var _reason = arguments[1];\n        var handler = function() {throw _reason;};\n        return this.caught(reason, handler);\n    }\n};\n\nPromise.prototype.catchReturn = function (value) {\n    if (arguments.length <= 1) {\n        if (value instanceof Promise) value.suppressUnhandledRejections();\n        return this._then(\n            undefined, returner, undefined, {value: value}, undefined);\n    } else {\n        var _value = arguments[1];\n        if (_value instanceof Promise) _value.suppressUnhandledRejections();\n        var handler = function() {return _value;};\n        return this.caught(value, handler);\n    }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n    return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n    return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n    return PromiseReduce(this, fn, INTERNAL, 0)\n              ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n    return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n    return PromiseReduce(promises, fn, INTERNAL, 0)\n              ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n    function SubError(message) {\n        if (!(this instanceof SubError)) return new SubError(message);\n        notEnumerableProp(this, \"message\",\n            typeof message === \"string\" ? message : defaultMessage);\n        notEnumerableProp(this, \"name\", nameProperty);\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(this, this.constructor);\n        } else {\n            Error.call(this);\n        }\n    }\n    inherits(SubError, Error);\n    return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n    _TypeError = TypeError;\n    _RangeError = RangeError;\n} catch(e) {\n    _TypeError = subError(\"TypeError\", \"type error\");\n    _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n    \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n    if (typeof Array.prototype[methods[i]] === \"function\") {\n        AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n    }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n    value: 0,\n    configurable: false,\n    writable: true,\n    enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n    var indent = Array(level * 4 + 1).join(\" \");\n    var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n    level++;\n    indent = Array(level * 4 + 1).join(\" \");\n    for (var i = 0; i < this.length; ++i) {\n        var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n        var lines = str.split(\"\\n\");\n        for (var j = 0; j < lines.length; ++j) {\n            lines[j] = indent + lines[j];\n        }\n        str = lines.join(\"\\n\");\n        ret += str + \"\\n\";\n    }\n    level--;\n    return ret;\n};\n\nfunction OperationalError(message) {\n    if (!(this instanceof OperationalError))\n        return new OperationalError(message);\n    notEnumerableProp(this, \"name\", \"OperationalError\");\n    notEnumerableProp(this, \"message\", message);\n    this.cause = message;\n    this[\"isOperational\"] = true;\n\n    if (message instanceof Error) {\n        notEnumerableProp(this, \"message\", message.message);\n        notEnumerableProp(this, \"stack\", message.stack);\n    } else if (Error.captureStackTrace) {\n        Error.captureStackTrace(this, this.constructor);\n    }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n    errorTypes = Objectfreeze({\n        CancellationError: CancellationError,\n        TimeoutError: TimeoutError,\n        OperationalError: OperationalError,\n        RejectionError: OperationalError,\n        AggregateError: AggregateError\n    });\n    es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n        value: errorTypes,\n        writable: false,\n        enumerable: false,\n        configurable: false\n    });\n}\n\nmodule.exports = {\n    Error: Error,\n    TypeError: _TypeError,\n    RangeError: _RangeError,\n    CancellationError: errorTypes.CancellationError,\n    OperationalError: errorTypes.OperationalError,\n    TimeoutError: errorTypes.TimeoutError,\n    AggregateError: errorTypes.AggregateError,\n    Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n    \"use strict\";\n    return this === undefined;\n})();\n\nif (isES5) {\n    module.exports = {\n        freeze: Object.freeze,\n        defineProperty: Object.defineProperty,\n        getDescriptor: Object.getOwnPropertyDescriptor,\n        keys: Object.keys,\n        names: Object.getOwnPropertyNames,\n        getPrototypeOf: Object.getPrototypeOf,\n        isArray: Array.isArray,\n        isES5: isES5,\n        propertyIsWritable: function(obj, prop) {\n            var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n            return !!(!descriptor || descriptor.writable || descriptor.set);\n        }\n    };\n} else {\n    var has = {}.hasOwnProperty;\n    var str = {}.toString;\n    var proto = {}.constructor.prototype;\n\n    var ObjectKeys = function (o) {\n        var ret = [];\n        for (var key in o) {\n            if (has.call(o, key)) {\n                ret.push(key);\n            }\n        }\n        return ret;\n    };\n\n    var ObjectGetDescriptor = function(o, key) {\n        return {value: o[key]};\n    };\n\n    var ObjectDefineProperty = function (o, key, desc) {\n        o[key] = desc.value;\n        return o;\n    };\n\n    var ObjectFreeze = function (obj) {\n        return obj;\n    };\n\n    var ObjectGetPrototypeOf = function (obj) {\n        try {\n            return Object(obj).constructor.prototype;\n        }\n        catch (e) {\n            return proto;\n        }\n    };\n\n    var ArrayIsArray = function (obj) {\n        try {\n            return str.call(obj) === \"[object Array]\";\n        }\n        catch(e) {\n            return false;\n        }\n    };\n\n    module.exports = {\n        isArray: ArrayIsArray,\n        keys: ObjectKeys,\n        names: ObjectKeys,\n        defineProperty: ObjectDefineProperty,\n        getDescriptor: ObjectGetDescriptor,\n        freeze: ObjectFreeze,\n        getPrototypeOf: ObjectGetPrototypeOf,\n        isES5: isES5,\n        propertyIsWritable: function() {\n            return true;\n        }\n    };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n    return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n    return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n    this.promise = promise;\n    this.type = type;\n    this.handler = handler;\n    this.called = false;\n    this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n    return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n    this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n    checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n    if (ctx.cancelPromise != null) {\n        if (arguments.length > 1) {\n            ctx.cancelPromise._reject(reason);\n        } else {\n            ctx.cancelPromise._cancel();\n        }\n        ctx.cancelPromise = null;\n        return true;\n    }\n    return false;\n}\n\nfunction succeed() {\n    return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n    if (checkCancel(this, reason)) return;\n    errorObj.e = reason;\n    return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n    var promise = this.promise;\n    var handler = this.handler;\n\n    if (!this.called) {\n        this.called = true;\n        var ret = this.isFinallyHandler()\n            ? handler.call(promise._boundValue())\n            : handler.call(promise._boundValue(), reasonOrValue);\n        if (ret === NEXT_FILTER) {\n            return ret;\n        } else if (ret !== undefined) {\n            promise._setReturnedNonUndefined();\n            var maybePromise = tryConvertToPromise(ret, promise);\n            if (maybePromise instanceof Promise) {\n                if (this.cancelPromise != null) {\n                    if (maybePromise._isCancelled()) {\n                        var reason =\n                            new CancellationError(\"late cancellation observer\");\n                        promise._attachExtraTrace(reason);\n                        errorObj.e = reason;\n                        return errorObj;\n                    } else if (maybePromise.isPending()) {\n                        maybePromise._attachCancellationCallback(\n                            new FinallyHandlerCancelReaction(this));\n                    }\n                }\n                return maybePromise._then(\n                    succeed, fail, undefined, this, undefined);\n            }\n        }\n    }\n\n    if (promise.isRejected()) {\n        checkCancel(this);\n        errorObj.e = reasonOrValue;\n        return errorObj;\n    } else {\n        checkCancel(this);\n        return reasonOrValue;\n    }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n    if (typeof handler !== \"function\") return this.then();\n    return this._then(success,\n                      fail,\n                      undefined,\n                      new PassThroughHandlerContext(this, type, handler),\n                      undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n    return this._passThrough(handler,\n                             0,\n                             finallyHandler,\n                             finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n    return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n    var len = arguments.length;\n    if(len === 1) {\n        return this._passThrough(handlerOrPredicate,\n                                 1,\n                                 undefined,\n                                 finallyHandler);\n    } else {\n         var catchInstances = new Array(len - 1),\n            j = 0, i;\n        for (i = 0; i < len - 1; ++i) {\n            var item = arguments[i];\n            if (util.isObject(item)) {\n                catchInstances[j++] = item;\n            } else {\n                return Promise.reject(new TypeError(\n                    \"tapCatch statement predicate: \"\n                    + \"expecting an object but got \" + util.classString(item)\n                ));\n            }\n        }\n        catchInstances.length = j;\n        var handler = arguments[i];\n        return this._passThrough(catchFilter(catchInstances, handler, this),\n                                 1,\n                                 undefined,\n                                 finallyHandler);\n    }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n                          apiRejection,\n                          INTERNAL,\n                          tryConvertToPromise,\n                          Proxyable,\n                          debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n    for (var i = 0; i < yieldHandlers.length; ++i) {\n        traceParent._pushContext();\n        var result = tryCatch(yieldHandlers[i])(value);\n        traceParent._popContext();\n        if (result === errorObj) {\n            traceParent._pushContext();\n            var ret = Promise.reject(errorObj.e);\n            traceParent._popContext();\n            return ret;\n        }\n        var maybePromise = tryConvertToPromise(result, traceParent);\n        if (maybePromise instanceof Promise) return maybePromise;\n    }\n    return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n    if (debug.cancellation()) {\n        var internal = new Promise(INTERNAL);\n        var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n        this._promise = internal.lastly(function() {\n            return _finallyPromise;\n        });\n        internal._captureStackTrace();\n        internal._setOnCancel(this);\n    } else {\n        var promise = this._promise = new Promise(INTERNAL);\n        promise._captureStackTrace();\n    }\n    this._stack = stack;\n    this._generatorFunction = generatorFunction;\n    this._receiver = receiver;\n    this._generator = undefined;\n    this._yieldHandlers = typeof yieldHandler === \"function\"\n        ? [yieldHandler].concat(yieldHandlers)\n        : yieldHandlers;\n    this._yieldedPromise = null;\n    this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n    return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n    this._promise = this._generator = null;\n    if (debug.cancellation() && this._finallyPromise !== null) {\n        this._finallyPromise._fulfill();\n        this._finallyPromise = null;\n    }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n    if (this._isResolved()) return;\n    var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n    var result;\n    if (!implementsReturn) {\n        var reason = new Promise.CancellationError(\n            \"generator .return() sentinel\");\n        Promise.coroutine.returnSentinel = reason;\n        this._promise._attachExtraTrace(reason);\n        this._promise._pushContext();\n        result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n                                                         reason);\n        this._promise._popContext();\n    } else {\n        this._promise._pushContext();\n        result = tryCatch(this._generator[\"return\"]).call(this._generator,\n                                                          undefined);\n        this._promise._popContext();\n    }\n    this._cancellationPhase = true;\n    this._yieldedPromise = null;\n    this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n    this._yieldedPromise = null;\n    this._promise._pushContext();\n    var result = tryCatch(this._generator.next).call(this._generator, value);\n    this._promise._popContext();\n    this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n    this._yieldedPromise = null;\n    this._promise._attachExtraTrace(reason);\n    this._promise._pushContext();\n    var result = tryCatch(this._generator[\"throw\"])\n        .call(this._generator, reason);\n    this._promise._popContext();\n    this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n    if (this._yieldedPromise instanceof Promise) {\n        var promise = this._yieldedPromise;\n        this._yieldedPromise = null;\n        promise.cancel();\n    }\n};\n\nPromiseSpawn.prototype.promise = function () {\n    return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n    this._generator = this._generatorFunction.call(this._receiver);\n    this._receiver =\n        this._generatorFunction = undefined;\n    this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n    var promise = this._promise;\n    if (result === errorObj) {\n        this._cleanup();\n        if (this._cancellationPhase) {\n            return promise.cancel();\n        } else {\n            return promise._rejectCallback(result.e, false);\n        }\n    }\n\n    var value = result.value;\n    if (result.done === true) {\n        this._cleanup();\n        if (this._cancellationPhase) {\n            return promise.cancel();\n        } else {\n            return promise._resolveCallback(value);\n        }\n    } else {\n        var maybePromise = tryConvertToPromise(value, this._promise);\n        if (!(maybePromise instanceof Promise)) {\n            maybePromise =\n                promiseFromYieldHandler(maybePromise,\n                                        this._yieldHandlers,\n                                        this._promise);\n            if (maybePromise === null) {\n                this._promiseRejected(\n                    new TypeError(\n                        \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n                        \"From coroutine:\\u000a\" +\n                        this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n                    )\n                );\n                return;\n            }\n        }\n        maybePromise = maybePromise._target();\n        var bitField = maybePromise._bitField;\n        ;\n        if (((bitField & 50397184) === 0)) {\n            this._yieldedPromise = maybePromise;\n            maybePromise._proxy(this, null);\n        } else if (((bitField & 33554432) !== 0)) {\n            Promise._async.invoke(\n                this._promiseFulfilled, this, maybePromise._value()\n            );\n        } else if (((bitField & 16777216) !== 0)) {\n            Promise._async.invoke(\n                this._promiseRejected, this, maybePromise._reason()\n            );\n        } else {\n            this._promiseCancelled();\n        }\n    }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n    if (typeof generatorFunction !== \"function\") {\n        throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    var yieldHandler = Object(options).yieldHandler;\n    var PromiseSpawn$ = PromiseSpawn;\n    var stack = new Error().stack;\n    return function () {\n        var generator = generatorFunction.apply(this, arguments);\n        var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n                                      stack);\n        var ret = spawn.promise();\n        spawn._generator = generator;\n        spawn._promiseFulfilled(undefined);\n        return ret;\n    };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n    if (typeof fn !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n    debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n    if (typeof generatorFunction !== \"function\") {\n        return apiRejection(\"generatorFunction must be a function\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    var spawn = new PromiseSpawn(generatorFunction, this);\n    var ret = spawn.promise();\n    spawn._run(Promise.spawn);\n    return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n         getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (false) {\nif (canEvaluate) {\n    var thenCallback = function(i) {\n        return new Function(\"value\", \"holder\", \"                             \\n\\\n            'use strict';                                                    \\n\\\n            holder.pIndex = value;                                           \\n\\\n            holder.checkFulfillment(this);                                   \\n\\\n            \".replace(/Index/g, i));\n    };\n\n    var promiseSetter = function(i) {\n        return new Function(\"promise\", \"holder\", \"                           \\n\\\n            'use strict';                                                    \\n\\\n            holder.pIndex = promise;                                         \\n\\\n            \".replace(/Index/g, i));\n    };\n\n    var generateHolderClass = function(total) {\n        var props = new Array(total);\n        for (var i = 0; i < props.length; ++i) {\n            props[i] = \"this.p\" + (i+1);\n        }\n        var assignment = props.join(\" = \") + \" = null;\";\n        var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n            return \"                                                         \\n\\\n                promise = \" + prop + \";                                      \\n\\\n                if (promise instanceof Promise) {                            \\n\\\n                    promise.cancel();                                        \\n\\\n                }                                                            \\n\\\n            \";\n        }).join(\"\\n\");\n        var passedArguments = props.join(\", \");\n        var name = \"Holder$\" + total;\n\n\n        var code = \"return function(tryCatch, errorObj, Promise, async) {    \\n\\\n            'use strict';                                                    \\n\\\n            function [TheName](fn) {                                         \\n\\\n                [TheProperties]                                              \\n\\\n                this.fn = fn;                                                \\n\\\n                this.asyncNeeded = true;                                     \\n\\\n                this.now = 0;                                                \\n\\\n            }                                                                \\n\\\n                                                                             \\n\\\n            [TheName].prototype._callFunction = function(promise) {          \\n\\\n                promise._pushContext();                                      \\n\\\n                var ret = tryCatch(this.fn)([ThePassedArguments]);           \\n\\\n                promise._popContext();                                       \\n\\\n                if (ret === errorObj) {                                      \\n\\\n                    promise._rejectCallback(ret.e, false);                   \\n\\\n                } else {                                                     \\n\\\n                    promise._resolveCallback(ret);                           \\n\\\n                }                                                            \\n\\\n            };                                                               \\n\\\n                                                                             \\n\\\n            [TheName].prototype.checkFulfillment = function(promise) {       \\n\\\n                var now = ++this.now;                                        \\n\\\n                if (now === [TheTotal]) {                                    \\n\\\n                    if (this.asyncNeeded) {                                  \\n\\\n                        async.invoke(this._callFunction, this, promise);     \\n\\\n                    } else {                                                 \\n\\\n                        this._callFunction(promise);                         \\n\\\n                    }                                                        \\n\\\n                                                                             \\n\\\n                }                                                            \\n\\\n            };                                                               \\n\\\n                                                                             \\n\\\n            [TheName].prototype._resultCancelled = function() {              \\n\\\n                [CancellationCode]                                           \\n\\\n            };                                                               \\n\\\n                                                                             \\n\\\n            return [TheName];                                                \\n\\\n        }(tryCatch, errorObj, Promise, async);                               \\n\\\n        \";\n\n        code = code.replace(/\\[TheName\\]/g, name)\n            .replace(/\\[TheTotal\\]/g, total)\n            .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n            .replace(/\\[TheProperties\\]/g, assignment)\n            .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n        return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n                           (tryCatch, errorObj, Promise, async);\n    };\n\n    var holderClasses = [];\n    var thenCallbacks = [];\n    var promiseSetters = [];\n\n    for (var i = 0; i < 8; ++i) {\n        holderClasses.push(generateHolderClass(i + 1));\n        thenCallbacks.push(thenCallback(i + 1));\n        promiseSetters.push(promiseSetter(i + 1));\n    }\n\n    reject = function (reason) {\n        this._reject(reason);\n    };\n}}\n\nPromise.join = function () {\n    var last = arguments.length - 1;\n    var fn;\n    if (last > 0 && typeof arguments[last] === \"function\") {\n        fn = arguments[last];\n        if (false) {\n            if (last <= 8 && canEvaluate) {\n                var ret = new Promise(INTERNAL);\n                ret._captureStackTrace();\n                var HolderClass = holderClasses[last - 1];\n                var holder = new HolderClass(fn);\n                var callbacks = thenCallbacks;\n\n                for (var i = 0; i < last; ++i) {\n                    var maybePromise = tryConvertToPromise(arguments[i], ret);\n                    if (maybePromise instanceof Promise) {\n                        maybePromise = maybePromise._target();\n                        var bitField = maybePromise._bitField;\n                        ;\n                        if (((bitField & 50397184) === 0)) {\n                            maybePromise._then(callbacks[i], reject,\n                                               undefined, ret, holder);\n                            promiseSetters[i](maybePromise, holder);\n                            holder.asyncNeeded = false;\n                        } else if (((bitField & 33554432) !== 0)) {\n                            callbacks[i].call(ret,\n                                              maybePromise._value(), holder);\n                        } else if (((bitField & 16777216) !== 0)) {\n                            ret._reject(maybePromise._reason());\n                        } else {\n                            ret._cancel();\n                        }\n                    } else {\n                        callbacks[i].call(ret, maybePromise, holder);\n                    }\n                }\n\n                if (!ret._isFateSealed()) {\n                    if (holder.asyncNeeded) {\n                        var domain = getDomain();\n                        if (domain !== null) {\n                            holder.fn = util.domainBind(domain, holder.fn);\n                        }\n                    }\n                    ret._setAsyncGuaranteed();\n                    ret._setOnCancel(holder);\n                }\n                return ret;\n            }\n        }\n    }\n    var args = [].slice.call(arguments);;\n    if (fn) args.pop();\n    var ret = new PromiseArray(args).promise();\n    return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n                          PromiseArray,\n                          apiRejection,\n                          tryConvertToPromise,\n                          INTERNAL,\n                          debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n    this.constructor$(promises);\n    this._promise._captureStackTrace();\n    var domain = getDomain();\n    this._callback = domain === null ? fn : util.domainBind(domain, fn);\n    this._preservedValues = _filter === INTERNAL\n        ? new Array(this.length())\n        : null;\n    this._limit = limit;\n    this._inFlight = 0;\n    this._queue = [];\n    async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n    this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    var values = this._values;\n    var length = this.length();\n    var preservedValues = this._preservedValues;\n    var limit = this._limit;\n\n    if (index < 0) {\n        index = (index * -1) - 1;\n        values[index] = value;\n        if (limit >= 1) {\n            this._inFlight--;\n            this._drainQueue();\n            if (this._isResolved()) return true;\n        }\n    } else {\n        if (limit >= 1 && this._inFlight >= limit) {\n            values[index] = value;\n            this._queue.push(index);\n            return false;\n        }\n        if (preservedValues !== null) preservedValues[index] = value;\n\n        var promise = this._promise;\n        var callback = this._callback;\n        var receiver = promise._boundValue();\n        promise._pushContext();\n        var ret = tryCatch(callback).call(receiver, value, index, length);\n        var promiseCreated = promise._popContext();\n        debug.checkForgottenReturns(\n            ret,\n            promiseCreated,\n            preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n            promise\n        );\n        if (ret === errorObj) {\n            this._reject(ret.e);\n            return true;\n        }\n\n        var maybePromise = tryConvertToPromise(ret, this._promise);\n        if (maybePromise instanceof Promise) {\n            maybePromise = maybePromise._target();\n            var bitField = maybePromise._bitField;\n            ;\n            if (((bitField & 50397184) === 0)) {\n                if (limit >= 1) this._inFlight++;\n                values[index] = maybePromise;\n                maybePromise._proxy(this, (index + 1) * -1);\n                return false;\n            } else if (((bitField & 33554432) !== 0)) {\n                ret = maybePromise._value();\n            } else if (((bitField & 16777216) !== 0)) {\n                this._reject(maybePromise._reason());\n                return true;\n            } else {\n                this._cancel();\n                return true;\n            }\n        }\n        values[index] = ret;\n    }\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= length) {\n        if (preservedValues !== null) {\n            this._filter(values, preservedValues);\n        } else {\n            this._resolve(values);\n        }\n        return true;\n    }\n    return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n    var queue = this._queue;\n    var limit = this._limit;\n    var values = this._values;\n    while (queue.length > 0 && this._inFlight < limit) {\n        if (this._isResolved()) return;\n        var index = queue.pop();\n        this._promiseFulfilled(values[index], index);\n    }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n    var len = values.length;\n    var ret = new Array(len);\n    var j = 0;\n    for (var i = 0; i < len; ++i) {\n        if (booleans[i]) ret[j++] = values[i];\n    }\n    ret.length = j;\n    this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n    return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n\n    var limit = 0;\n    if (options !== undefined) {\n        if (typeof options === \"object\" && options !== null) {\n            if (typeof options.concurrency !== \"number\") {\n                return Promise.reject(\n                    new TypeError(\"'concurrency' must be a number but it is \" +\n                                    util.classString(options.concurrency)));\n            }\n            limit = options.concurrency;\n        } else {\n            return Promise.reject(new TypeError(\n                            \"options argument must be an object but it is \" +\n                             util.classString(options)));\n        }\n    }\n    limit = typeof limit === \"number\" &&\n        isFinite(limit) && limit >= 1 ? limit : 0;\n    return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n    return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n    return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n    if (typeof fn !== \"function\") {\n        throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    return function () {\n        var ret = new Promise(INTERNAL);\n        ret._captureStackTrace();\n        ret._pushContext();\n        var value = tryCatch(fn).apply(this, arguments);\n        var promiseCreated = ret._popContext();\n        debug.checkForgottenReturns(\n            value, promiseCreated, \"Promise.method\", ret);\n        ret._resolveFromSyncValue(value);\n        return ret;\n    };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n    var ret = new Promise(INTERNAL);\n    ret._captureStackTrace();\n    ret._pushContext();\n    var value;\n    if (arguments.length > 1) {\n        debug.deprecated(\"calling Promise.try with more than 1 argument\");\n        var arg = arguments[1];\n        var ctx = arguments[2];\n        value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n                                  : tryCatch(fn).call(ctx, arg);\n    } else {\n        value = tryCatch(fn)();\n    }\n    var promiseCreated = ret._popContext();\n    debug.checkForgottenReturns(\n        value, promiseCreated, \"Promise.try\", ret);\n    ret._resolveFromSyncValue(value);\n    return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n    if (value === util.errorObj) {\n        this._rejectCallback(value.e, false);\n    } else {\n        this._resolveCallback(value, true);\n    }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n    return obj instanceof Error &&\n        es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n    var ret;\n    if (isUntypedError(obj)) {\n        ret = new OperationalError(obj);\n        ret.name = obj.name;\n        ret.message = obj.message;\n        ret.stack = obj.stack;\n        var keys = es5.keys(obj);\n        for (var i = 0; i < keys.length; ++i) {\n            var key = keys[i];\n            if (!rErrorKey.test(key)) {\n                ret[key] = obj[key];\n            }\n        }\n        return ret;\n    }\n    util.markAsOriginatingFromRejection(obj);\n    return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n    return function(err, value) {\n        if (promise === null) return;\n        if (err) {\n            var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n            promise._attachExtraTrace(wrapped);\n            promise._reject(wrapped);\n        } else if (!multiArgs) {\n            promise._fulfill(value);\n        } else {\n            var args = [].slice.call(arguments, 1);;\n            promise._fulfill(args);\n        }\n        promise = null;\n    };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n    var promise = this;\n    if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n    var ret =\n        tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n    if (ret === errorObj) {\n        async.throwLater(ret.e);\n    }\n}\n\nfunction successAdapter(val, nodeback) {\n    var promise = this;\n    var receiver = promise._boundValue();\n    var ret = val === undefined\n        ? tryCatch(nodeback).call(receiver, null)\n        : tryCatch(nodeback).call(receiver, null, val);\n    if (ret === errorObj) {\n        async.throwLater(ret.e);\n    }\n}\nfunction errorAdapter(reason, nodeback) {\n    var promise = this;\n    if (!reason) {\n        var newReason = new Error(reason + \"\");\n        newReason.cause = reason;\n        reason = newReason;\n    }\n    var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n    if (ret === errorObj) {\n        async.throwLater(ret.e);\n    }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n                                                                     options) {\n    if (typeof nodeback == \"function\") {\n        var adapter = successAdapter;\n        if (options !== undefined && Object(options).spread) {\n            adapter = spreadAdapter;\n        }\n        this._then(\n            adapter,\n            errorAdapter,\n            undefined,\n            this,\n            nodeback\n        );\n    }\n    return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n    return new TypeError(\"circular promise resolution chain\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n    return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n    return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n    getDomain = function() {\n        var ret = process.domain;\n        if (ret === undefined) ret = null;\n        return ret;\n    };\n} else {\n    getDomain = function() {\n        return null;\n    };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n    _dereq_(\"./promise_array\")(Promise, INTERNAL,\n                               tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n    _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n    if (self == null || self.constructor !== Promise) {\n        throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    if (typeof executor !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n    }\n\n}\n\nfunction Promise(executor) {\n    if (executor !== INTERNAL) {\n        check(this, executor);\n    }\n    this._bitField = 0;\n    this._fulfillmentHandler0 = undefined;\n    this._rejectionHandler0 = undefined;\n    this._promise0 = undefined;\n    this._receiver0 = undefined;\n    this._resolveFromExecutor(executor);\n    this._promiseCreated();\n    this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n    return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n    var len = arguments.length;\n    if (len > 1) {\n        var catchInstances = new Array(len - 1),\n            j = 0, i;\n        for (i = 0; i < len - 1; ++i) {\n            var item = arguments[i];\n            if (util.isObject(item)) {\n                catchInstances[j++] = item;\n            } else {\n                return apiRejection(\"Catch statement predicate: \" +\n                    \"expecting an object but got \" + util.classString(item));\n            }\n        }\n        catchInstances.length = j;\n        fn = arguments[i];\n        return this.then(undefined, catchFilter(catchInstances, fn, this));\n    }\n    return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n    return this._then(reflectHandler,\n        reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n    if (debug.warnings() && arguments.length > 0 &&\n        typeof didFulfill !== \"function\" &&\n        typeof didReject !== \"function\") {\n        var msg = \".then() only accepts functions but was passed: \" +\n                util.classString(didFulfill);\n        if (arguments.length > 1) {\n            msg += \", \" + util.classString(didReject);\n        }\n        this._warn(msg);\n    }\n    return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n    var promise =\n        this._then(didFulfill, didReject, undefined, undefined, undefined);\n    promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n    return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n    var ret = {\n        isFulfilled: false,\n        isRejected: false,\n        fulfillmentValue: undefined,\n        rejectionReason: undefined\n    };\n    if (this.isFulfilled()) {\n        ret.fulfillmentValue = this.value();\n        ret.isFulfilled = true;\n    } else if (this.isRejected()) {\n        ret.rejectionReason = this.reason();\n        ret.isRejected = true;\n    }\n    return ret;\n};\n\nPromise.prototype.all = function () {\n    if (arguments.length > 0) {\n        this._warn(\".all() was passed arguments but it does not take any\");\n    }\n    return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n    return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n    return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n    var ret = new Promise(INTERNAL);\n    ret._captureStackTrace();\n    var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n                                         : false;\n    var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n    if (result === errorObj) {\n        ret._rejectCallback(result.e, true);\n    }\n    if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n    return ret;\n};\n\nPromise.all = function (promises) {\n    return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n    var ret = tryConvertToPromise(obj);\n    if (!(ret instanceof Promise)) {\n        ret = new Promise(INTERNAL);\n        ret._captureStackTrace();\n        ret._setFulfilled();\n        ret._rejectionHandler0 = obj;\n    }\n    return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n    var ret = new Promise(INTERNAL);\n    ret._captureStackTrace();\n    ret._rejectCallback(reason, true);\n    return ret;\n};\n\nPromise.setScheduler = function(fn) {\n    if (typeof fn !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n    didFulfill,\n    didReject,\n    _,    receiver,\n    internalData\n) {\n    var haveInternalData = internalData !== undefined;\n    var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n    var target = this._target();\n    var bitField = target._bitField;\n\n    if (!haveInternalData) {\n        promise._propagateFrom(this, 3);\n        promise._captureStackTrace();\n        if (receiver === undefined &&\n            ((this._bitField & 2097152) !== 0)) {\n            if (!((bitField & 50397184) === 0)) {\n                receiver = this._boundValue();\n            } else {\n                receiver = target === this ? undefined : this._boundTo;\n            }\n        }\n        this._fireEvent(\"promiseChained\", this, promise);\n    }\n\n    var domain = getDomain();\n    if (!((bitField & 50397184) === 0)) {\n        var handler, value, settler = target._settlePromiseCtx;\n        if (((bitField & 33554432) !== 0)) {\n            value = target._rejectionHandler0;\n            handler = didFulfill;\n        } else if (((bitField & 16777216) !== 0)) {\n            value = target._fulfillmentHandler0;\n            handler = didReject;\n            target._unsetRejectionIsUnhandled();\n        } else {\n            settler = target._settlePromiseLateCancellationObserver;\n            value = new CancellationError(\"late cancellation observer\");\n            target._attachExtraTrace(value);\n            handler = didReject;\n        }\n\n        async.invoke(settler, target, {\n            handler: domain === null ? handler\n                : (typeof handler === \"function\" &&\n                    util.domainBind(domain, handler)),\n            promise: promise,\n            receiver: receiver,\n            value: value\n        });\n    } else {\n        target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n    }\n\n    return promise;\n};\n\nPromise.prototype._length = function () {\n    return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n    return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n    return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n    this._bitField = (this._bitField & -65536) |\n        (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n    this._bitField = this._bitField | 33554432;\n    this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n    this._bitField = this._bitField | 16777216;\n    this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n    this._bitField = this._bitField | 67108864;\n    this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n    this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n    return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n    this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n    this._bitField = this._bitField | 65536;\n    this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n    this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n    if (async.hasCustomScheduler()) return;\n    this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n    var ret = index === 0 ? this._receiver0 : this[\n            index * 4 - 4 + 3];\n    if (ret === UNDEFINED_BINDING) {\n        return undefined;\n    } else if (ret === undefined && this._isBound()) {\n        return this._boundValue();\n    }\n    return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n    return this[\n            index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n    return this[\n            index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n    return this[\n            index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n    var bitField = follower._bitField;\n    var fulfill = follower._fulfillmentHandler0;\n    var reject = follower._rejectionHandler0;\n    var promise = follower._promise0;\n    var receiver = follower._receiverAt(0);\n    if (receiver === undefined) receiver = UNDEFINED_BINDING;\n    this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n    var fulfill = follower._fulfillmentHandlerAt(index);\n    var reject = follower._rejectionHandlerAt(index);\n    var promise = follower._promiseAt(index);\n    var receiver = follower._receiverAt(index);\n    if (receiver === undefined) receiver = UNDEFINED_BINDING;\n    this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n    fulfill,\n    reject,\n    promise,\n    receiver,\n    domain\n) {\n    var index = this._length();\n\n    if (index >= 65535 - 4) {\n        index = 0;\n        this._setLength(0);\n    }\n\n    if (index === 0) {\n        this._promise0 = promise;\n        this._receiver0 = receiver;\n        if (typeof fulfill === \"function\") {\n            this._fulfillmentHandler0 =\n                domain === null ? fulfill : util.domainBind(domain, fulfill);\n        }\n        if (typeof reject === \"function\") {\n            this._rejectionHandler0 =\n                domain === null ? reject : util.domainBind(domain, reject);\n        }\n    } else {\n        var base = index * 4 - 4;\n        this[base + 2] = promise;\n        this[base + 3] = receiver;\n        if (typeof fulfill === \"function\") {\n            this[base + 0] =\n                domain === null ? fulfill : util.domainBind(domain, fulfill);\n        }\n        if (typeof reject === \"function\") {\n            this[base + 1] =\n                domain === null ? reject : util.domainBind(domain, reject);\n        }\n    }\n    this._setLength(index + 1);\n    return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n    this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n    if (((this._bitField & 117506048) !== 0)) return;\n    if (value === this)\n        return this._rejectCallback(makeSelfResolutionError(), false);\n    var maybePromise = tryConvertToPromise(value, this);\n    if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n    if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n    var promise = maybePromise._target();\n\n    if (promise === this) {\n        this._reject(makeSelfResolutionError());\n        return;\n    }\n\n    var bitField = promise._bitField;\n    if (((bitField & 50397184) === 0)) {\n        var len = this._length();\n        if (len > 0) promise._migrateCallback0(this);\n        for (var i = 1; i < len; ++i) {\n            promise._migrateCallbackAt(this, i);\n        }\n        this._setFollowing();\n        this._setLength(0);\n        this._setFollowee(promise);\n    } else if (((bitField & 33554432) !== 0)) {\n        this._fulfill(promise._value());\n    } else if (((bitField & 16777216) !== 0)) {\n        this._reject(promise._reason());\n    } else {\n        var reason = new CancellationError(\"late cancellation observer\");\n        promise._attachExtraTrace(reason);\n        this._reject(reason);\n    }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n    var trace = util.ensureErrorObject(reason);\n    var hasStack = trace === reason;\n    if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n        var message = \"a promise was rejected with a non-error: \" +\n            util.classString(reason);\n        this._warn(message, true);\n    }\n    this._attachExtraTrace(trace, synchronous ? hasStack : false);\n    this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n    if (executor === INTERNAL) return;\n    var promise = this;\n    this._captureStackTrace();\n    this._pushContext();\n    var synchronous = true;\n    var r = this._execute(executor, function(value) {\n        promise._resolveCallback(value);\n    }, function (reason) {\n        promise._rejectCallback(reason, synchronous);\n    });\n    synchronous = false;\n    this._popContext();\n\n    if (r !== undefined) {\n        promise._rejectCallback(r, true);\n    }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n    handler, receiver, value, promise\n) {\n    var bitField = promise._bitField;\n    if (((bitField & 65536) !== 0)) return;\n    promise._pushContext();\n    var x;\n    if (receiver === APPLY) {\n        if (!value || typeof value.length !== \"number\") {\n            x = errorObj;\n            x.e = new TypeError(\"cannot .spread() a non-array: \" +\n                                    util.classString(value));\n        } else {\n            x = tryCatch(handler).apply(this._boundValue(), value);\n        }\n    } else {\n        x = tryCatch(handler).call(receiver, value);\n    }\n    var promiseCreated = promise._popContext();\n    bitField = promise._bitField;\n    if (((bitField & 65536) !== 0)) return;\n\n    if (x === NEXT_FILTER) {\n        promise._reject(value);\n    } else if (x === errorObj) {\n        promise._rejectCallback(x.e, false);\n    } else {\n        debug.checkForgottenReturns(x, promiseCreated, \"\",  promise, this);\n        promise._resolveCallback(x);\n    }\n};\n\nPromise.prototype._target = function() {\n    var ret = this;\n    while (ret._isFollowing()) ret = ret._followee();\n    return ret;\n};\n\nPromise.prototype._followee = function() {\n    return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n    this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n    var isPromise = promise instanceof Promise;\n    var bitField = this._bitField;\n    var asyncGuaranteed = ((bitField & 134217728) !== 0);\n    if (((bitField & 65536) !== 0)) {\n        if (isPromise) promise._invokeInternalOnCancel();\n\n        if (receiver instanceof PassThroughHandlerContext &&\n            receiver.isFinallyHandler()) {\n            receiver.cancelPromise = promise;\n            if (tryCatch(handler).call(receiver, value) === errorObj) {\n                promise._reject(errorObj.e);\n            }\n        } else if (handler === reflectHandler) {\n            promise._fulfill(reflectHandler.call(receiver));\n        } else if (receiver instanceof Proxyable) {\n            receiver._promiseCancelled(promise);\n        } else if (isPromise || promise instanceof PromiseArray) {\n            promise._cancel();\n        } else {\n            receiver.cancel();\n        }\n    } else if (typeof handler === \"function\") {\n        if (!isPromise) {\n            handler.call(receiver, value, promise);\n        } else {\n            if (asyncGuaranteed) promise._setAsyncGuaranteed();\n            this._settlePromiseFromHandler(handler, receiver, value, promise);\n        }\n    } else if (receiver instanceof Proxyable) {\n        if (!receiver._isResolved()) {\n            if (((bitField & 33554432) !== 0)) {\n                receiver._promiseFulfilled(value, promise);\n            } else {\n                receiver._promiseRejected(value, promise);\n            }\n        }\n    } else if (isPromise) {\n        if (asyncGuaranteed) promise._setAsyncGuaranteed();\n        if (((bitField & 33554432) !== 0)) {\n            promise._fulfill(value);\n        } else {\n            promise._reject(value);\n        }\n    }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n    var handler = ctx.handler;\n    var promise = ctx.promise;\n    var receiver = ctx.receiver;\n    var value = ctx.value;\n    if (typeof handler === \"function\") {\n        if (!(promise instanceof Promise)) {\n            handler.call(receiver, value, promise);\n        } else {\n            this._settlePromiseFromHandler(handler, receiver, value, promise);\n        }\n    } else if (promise instanceof Promise) {\n        promise._reject(value);\n    }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n    this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n    var promise = this._promise0;\n    var receiver = this._receiverAt(0);\n    this._promise0 = undefined;\n    this._receiver0 = undefined;\n    this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n    var base = index * 4 - 4;\n    this[base + 2] =\n    this[base + 3] =\n    this[base + 0] =\n    this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n    var bitField = this._bitField;\n    if (((bitField & 117506048) >>> 16)) return;\n    if (value === this) {\n        var err = makeSelfResolutionError();\n        this._attachExtraTrace(err);\n        return this._reject(err);\n    }\n    this._setFulfilled();\n    this._rejectionHandler0 = value;\n\n    if ((bitField & 65535) > 0) {\n        if (((bitField & 134217728) !== 0)) {\n            this._settlePromises();\n        } else {\n            async.settlePromises(this);\n        }\n    }\n};\n\nPromise.prototype._reject = function (reason) {\n    var bitField = this._bitField;\n    if (((bitField & 117506048) >>> 16)) return;\n    this._setRejected();\n    this._fulfillmentHandler0 = reason;\n\n    if (this._isFinal()) {\n        return async.fatalError(reason, util.isNode);\n    }\n\n    if ((bitField & 65535) > 0) {\n        async.settlePromises(this);\n    } else {\n        this._ensurePossibleRejectionHandled();\n    }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n    for (var i = 1; i < len; i++) {\n        var handler = this._fulfillmentHandlerAt(i);\n        var promise = this._promiseAt(i);\n        var receiver = this._receiverAt(i);\n        this._clearCallbackDataAtIndex(i);\n        this._settlePromise(promise, handler, receiver, value);\n    }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n    for (var i = 1; i < len; i++) {\n        var handler = this._rejectionHandlerAt(i);\n        var promise = this._promiseAt(i);\n        var receiver = this._receiverAt(i);\n        this._clearCallbackDataAtIndex(i);\n        this._settlePromise(promise, handler, receiver, reason);\n    }\n};\n\nPromise.prototype._settlePromises = function () {\n    var bitField = this._bitField;\n    var len = (bitField & 65535);\n\n    if (len > 0) {\n        if (((bitField & 16842752) !== 0)) {\n            var reason = this._fulfillmentHandler0;\n            this._settlePromise0(this._rejectionHandler0, reason, bitField);\n            this._rejectPromises(len, reason);\n        } else {\n            var value = this._rejectionHandler0;\n            this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n            this._fulfillPromises(len, value);\n        }\n        this._setLength(0);\n    }\n    this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n    var bitField = this._bitField;\n    if (((bitField & 33554432) !== 0)) {\n        return this._rejectionHandler0;\n    } else if (((bitField & 16777216) !== 0)) {\n        return this._fulfillmentHandler0;\n    }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n    debug.deprecated(\"Promise.defer\", \"new Promise\");\n    var promise = new Promise(INTERNAL);\n    return {\n        promise: promise,\n        resolve: deferResolve,\n        reject: deferReject\n    };\n};\n\nutil.notEnumerableProp(Promise,\n                       \"_makeSelfResolutionError\",\n                       makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n    debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n    Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.1\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n                                                         \n    util.toFastProperties(Promise);                                          \n    util.toFastProperties(Promise.prototype);                                \n    function fillTypes(value) {                                              \n        var p = new Promise(INTERNAL);                                       \n        p._fulfillmentHandler0 = value;                                      \n        p._rejectionHandler0 = value;                                        \n        p._promise0 = value;                                                 \n        p._receiver0 = value;                                                \n    }                                                                        \n    // Complete slack tracking, opt out of field-type tracking and           \n    // stabilize map                                                         \n    fillTypes({a: 1});                                                       \n    fillTypes({b: 2});                                                       \n    fillTypes({c: 3});                                                       \n    fillTypes(1);                                                            \n    fillTypes(function(){});                                                 \n    fillTypes(undefined);                                                    \n    fillTypes(false);                                                        \n    fillTypes(new Promise(INTERNAL));                                        \n    debug.setBounds(Async.firstLineError, util.lastLineError);               \n    return Promise;                                                          \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n    apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n    switch(val) {\n    case -2: return [];\n    case -3: return {};\n    case -6: return new Map();\n    }\n}\n\nfunction PromiseArray(values) {\n    var promise = this._promise = new Promise(INTERNAL);\n    if (values instanceof Promise) {\n        promise._propagateFrom(values, 3);\n    }\n    promise._setOnCancel(this);\n    this._values = values;\n    this._length = 0;\n    this._totalResolved = 0;\n    this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n    return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n    return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n    var values = tryConvertToPromise(this._values, this._promise);\n    if (values instanceof Promise) {\n        values = values._target();\n        var bitField = values._bitField;\n        ;\n        this._values = values;\n\n        if (((bitField & 50397184) === 0)) {\n            this._promise._setAsyncGuaranteed();\n            return values._then(\n                init,\n                this._reject,\n                undefined,\n                this,\n                resolveValueIfEmpty\n           );\n        } else if (((bitField & 33554432) !== 0)) {\n            values = values._value();\n        } else if (((bitField & 16777216) !== 0)) {\n            return this._reject(values._reason());\n        } else {\n            return this._cancel();\n        }\n    }\n    values = util.asArray(values);\n    if (values === null) {\n        var err = apiRejection(\n            \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n        this._promise._rejectCallback(err, false);\n        return;\n    }\n\n    if (values.length === 0) {\n        if (resolveValueIfEmpty === -5) {\n            this._resolveEmptyArray();\n        }\n        else {\n            this._resolve(toResolutionValue(resolveValueIfEmpty));\n        }\n        return;\n    }\n    this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n    var len = this.getActualLength(values.length);\n    this._length = len;\n    this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n    var result = this._promise;\n    var isResolved = false;\n    var bitField = null;\n    for (var i = 0; i < len; ++i) {\n        var maybePromise = tryConvertToPromise(values[i], result);\n\n        if (maybePromise instanceof Promise) {\n            maybePromise = maybePromise._target();\n            bitField = maybePromise._bitField;\n        } else {\n            bitField = null;\n        }\n\n        if (isResolved) {\n            if (bitField !== null) {\n                maybePromise.suppressUnhandledRejections();\n            }\n        } else if (bitField !== null) {\n            if (((bitField & 50397184) === 0)) {\n                maybePromise._proxy(this, i);\n                this._values[i] = maybePromise;\n            } else if (((bitField & 33554432) !== 0)) {\n                isResolved = this._promiseFulfilled(maybePromise._value(), i);\n            } else if (((bitField & 16777216) !== 0)) {\n                isResolved = this._promiseRejected(maybePromise._reason(), i);\n            } else {\n                isResolved = this._promiseCancelled(i);\n            }\n        } else {\n            isResolved = this._promiseFulfilled(maybePromise, i);\n        }\n    }\n    if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n    return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n    this._values = null;\n    this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n    if (this._isResolved() || !this._promise._isCancellable()) return;\n    this._values = null;\n    this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n    this._values = null;\n    this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    this._values[index] = value;\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= this._length) {\n        this._resolve(this._values);\n        return true;\n    }\n    return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n    this._cancel();\n    return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n    this._totalResolved++;\n    this._reject(reason);\n    return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n    if (this._isResolved()) return;\n    var values = this._values;\n    this._cancel();\n    if (values instanceof Promise) {\n        values.cancel();\n    } else {\n        for (var i = 0; i < values.length; ++i) {\n            if (values[i] instanceof Promise) {\n                values[i].cancel();\n            }\n        }\n    }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n    return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n    return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n    \"arity\",    \"length\",\n    \"name\",\n    \"arguments\",\n    \"caller\",\n    \"callee\",\n    \"prototype\",\n    \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n    return util.isIdentifier(name) &&\n        name.charAt(0) !== \"_\" &&\n        name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n    return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n    try {\n        return fn.__isPromisified__ === true;\n    }\n    catch (e) {\n        return false;\n    }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n    var val = util.getDataPropertyOrDefault(obj, key + suffix,\n                                            defaultPromisified);\n    return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n    for (var i = 0; i < ret.length; i += 2) {\n        var key = ret[i];\n        if (suffixRegexp.test(key)) {\n            var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n            for (var j = 0; j < ret.length; j += 2) {\n                if (ret[j] === keyWithoutAsyncSuffix) {\n                    throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\"\n                        .replace(\"%s\", suffix));\n                }\n            }\n        }\n    }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n    var keys = util.inheritedDataKeys(obj);\n    var ret = [];\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var value = obj[key];\n        var passesDefaultFilter = filter === defaultFilter\n            ? true : defaultFilter(key, value, obj);\n        if (typeof value === \"function\" &&\n            !isPromisified(value) &&\n            !hasPromisified(obj, key, suffix) &&\n            filter(key, value, obj, passesDefaultFilter)) {\n            ret.push(key, value);\n        }\n    }\n    checkValid(ret, suffix, suffixRegexp);\n    return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n    return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (false) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n    var ret = [likelyArgumentCount];\n    var min = Math.max(0, likelyArgumentCount - 1 - 3);\n    for(var i = likelyArgumentCount - 1; i >= min; --i) {\n        ret.push(i);\n    }\n    for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n        ret.push(i);\n    }\n    return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n    return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n    return util.filledRange(\n        Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n    if (typeof fn.length === \"number\") {\n        return Math.max(Math.min(fn.length, 1023 + 1), 0);\n    }\n    return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n    var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n    var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n    var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n    function generateCallForArgumentCount(count) {\n        var args = argumentSequence(count).join(\", \");\n        var comma = count > 0 ? \", \" : \"\";\n        var ret;\n        if (shouldProxyThis) {\n            ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n        } else {\n            ret = receiver === undefined\n                ? \"ret = callback({{args}}, nodeback); break;\\n\"\n                : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n        }\n        return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n    }\n\n    function generateArgumentSwitchCase() {\n        var ret = \"\";\n        for (var i = 0; i < argumentOrder.length; ++i) {\n            ret += \"case \" + argumentOrder[i] +\":\" +\n                generateCallForArgumentCount(argumentOrder[i]);\n        }\n\n        ret += \"                                                             \\n\\\n        default:                                                             \\n\\\n            var args = new Array(len + 1);                                   \\n\\\n            var i = 0;                                                       \\n\\\n            for (var i = 0; i < len; ++i) {                                  \\n\\\n               args[i] = arguments[i];                                       \\n\\\n            }                                                                \\n\\\n            args[i] = nodeback;                                              \\n\\\n            [CodeForCall]                                                    \\n\\\n            break;                                                           \\n\\\n        \".replace(\"[CodeForCall]\", (shouldProxyThis\n                                ? \"ret = callback.apply(this, args);\\n\"\n                                : \"ret = callback.apply(receiver, args);\\n\"));\n        return ret;\n    }\n\n    var getFunctionCode = typeof callback === \"string\"\n                                ? (\"this != null ? this['\"+callback+\"'] : fn\")\n                                : \"fn\";\n    var body = \"'use strict';                                                \\n\\\n        var ret = function (Parameters) {                                    \\n\\\n            'use strict';                                                    \\n\\\n            var len = arguments.length;                                      \\n\\\n            var promise = new Promise(INTERNAL);                             \\n\\\n            promise._captureStackTrace();                                    \\n\\\n            var nodeback = nodebackForPromise(promise, \" + multiArgs + \");   \\n\\\n            var ret;                                                         \\n\\\n            var callback = tryCatch([GetFunctionCode]);                      \\n\\\n            switch(len) {                                                    \\n\\\n                [CodeForSwitchCase]                                          \\n\\\n            }                                                                \\n\\\n            if (ret === errorObj) {                                          \\n\\\n                promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n            }                                                                \\n\\\n            if (!promise._isFateSealed()) promise._setAsyncGuaranteed();     \\n\\\n            return promise;                                                  \\n\\\n        };                                                                   \\n\\\n        notEnumerableProp(ret, '__isPromisified__', true);                   \\n\\\n        return ret;                                                          \\n\\\n    \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n        .replace(\"[GetFunctionCode]\", getFunctionCode);\n    body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n    return new Function(\"Promise\",\n                        \"fn\",\n                        \"receiver\",\n                        \"withAppended\",\n                        \"maybeWrapAsError\",\n                        \"nodebackForPromise\",\n                        \"tryCatch\",\n                        \"errorObj\",\n                        \"notEnumerableProp\",\n                        \"INTERNAL\",\n                        body)(\n                    Promise,\n                    fn,\n                    receiver,\n                    withAppended,\n                    maybeWrapAsError,\n                    nodebackForPromise,\n                    util.tryCatch,\n                    util.errorObj,\n                    util.notEnumerableProp,\n                    INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n    var defaultThis = (function() {return this;})();\n    var method = callback;\n    if (typeof method === \"string\") {\n        callback = fn;\n    }\n    function promisified() {\n        var _receiver = receiver;\n        if (receiver === THIS) _receiver = this;\n        var promise = new Promise(INTERNAL);\n        promise._captureStackTrace();\n        var cb = typeof method === \"string\" && this !== defaultThis\n            ? this[method] : callback;\n        var fn = nodebackForPromise(promise, multiArgs);\n        try {\n            cb.apply(_receiver, withAppended(arguments, fn));\n        } catch(e) {\n            promise._rejectCallback(maybeWrapAsError(e), true, true);\n        }\n        if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n        return promise;\n    }\n    util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n    return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n    ? makeNodePromisifiedEval\n    : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n    var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n    var methods =\n        promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n    for (var i = 0, len = methods.length; i < len; i+= 2) {\n        var key = methods[i];\n        var fn = methods[i+1];\n        var promisifiedKey = key + suffix;\n        if (promisifier === makeNodePromisified) {\n            obj[promisifiedKey] =\n                makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n        } else {\n            var promisified = promisifier(fn, function() {\n                return makeNodePromisified(key, THIS, key,\n                                           fn, suffix, multiArgs);\n            });\n            util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n            obj[promisifiedKey] = promisified;\n        }\n    }\n    util.toFastProperties(obj);\n    return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n    return makeNodePromisified(callback, receiver, undefined,\n                                callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n    if (typeof fn !== \"function\") {\n        throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n    }\n    if (isPromisified(fn)) {\n        return fn;\n    }\n    options = Object(options);\n    var receiver = options.context === undefined ? THIS : options.context;\n    var multiArgs = !!options.multiArgs;\n    var ret = promisify(fn, receiver, multiArgs);\n    util.copyDescriptors(fn, ret, propsFilter);\n    return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n    if (typeof target !== \"function\" && typeof target !== \"object\") {\n        throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    options = Object(options);\n    var multiArgs = !!options.multiArgs;\n    var suffix = options.suffix;\n    if (typeof suffix !== \"string\") suffix = defaultSuffix;\n    var filter = options.filter;\n    if (typeof filter !== \"function\") filter = defaultFilter;\n    var promisifier = options.promisifier;\n    if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n    if (!util.isIdentifier(suffix)) {\n        throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n\n    var keys = util.inheritedDataKeys(target);\n    for (var i = 0; i < keys.length; ++i) {\n        var value = target[keys[i]];\n        if (keys[i] !== \"constructor\" &&\n            util.isClass(value)) {\n            promisifyAll(value.prototype, suffix, filter, promisifier,\n                multiArgs);\n            promisifyAll(value, suffix, filter, promisifier, multiArgs);\n        }\n    }\n\n    return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n    Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n    var index = 0;\n    var size = 0;\n\n    function extractEntry(value, key) {\n        this[index] = value;\n        this[index + size] = key;\n        index++;\n    }\n\n    return function mapToEntries(map) {\n        size = map.size;\n        index = 0;\n        var ret = new Array(map.size * 2);\n        map.forEach(extractEntry, ret);\n        return ret;\n    };\n})();\n\nvar entriesToMap = function(entries) {\n    var ret = new Es6Map();\n    var length = entries.length / 2 | 0;\n    for (var i = 0; i < length; ++i) {\n        var key = entries[length + i];\n        var value = entries[i];\n        ret.set(key, value);\n    }\n    return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n    var isMap = false;\n    var entries;\n    if (Es6Map !== undefined && obj instanceof Es6Map) {\n        entries = mapToEntries(obj);\n        isMap = true;\n    } else {\n        var keys = es5.keys(obj);\n        var len = keys.length;\n        entries = new Array(len * 2);\n        for (var i = 0; i < len; ++i) {\n            var key = keys[i];\n            entries[i] = obj[key];\n            entries[i + len] = key;\n        }\n    }\n    this.constructor$(entries);\n    this._isMap = isMap;\n    this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    this._values[index] = value;\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= this._length) {\n        var val;\n        if (this._isMap) {\n            val = entriesToMap(this._values);\n        } else {\n            val = {};\n            var keyOffset = this.length();\n            for (var i = 0, len = this.length(); i < len; ++i) {\n                val[this._values[i + keyOffset]] = this._values[i];\n            }\n        }\n        this._resolve(val);\n        return true;\n    }\n    return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n    return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n    return len >> 1;\n};\n\nfunction props(promises) {\n    var ret;\n    var castValue = tryConvertToPromise(promises);\n\n    if (!isObject(castValue)) {\n        return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    } else if (castValue instanceof Promise) {\n        ret = castValue._then(\n            Promise.props, undefined, undefined, undefined, undefined);\n    } else {\n        ret = new PropertiesPromiseArray(castValue).promise();\n    }\n\n    if (castValue instanceof Promise) {\n        ret._propagateFrom(castValue, 2);\n    }\n    return ret;\n}\n\nPromise.prototype.props = function () {\n    return props(this);\n};\n\nPromise.props = function (promises) {\n    return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n    for (var j = 0; j < len; ++j) {\n        dst[j + dstIndex] = src[j + srcIndex];\n        src[j + srcIndex] = void 0;\n    }\n}\n\nfunction Queue(capacity) {\n    this._capacity = capacity;\n    this._length = 0;\n    this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n    return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n    var length = this.length();\n    this._checkCapacity(length + 1);\n    var i = (this._front + length) & (this._capacity - 1);\n    this[i] = arg;\n    this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n    var length = this.length() + 3;\n    if (this._willBeOverCapacity(length)) {\n        this._pushOne(fn);\n        this._pushOne(receiver);\n        this._pushOne(arg);\n        return;\n    }\n    var j = this._front + length - 3;\n    this._checkCapacity(length);\n    var wrapMask = this._capacity - 1;\n    this[(j + 0) & wrapMask] = fn;\n    this[(j + 1) & wrapMask] = receiver;\n    this[(j + 2) & wrapMask] = arg;\n    this._length = length;\n};\n\nQueue.prototype.shift = function () {\n    var front = this._front,\n        ret = this[front];\n\n    this[front] = undefined;\n    this._front = (front + 1) & (this._capacity - 1);\n    this._length--;\n    return ret;\n};\n\nQueue.prototype.length = function () {\n    return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n    if (this._capacity < size) {\n        this._resizeTo(this._capacity << 1);\n    }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n    var oldCapacity = this._capacity;\n    this._capacity = capacity;\n    var front = this._front;\n    var length = this._length;\n    var moveItemsCount = (front + length) & (oldCapacity - 1);\n    arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n    Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n    return promise.then(function(array) {\n        return race(array, promise);\n    });\n};\n\nfunction race(promises, parent) {\n    var maybePromise = tryConvertToPromise(promises);\n\n    if (maybePromise instanceof Promise) {\n        return raceLater(maybePromise);\n    } else {\n        promises = util.asArray(promises);\n        if (promises === null)\n            return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n    }\n\n    var ret = new Promise(INTERNAL);\n    if (parent !== undefined) {\n        ret._propagateFrom(parent, 3);\n    }\n    var fulfill = ret._fulfill;\n    var reject = ret._reject;\n    for (var i = 0, len = promises.length; i < len; ++i) {\n        var val = promises[i];\n\n        if (val === undefined && !(i in promises)) {\n            continue;\n        }\n\n        Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n    }\n    return ret;\n}\n\nPromise.race = function (promises) {\n    return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n    return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n                          PromiseArray,\n                          apiRejection,\n                          tryConvertToPromise,\n                          INTERNAL,\n                          debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n    this.constructor$(promises);\n    var domain = getDomain();\n    this._fn = domain === null ? fn : util.domainBind(domain, fn);\n    if (initialValue !== undefined) {\n        initialValue = Promise.resolve(initialValue);\n        initialValue._attachCancellationCallback(this);\n    }\n    this._initialValue = initialValue;\n    this._currentCancellable = null;\n    if(_each === INTERNAL) {\n        this._eachValues = Array(this._length);\n    } else if (_each === 0) {\n        this._eachValues = null;\n    } else {\n        this._eachValues = undefined;\n    }\n    this._promise._captureStackTrace();\n    this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n    if (this._eachValues !== undefined && \n        this._eachValues !== null && \n        accum !== INTERNAL) {\n        this._eachValues.push(accum);\n    }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n    if (this._eachValues !== null) {\n        this._eachValues.push(value);\n    }\n    return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n    this._resolve(this._eachValues !== undefined ? this._eachValues\n                                                 : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n    return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n    this._promise._resolveCallback(value);\n    this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n    if (sender === this._initialValue) return this._cancel();\n    if (this._isResolved()) return;\n    this._resultCancelled$();\n    if (this._currentCancellable instanceof Promise) {\n        this._currentCancellable.cancel();\n    }\n    if (this._initialValue instanceof Promise) {\n        this._initialValue.cancel();\n    }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n    this._values = values;\n    var value;\n    var i;\n    var length = values.length;\n    if (this._initialValue !== undefined) {\n        value = this._initialValue;\n        i = 0;\n    } else {\n        value = Promise.resolve(values[0]);\n        i = 1;\n    }\n\n    this._currentCancellable = value;\n\n    if (!value.isRejected()) {\n        for (; i < length; ++i) {\n            var ctx = {\n                accum: null,\n                value: values[i],\n                index: i,\n                length: length,\n                array: this\n            };\n            value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n        }\n    }\n\n    if (this._eachValues !== undefined) {\n        value = value\n            ._then(this._eachComplete, undefined, undefined, this, undefined);\n    }\n    value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n    return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n    return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n    if (this.isFulfilled()) {\n        array._resolve(valueOrReason);\n    } else {\n        array._reject(valueOrReason);\n    }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n    if (typeof fn !== \"function\") {\n        return apiRejection(\"expecting a function but got \" + util.classString(fn));\n    }\n    var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n    return array.promise();\n}\n\nfunction gotAccum(accum) {\n    this.accum = accum;\n    this.array._gotAccum(accum);\n    var value = tryConvertToPromise(this.value, this.array._promise);\n    if (value instanceof Promise) {\n        this.array._currentCancellable = value;\n        return value._then(gotValue, undefined, undefined, this, undefined);\n    } else {\n        return gotValue.call(this, value);\n    }\n}\n\nfunction gotValue(value) {\n    var array = this.array;\n    var promise = array._promise;\n    var fn = tryCatch(array._fn);\n    promise._pushContext();\n    var ret;\n    if (array._eachValues !== undefined) {\n        ret = fn.call(promise._boundValue(), value, this.index, this.length);\n    } else {\n        ret = fn.call(promise._boundValue(),\n                              this.accum, value, this.index, this.length);\n    }\n    if (ret instanceof Promise) {\n        array._currentCancellable = ret;\n    }\n    var promiseCreated = promise._popContext();\n    debug.checkForgottenReturns(\n        ret,\n        promiseCreated,\n        array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n        promise\n    );\n    return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n    throw new Error(\"No async scheduler available\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n    var GlobalSetImmediate = global.setImmediate;\n    var ProcessNextTick = process.nextTick;\n    schedule = util.isRecentNode\n                ? function(fn) { GlobalSetImmediate.call(global, fn); }\n                : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n           typeof NativePromise.resolve === \"function\") {\n    var nativePromise = NativePromise.resolve();\n    schedule = function(fn) {\n        nativePromise.then(fn);\n    };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n          !(typeof window !== \"undefined\" &&\n            window.navigator &&\n            (window.navigator.standalone || window.cordova))) {\n    schedule = (function() {\n        var div = document.createElement(\"div\");\n        var opts = {attributes: true};\n        var toggleScheduled = false;\n        var div2 = document.createElement(\"div\");\n        var o2 = new MutationObserver(function() {\n            div.classList.toggle(\"foo\");\n            toggleScheduled = false;\n        });\n        o2.observe(div2, opts);\n\n        var scheduleToggle = function() {\n            if (toggleScheduled) return;\n            toggleScheduled = true;\n            div2.classList.toggle(\"foo\");\n        };\n\n        return function schedule(fn) {\n            var o = new MutationObserver(function() {\n                o.disconnect();\n                fn();\n            });\n            o.observe(div, opts);\n            scheduleToggle();\n        };\n    })();\n} else if (typeof setImmediate !== \"undefined\") {\n    schedule = function (fn) {\n        setImmediate(fn);\n    };\n} else if (typeof setTimeout !== \"undefined\") {\n    schedule = function (fn) {\n        setTimeout(fn, 0);\n    };\n} else {\n    schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n    function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n    this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n    this._values[index] = inspection;\n    var totalResolved = ++this._totalResolved;\n    if (totalResolved >= this._length) {\n        this._resolve(this._values);\n        return true;\n    }\n    return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n    var ret = new PromiseInspection();\n    ret._bitField = 33554432;\n    ret._settledValueField = value;\n    return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n    var ret = new PromiseInspection();\n    ret._bitField = 16777216;\n    ret._settledValueField = reason;\n    return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n    debug.deprecated(\".settle()\", \".reflect()\");\n    return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n    return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n    this.constructor$(values);\n    this._howMany = 0;\n    this._unwrap = false;\n    this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n    if (!this._initialized) {\n        return;\n    }\n    if (this._howMany === 0) {\n        this._resolve([]);\n        return;\n    }\n    this._init$(undefined, -5);\n    var isArrayResolved = isArray(this._values);\n    if (!this._isResolved() &&\n        isArrayResolved &&\n        this._howMany > this._canPossiblyFulfill()) {\n        this._reject(this._getRangeError(this.length()));\n    }\n};\n\nSomePromiseArray.prototype.init = function () {\n    this._initialized = true;\n    this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n    this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n    return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n    this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n    this._addFulfilled(value);\n    if (this._fulfilled() === this.howMany()) {\n        this._values.length = this.howMany();\n        if (this.howMany() === 1 && this._unwrap) {\n            this._resolve(this._values[0]);\n        } else {\n            this._resolve(this._values);\n        }\n        return true;\n    }\n    return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n    this._addRejected(reason);\n    return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n    if (this._values instanceof Promise || this._values == null) {\n        return this._cancel();\n    }\n    this._addRejected(CANCELLATION);\n    return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n    if (this.howMany() > this._canPossiblyFulfill()) {\n        var e = new AggregateError();\n        for (var i = this.length(); i < this._values.length; ++i) {\n            if (this._values[i] !== CANCELLATION) {\n                e.push(this._values[i]);\n            }\n        }\n        if (e.length > 0) {\n            this._reject(e);\n        } else {\n            this._cancel();\n        }\n        return true;\n    }\n    return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n    return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n    return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n    this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n    this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n    return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n    var message = \"Input array must contain at least \" +\n            this._howMany + \" items but contains only \" + count + \" items\";\n    return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n    this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n    if ((howMany | 0) !== howMany || howMany < 0) {\n        return apiRejection(\"expecting a positive integer\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    var ret = new SomePromiseArray(promises);\n    var promise = ret.promise();\n    ret.setHowMany(howMany);\n    ret.init();\n    return promise;\n}\n\nPromise.some = function (promises, howMany) {\n    return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n    return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n    if (promise !== undefined) {\n        promise = promise._target();\n        this._bitField = promise._bitField;\n        this._settledValueField = promise._isFateSealed()\n            ? promise._settledValue() : undefined;\n    }\n    else {\n        this._bitField = 0;\n        this._settledValueField = undefined;\n    }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n    return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n    if (!this.isFulfilled()) {\n        throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n    if (!this.isRejected()) {\n        throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a    See http://goo.gl/MqrFmX\\u000a\");\n    }\n    return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n    return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n    return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n    return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n    return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n    return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n    return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n    return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n    return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n    return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n    return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n    return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n    return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n    return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n    var target = this._target();\n    target._unsetRejectionIsUnhandled();\n    return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n    return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n    this._unsetRejectionIsUnhandled();\n    return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n    if (isObject(obj)) {\n        if (obj instanceof Promise) return obj;\n        var then = getThen(obj);\n        if (then === errorObj) {\n            if (context) context._pushContext();\n            var ret = Promise.reject(then.e);\n            if (context) context._popContext();\n            return ret;\n        } else if (typeof then === \"function\") {\n            if (isAnyBluebirdPromise(obj)) {\n                var ret = new Promise(INTERNAL);\n                obj._then(\n                    ret._fulfill,\n                    ret._reject,\n                    undefined,\n                    ret,\n                    null\n                );\n                return ret;\n            }\n            return doThenable(obj, then, context);\n        }\n    }\n    return obj;\n}\n\nfunction doGetThen(obj) {\n    return obj.then;\n}\n\nfunction getThen(obj) {\n    try {\n        return doGetThen(obj);\n    } catch (e) {\n        errorObj.e = e;\n        return errorObj;\n    }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n    try {\n        return hasProp.call(obj, \"_promise0\");\n    } catch (e) {\n        return false;\n    }\n}\n\nfunction doThenable(x, then, context) {\n    var promise = new Promise(INTERNAL);\n    var ret = promise;\n    if (context) context._pushContext();\n    promise._captureStackTrace();\n    if (context) context._popContext();\n    var synchronous = true;\n    var result = util.tryCatch(then).call(x, resolve, reject);\n    synchronous = false;\n\n    if (promise && result === errorObj) {\n        promise._rejectCallback(result.e, true, true);\n        promise = null;\n    }\n\n    function resolve(value) {\n        if (!promise) return;\n        promise._resolveCallback(value);\n        promise = null;\n    }\n\n    function reject(reason) {\n        if (!promise) return;\n        promise._rejectCallback(reason, synchronous, true);\n        promise = null;\n    }\n    return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle)  {\n    this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n    clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n    var ret;\n    var handle;\n    if (value !== undefined) {\n        ret = Promise.resolve(value)\n                ._then(afterValue, null, null, ms, undefined);\n        if (debug.cancellation() && value instanceof Promise) {\n            ret._setOnCancel(value);\n        }\n    } else {\n        ret = new Promise(INTERNAL);\n        handle = setTimeout(function() { ret._fulfill(); }, +ms);\n        if (debug.cancellation()) {\n            ret._setOnCancel(new HandleWrapper(handle));\n        }\n        ret._captureStackTrace();\n    }\n    ret._setAsyncGuaranteed();\n    return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n    return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n    var err;\n    if (typeof message !== \"string\") {\n        if (message instanceof Error) {\n            err = message;\n        } else {\n            err = new TimeoutError(\"operation timed out\");\n        }\n    } else {\n        err = new TimeoutError(message);\n    }\n    util.markAsOriginatingFromRejection(err);\n    promise._attachExtraTrace(err);\n    promise._reject(err);\n\n    if (parent != null) {\n        parent.cancel();\n    }\n};\n\nfunction successClear(value) {\n    clearTimeout(this.handle);\n    return value;\n}\n\nfunction failureClear(reason) {\n    clearTimeout(this.handle);\n    throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n    ms = +ms;\n    var ret, parent;\n\n    var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n        if (ret.isPending()) {\n            afterTimeout(ret, message, parent);\n        }\n    }, ms));\n\n    if (debug.cancellation()) {\n        parent = this.then();\n        ret = parent._then(successClear, failureClear,\n                            undefined, handleWrapper, undefined);\n        ret._setOnCancel(handleWrapper);\n    } else {\n        ret = this._then(successClear, failureClear,\n                            undefined, handleWrapper, undefined);\n    }\n\n    return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n    createContext, INTERNAL, debug) {\n    var util = _dereq_(\"./util\");\n    var TypeError = _dereq_(\"./errors\").TypeError;\n    var inherits = _dereq_(\"./util\").inherits;\n    var errorObj = util.errorObj;\n    var tryCatch = util.tryCatch;\n    var NULL = {};\n\n    function thrower(e) {\n        setTimeout(function(){throw e;}, 0);\n    }\n\n    function castPreservingDisposable(thenable) {\n        var maybePromise = tryConvertToPromise(thenable);\n        if (maybePromise !== thenable &&\n            typeof thenable._isDisposable === \"function\" &&\n            typeof thenable._getDisposer === \"function\" &&\n            thenable._isDisposable()) {\n            maybePromise._setDisposable(thenable._getDisposer());\n        }\n        return maybePromise;\n    }\n    function dispose(resources, inspection) {\n        var i = 0;\n        var len = resources.length;\n        var ret = new Promise(INTERNAL);\n        function iterator() {\n            if (i >= len) return ret._fulfill();\n            var maybePromise = castPreservingDisposable(resources[i++]);\n            if (maybePromise instanceof Promise &&\n                maybePromise._isDisposable()) {\n                try {\n                    maybePromise = tryConvertToPromise(\n                        maybePromise._getDisposer().tryDispose(inspection),\n                        resources.promise);\n                } catch (e) {\n                    return thrower(e);\n                }\n                if (maybePromise instanceof Promise) {\n                    return maybePromise._then(iterator, thrower,\n                                              null, null, null);\n                }\n            }\n            iterator();\n        }\n        iterator();\n        return ret;\n    }\n\n    function Disposer(data, promise, context) {\n        this._data = data;\n        this._promise = promise;\n        this._context = context;\n    }\n\n    Disposer.prototype.data = function () {\n        return this._data;\n    };\n\n    Disposer.prototype.promise = function () {\n        return this._promise;\n    };\n\n    Disposer.prototype.resource = function () {\n        if (this.promise().isFulfilled()) {\n            return this.promise().value();\n        }\n        return NULL;\n    };\n\n    Disposer.prototype.tryDispose = function(inspection) {\n        var resource = this.resource();\n        var context = this._context;\n        if (context !== undefined) context._pushContext();\n        var ret = resource !== NULL\n            ? this.doDispose(resource, inspection) : null;\n        if (context !== undefined) context._popContext();\n        this._promise._unsetDisposable();\n        this._data = null;\n        return ret;\n    };\n\n    Disposer.isDisposer = function (d) {\n        return (d != null &&\n                typeof d.resource === \"function\" &&\n                typeof d.tryDispose === \"function\");\n    };\n\n    function FunctionDisposer(fn, promise, context) {\n        this.constructor$(fn, promise, context);\n    }\n    inherits(FunctionDisposer, Disposer);\n\n    FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n        var fn = this.data();\n        return fn.call(resource, resource, inspection);\n    };\n\n    function maybeUnwrapDisposer(value) {\n        if (Disposer.isDisposer(value)) {\n            this.resources[this.index]._setDisposable(value);\n            return value.promise();\n        }\n        return value;\n    }\n\n    function ResourceList(length) {\n        this.length = length;\n        this.promise = null;\n        this[length-1] = null;\n    }\n\n    ResourceList.prototype._resultCancelled = function() {\n        var len = this.length;\n        for (var i = 0; i < len; ++i) {\n            var item = this[i];\n            if (item instanceof Promise) {\n                item.cancel();\n            }\n        }\n    };\n\n    Promise.using = function () {\n        var len = arguments.length;\n        if (len < 2) return apiRejection(\n                        \"you must pass at least 2 arguments to Promise.using\");\n        var fn = arguments[len - 1];\n        if (typeof fn !== \"function\") {\n            return apiRejection(\"expecting a function but got \" + util.classString(fn));\n        }\n        var input;\n        var spreadArgs = true;\n        if (len === 2 && Array.isArray(arguments[0])) {\n            input = arguments[0];\n            len = input.length;\n            spreadArgs = false;\n        } else {\n            input = arguments;\n            len--;\n        }\n        var resources = new ResourceList(len);\n        for (var i = 0; i < len; ++i) {\n            var resource = input[i];\n            if (Disposer.isDisposer(resource)) {\n                var disposer = resource;\n                resource = resource.promise();\n                resource._setDisposable(disposer);\n            } else {\n                var maybePromise = tryConvertToPromise(resource);\n                if (maybePromise instanceof Promise) {\n                    resource =\n                        maybePromise._then(maybeUnwrapDisposer, null, null, {\n                            resources: resources,\n                            index: i\n                    }, undefined);\n                }\n            }\n            resources[i] = resource;\n        }\n\n        var reflectedResources = new Array(resources.length);\n        for (var i = 0; i < reflectedResources.length; ++i) {\n            reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n        }\n\n        var resultPromise = Promise.all(reflectedResources)\n            .then(function(inspections) {\n                for (var i = 0; i < inspections.length; ++i) {\n                    var inspection = inspections[i];\n                    if (inspection.isRejected()) {\n                        errorObj.e = inspection.error();\n                        return errorObj;\n                    } else if (!inspection.isFulfilled()) {\n                        resultPromise.cancel();\n                        return;\n                    }\n                    inspections[i] = inspection.value();\n                }\n                promise._pushContext();\n\n                fn = tryCatch(fn);\n                var ret = spreadArgs\n                    ? fn.apply(undefined, inspections) : fn(inspections);\n                var promiseCreated = promise._popContext();\n                debug.checkForgottenReturns(\n                    ret, promiseCreated, \"Promise.using\", promise);\n                return ret;\n            });\n\n        var promise = resultPromise.lastly(function() {\n            var inspection = new Promise.PromiseInspection(resultPromise);\n            return dispose(resources, inspection);\n        });\n        resources.promise = promise;\n        promise._setOnCancel(resources);\n        return promise;\n    };\n\n    Promise.prototype._setDisposable = function (disposer) {\n        this._bitField = this._bitField | 131072;\n        this._disposer = disposer;\n    };\n\n    Promise.prototype._isDisposable = function () {\n        return (this._bitField & 131072) > 0;\n    };\n\n    Promise.prototype._getDisposer = function () {\n        return this._disposer;\n    };\n\n    Promise.prototype._unsetDisposable = function () {\n        this._bitField = this._bitField & (~131072);\n        this._disposer = undefined;\n    };\n\n    Promise.prototype.disposer = function (fn) {\n        if (typeof fn === \"function\") {\n            return new FunctionDisposer(fn, this, createContext());\n        }\n        throw new TypeError();\n    };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n    typeof window !== \"undefined\" ? window :\n    typeof global !== \"undefined\" ? global :\n    this !== undefined ? this : null;\n\nfunction tryCatcher() {\n    try {\n        var target = tryCatchTarget;\n        tryCatchTarget = null;\n        return target.apply(this, arguments);\n    } catch (e) {\n        errorObj.e = e;\n        return errorObj;\n    }\n}\nfunction tryCatch(fn) {\n    tryCatchTarget = fn;\n    return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n    var hasProp = {}.hasOwnProperty;\n\n    function T() {\n        this.constructor = Child;\n        this.constructor$ = Parent;\n        for (var propertyName in Parent.prototype) {\n            if (hasProp.call(Parent.prototype, propertyName) &&\n                propertyName.charAt(propertyName.length-1) !== \"$\"\n           ) {\n                this[propertyName + \"$\"] = Parent.prototype[propertyName];\n            }\n        }\n    }\n    T.prototype = Parent.prototype;\n    Child.prototype = new T();\n    return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n    return val == null || val === true || val === false ||\n        typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n    return typeof value === \"function\" ||\n           typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n    if (!isPrimitive(maybeError)) return maybeError;\n\n    return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n    var len = target.length;\n    var ret = new Array(len + 1);\n    var i;\n    for (i = 0; i < len; ++i) {\n        ret[i] = target[i];\n    }\n    ret[i] = appendee;\n    return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n    if (es5.isES5) {\n        var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n        if (desc != null) {\n            return desc.get == null && desc.set == null\n                    ? desc.value\n                    : defaultValue;\n        }\n    } else {\n        return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n    }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n    if (isPrimitive(obj)) return obj;\n    var descriptor = {\n        value: value,\n        configurable: true,\n        enumerable: false,\n        writable: true\n    };\n    es5.defineProperty(obj, name, descriptor);\n    return obj;\n}\n\nfunction thrower(r) {\n    throw r;\n}\n\nvar inheritedDataKeys = (function() {\n    var excludedPrototypes = [\n        Array.prototype,\n        Object.prototype,\n        Function.prototype\n    ];\n\n    var isExcludedProto = function(val) {\n        for (var i = 0; i < excludedPrototypes.length; ++i) {\n            if (excludedPrototypes[i] === val) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    if (es5.isES5) {\n        var getKeys = Object.getOwnPropertyNames;\n        return function(obj) {\n            var ret = [];\n            var visitedKeys = Object.create(null);\n            while (obj != null && !isExcludedProto(obj)) {\n                var keys;\n                try {\n                    keys = getKeys(obj);\n                } catch (e) {\n                    return ret;\n                }\n                for (var i = 0; i < keys.length; ++i) {\n                    var key = keys[i];\n                    if (visitedKeys[key]) continue;\n                    visitedKeys[key] = true;\n                    var desc = Object.getOwnPropertyDescriptor(obj, key);\n                    if (desc != null && desc.get == null && desc.set == null) {\n                        ret.push(key);\n                    }\n                }\n                obj = es5.getPrototypeOf(obj);\n            }\n            return ret;\n        };\n    } else {\n        var hasProp = {}.hasOwnProperty;\n        return function(obj) {\n            if (isExcludedProto(obj)) return [];\n            var ret = [];\n\n            /*jshint forin:false */\n            enumeration: for (var key in obj) {\n                if (hasProp.call(obj, key)) {\n                    ret.push(key);\n                } else {\n                    for (var i = 0; i < excludedPrototypes.length; ++i) {\n                        if (hasProp.call(excludedPrototypes[i], key)) {\n                            continue enumeration;\n                        }\n                    }\n                    ret.push(key);\n                }\n            }\n            return ret;\n        };\n    }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n    try {\n        if (typeof fn === \"function\") {\n            var keys = es5.names(fn.prototype);\n\n            var hasMethods = es5.isES5 && keys.length > 1;\n            var hasMethodsOtherThanConstructor = keys.length > 0 &&\n                !(keys.length === 1 && keys[0] === \"constructor\");\n            var hasThisAssignmentAndStaticMethods =\n                thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n            if (hasMethods || hasMethodsOtherThanConstructor ||\n                hasThisAssignmentAndStaticMethods) {\n                return true;\n            }\n        }\n        return false;\n    } catch (e) {\n        return false;\n    }\n}\n\nfunction toFastProperties(obj) {\n    /*jshint -W027,-W055,-W031*/\n    function FakeConstructor() {}\n    FakeConstructor.prototype = obj;\n    var l = 8;\n    while (l--) new FakeConstructor();\n    return obj;\n    eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n    return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n    var ret = new Array(count);\n    for(var i = 0; i < count; ++i) {\n        ret[i] = prefix + i + suffix;\n    }\n    return ret;\n}\n\nfunction safeToString(obj) {\n    try {\n        return obj + \"\";\n    } catch (e) {\n        return \"[no string representation]\";\n    }\n}\n\nfunction isError(obj) {\n    return obj instanceof Error ||\n        (obj !== null &&\n           typeof obj === \"object\" &&\n           typeof obj.message === \"string\" &&\n           typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n    try {\n        notEnumerableProp(e, \"isOperational\", true);\n    }\n    catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n    if (e == null) return false;\n    return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n        e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n    return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n    if (!(\"stack\" in new Error())) {\n        return function(value) {\n            if (canAttachTrace(value)) return value;\n            try {throw new Error(safeToString(value));}\n            catch(err) {return err;}\n        };\n    } else {\n        return function(value) {\n            if (canAttachTrace(value)) return value;\n            return new Error(safeToString(value));\n        };\n    }\n})();\n\nfunction classString(obj) {\n    return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n    var keys = es5.names(from);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        if (filter(key)) {\n            try {\n                es5.defineProperty(to, key, es5.getDescriptor(from, key));\n            } catch (ignore) {}\n        }\n    }\n}\n\nvar asArray = function(v) {\n    if (es5.isArray(v)) {\n        return v;\n    }\n    return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n    var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n        return Array.from(v);\n    } : function(v) {\n        var ret = [];\n        var it = v[Symbol.iterator]();\n        var itResult;\n        while (!((itResult = it.next()).done)) {\n            ret.push(itResult.value);\n        }\n        return ret;\n    };\n\n    asArray = function(v) {\n        if (es5.isArray(v)) {\n            return v;\n        } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n            return ArrayFrom(v);\n        }\n        return null;\n    };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n        classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n    typeof process.env !== \"undefined\";\n\nfunction env(key) {\n    return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n    if (typeof Promise === \"function\") {\n        try {\n            var promise = new Promise(function(){});\n            if ({}.toString.call(promise) === \"[object Promise]\") {\n                return Promise;\n            }\n        } catch (e) {}\n    }\n}\n\nfunction domainBind(self, cb) {\n    return self.bind(cb);\n}\n\nvar ret = {\n    isClass: isClass,\n    isIdentifier: isIdentifier,\n    inheritedDataKeys: inheritedDataKeys,\n    getDataPropertyOrDefault: getDataPropertyOrDefault,\n    thrower: thrower,\n    isArray: es5.isArray,\n    asArray: asArray,\n    notEnumerableProp: notEnumerableProp,\n    isPrimitive: isPrimitive,\n    isObject: isObject,\n    isError: isError,\n    canEvaluate: canEvaluate,\n    errorObj: errorObj,\n    tryCatch: tryCatch,\n    inherits: inherits,\n    withAppended: withAppended,\n    maybeWrapAsError: maybeWrapAsError,\n    toFastProperties: toFastProperties,\n    filledRange: filledRange,\n    toString: safeToString,\n    canAttachTrace: canAttachTrace,\n    ensureErrorObject: ensureErrorObject,\n    originatesFromRejection: originatesFromRejection,\n    markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n    classString: classString,\n    copyDescriptors: copyDescriptors,\n    hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n                 typeof chrome.loadTimes === \"function\",\n    isNode: isNode,\n    hasEnvVariables: hasEnvVariables,\n    env: env,\n    global: globalObject,\n    getNativePromise: getNativePromise,\n    domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n    var version = process.versions.node.split(\".\").map(Number);\n    return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n});                    ;if (typeof window !== 'undefined' && window !== null) {                               window.P = window.Promise;                                                     } else if (typeof self !== 'undefined' && self !== null) {                             self.P = self.Promise;                                                         }\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(20), __webpack_require__(11), __webpack_require__(43).setImmediate))\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(44);\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6\u20138\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11), __webpack_require__(20)))\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayFilter = __webpack_require__(21),\n    baseFilter = __webpack_require__(46),\n    baseIteratee = __webpack_require__(65),\n    isArray = __webpack_require__(1);\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': true },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n  var func = isArray(collection) ? arrayFilter : baseFilter;\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseEach = __webpack_require__(47);\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n  var result = [];\n  baseEach(collection, function(value, index, collection) {\n    if (predicate(value, index, collection)) {\n      result.push(value);\n    }\n  });\n  return result;\n}\n\nmodule.exports = baseFilter;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseForOwn = __webpack_require__(48),\n    createBaseEach = __webpack_require__(64);\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFor = __webpack_require__(49),\n    keys = __webpack_require__(12);\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createBaseFor = __webpack_require__(50);\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseTimes = __webpack_require__(52),\n    isArguments = __webpack_require__(22),\n    isArray = __webpack_require__(1),\n    isBuffer = __webpack_require__(24),\n    isIndex = __webpack_require__(26),\n    isTypedArray = __webpack_require__(27);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(3),\n    isObjectLike = __webpack_require__(4);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(5);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(3),\n    isLength = __webpack_require__(13),\n    isObjectLike = __webpack_require__(4);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(23);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(25)(module)))\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototype = __webpack_require__(61),\n    nativeKeys = __webpack_require__(62);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar overArg = __webpack_require__(63);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArrayLike = __webpack_require__(28);\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseMatches = __webpack_require__(66),\n    baseMatchesProperty = __webpack_require__(116),\n    identity = __webpack_require__(127),\n    isArray = __webpack_require__(1),\n    property = __webpack_require__(128);\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsMatch = __webpack_require__(67),\n    getMatchData = __webpack_require__(115),\n    matchesStrictComparable = __webpack_require__(36);\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Stack = __webpack_require__(30),\n    baseIsEqual = __webpack_require__(33);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports) {\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(7);\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(7);\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(7);\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(7);\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ListCache = __webpack_require__(6);\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports) {\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports) {\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ListCache = __webpack_require__(6),\n    Map = __webpack_require__(15),\n    MapCache = __webpack_require__(16);\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(29),\n    isMasked = __webpack_require__(79),\n    isObject = __webpack_require__(14),\n    toSource = __webpack_require__(32);\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar coreJsData = __webpack_require__(80);\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(0);\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Hash = __webpack_require__(83),\n    ListCache = __webpack_require__(6),\n    Map = __webpack_require__(15);\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hashClear = __webpack_require__(84),\n    hashDelete = __webpack_require__(85),\n    hashGet = __webpack_require__(86),\n    hashHas = __webpack_require__(87),\n    hashSet = __webpack_require__(88);\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(8);\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(8);\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(8);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(8);\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(9);\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(9);\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(9);\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(9);\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Stack = __webpack_require__(30),\n    equalArrays = __webpack_require__(34),\n    equalByTag = __webpack_require__(100),\n    equalObjects = __webpack_require__(104),\n    getTag = __webpack_require__(110),\n    isArray = __webpack_require__(1),\n    isBuffer = __webpack_require__(24),\n    isTypedArray = __webpack_require__(27);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MapCache = __webpack_require__(16),\n    setCacheAdd = __webpack_require__(96),\n    setCacheHas = __webpack_require__(97);\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(5),\n    Uint8Array = __webpack_require__(101),\n    eq = __webpack_require__(31),\n    equalArrays = __webpack_require__(34),\n    mapToArray = __webpack_require__(102),\n    setToArray = __webpack_require__(103);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(0);\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getAllKeys = __webpack_require__(105);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetAllKeys = __webpack_require__(106),\n    getSymbols = __webpack_require__(108),\n    keys = __webpack_require__(12);\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayPush = __webpack_require__(107),\n    isArray = __webpack_require__(1);\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayFilter = __webpack_require__(21),\n    stubArray = __webpack_require__(109);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DataView = __webpack_require__(111),\n    Map = __webpack_require__(15),\n    Promise = __webpack_require__(112),\n    Set = __webpack_require__(113),\n    WeakMap = __webpack_require__(114),\n    baseGetTag = __webpack_require__(3),\n    toSource = __webpack_require__(32);\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(2),\n    root = __webpack_require__(0);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(2),\n    root = __webpack_require__(0);\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(2),\n    root = __webpack_require__(0);\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(2),\n    root = __webpack_require__(0);\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isStrictComparable = __webpack_require__(35),\n    keys = __webpack_require__(12);\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsEqual = __webpack_require__(33),\n    get = __webpack_require__(117),\n    hasIn = __webpack_require__(124),\n    isKey = __webpack_require__(17),\n    isStrictComparable = __webpack_require__(35),\n    matchesStrictComparable = __webpack_require__(36),\n    toKey = __webpack_require__(10);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGet = __webpack_require__(37);\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar memoizeCapped = __webpack_require__(119);\n\n/** Used to match property names within property paths. */\nvar reLeadingDot = /^\\./,\n    rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar memoize = __webpack_require__(120);\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MapCache = __webpack_require__(16);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseToString = __webpack_require__(122);\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(5),\n    arrayMap = __webpack_require__(123),\n    isArray = __webpack_require__(1),\n    isSymbol = __webpack_require__(18);\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseHasIn = __webpack_require__(125),\n    hasPath = __webpack_require__(126);\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar castPath = __webpack_require__(38),\n    isArguments = __webpack_require__(22),\n    isArray = __webpack_require__(1),\n    isIndex = __webpack_require__(26),\n    isLength = __webpack_require__(13),\n    toKey = __webpack_require__(10);\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseProperty = __webpack_require__(129),\n    basePropertyDeep = __webpack_require__(130),\n    isKey = __webpack_require__(17),\n    toKey = __webpack_require__(10);\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGet = __webpack_require__(37);\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = __webpack_require__(19);\nvar VBox = /** @class */ (function () {\n    function VBox(r1, r2, g1, g2, b1, b2, hist) {\n        this._volume = -1;\n        this._count = -1;\n        this.dimension = { r1: r1, r2: r2, g1: g1, g2: g2, b1: b1, b2: b2 };\n        this.hist = hist;\n    }\n    VBox.build = function (pixels, shouldIgnore) {\n        var hn = 1 << (3 * util_1.SIGBITS);\n        var hist = new Uint32Array(hn);\n        var rmax;\n        var rmin;\n        var gmax;\n        var gmin;\n        var bmax;\n        var bmin;\n        var r;\n        var g;\n        var b;\n        var a;\n        rmax = gmax = bmax = 0;\n        rmin = gmin = bmin = Number.MAX_VALUE;\n        var n = pixels.length / 4;\n        var i = 0;\n        while (i < n) {\n            var offset = i * 4;\n            i++;\n            r = pixels[offset + 0];\n            g = pixels[offset + 1];\n            b = pixels[offset + 2];\n            a = pixels[offset + 3];\n            // Ignored pixels' alpha is marked as 0 in filtering stage\n            if (a === 0)\n                continue;\n            r = r >> util_1.RSHIFT;\n            g = g >> util_1.RSHIFT;\n            b = b >> util_1.RSHIFT;\n            var index = util_1.getColorIndex(r, g, b);\n            hist[index] += 1;\n            if (r > rmax)\n                rmax = r;\n            if (r < rmin)\n                rmin = r;\n            if (g > gmax)\n                gmax = g;\n            if (g < gmin)\n                gmin = g;\n            if (b > bmax)\n                bmax = b;\n            if (b < bmin)\n                bmin = b;\n        }\n        return new VBox(rmin, rmax, gmin, gmax, bmin, bmax, hist);\n    };\n    VBox.prototype.invalidate = function () {\n        this._volume = this._count = -1;\n        this._avg = null;\n    };\n    VBox.prototype.volume = function () {\n        if (this._volume < 0) {\n            var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n            this._volume = (r2 - r1 + 1) * (g2 - g1 + 1) * (b2 - b1 + 1);\n        }\n        return this._volume;\n    };\n    VBox.prototype.count = function () {\n        if (this._count < 0) {\n            var hist = this.hist;\n            var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n            var c = 0;\n            for (var r = r1; r <= r2; r++) {\n                for (var g = g1; g <= g2; g++) {\n                    for (var b = b1; b <= b2; b++) {\n                        var index = util_1.getColorIndex(r, g, b);\n                        c += hist[index];\n                    }\n                }\n            }\n            this._count = c;\n        }\n        return this._count;\n    };\n    VBox.prototype.clone = function () {\n        var hist = this.hist;\n        var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n        return new VBox(r1, r2, g1, g2, b1, b2, hist);\n    };\n    VBox.prototype.avg = function () {\n        if (!this._avg) {\n            var hist = this.hist;\n            var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n            var ntot = 0;\n            var mult = 1 << (8 - util_1.SIGBITS);\n            var rsum = void 0;\n            var gsum = void 0;\n            var bsum = void 0;\n            rsum = gsum = bsum = 0;\n            for (var r = r1; r <= r2; r++) {\n                for (var g = g1; g <= g2; g++) {\n                    for (var b = b1; b <= b2; b++) {\n                        var index = util_1.getColorIndex(r, g, b);\n                        var h = hist[index];\n                        ntot += h;\n                        rsum += (h * (r + 0.5) * mult);\n                        gsum += (h * (g + 0.5) * mult);\n                        bsum += (h * (b + 0.5) * mult);\n                    }\n                }\n            }\n            if (ntot) {\n                this._avg = [\n                    ~~(rsum / ntot),\n                    ~~(gsum / ntot),\n                    ~~(bsum / ntot)\n                ];\n            }\n            else {\n                this._avg = [\n                    ~~(mult * (r1 + r2 + 1) / 2),\n                    ~~(mult * (g1 + g2 + 1) / 2),\n                    ~~(mult * (b1 + b2 + 1) / 2),\n                ];\n            }\n        }\n        return this._avg;\n    };\n    VBox.prototype.contains = function (rgb) {\n        var r = rgb[0], g = rgb[1], b = rgb[2];\n        var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n        r >>= util_1.RSHIFT;\n        g >>= util_1.RSHIFT;\n        b >>= util_1.RSHIFT;\n        return r >= r1 && r <= r2\n            && g >= g1 && g <= g2\n            && b >= b1 && b <= b2;\n    };\n    VBox.prototype.split = function () {\n        var hist = this.hist;\n        var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n        var count = this.count();\n        if (!count)\n            return [];\n        if (count === 1)\n            return [this.clone()];\n        var rw = r2 - r1 + 1;\n        var gw = g2 - g1 + 1;\n        var bw = b2 - b1 + 1;\n        var maxw = Math.max(rw, gw, bw);\n        var accSum = null;\n        var sum;\n        var total;\n        sum = total = 0;\n        var maxd = null;\n        if (maxw === rw) {\n            maxd = 'r';\n            accSum = new Uint32Array(r2 + 1);\n            for (var r = r1; r <= r2; r++) {\n                sum = 0;\n                for (var g = g1; g <= g2; g++) {\n                    for (var b = b1; b <= b2; b++) {\n                        var index = util_1.getColorIndex(r, g, b);\n                        sum += hist[index];\n                    }\n                }\n                total += sum;\n                accSum[r] = total;\n            }\n        }\n        else if (maxw === gw) {\n            maxd = 'g';\n            accSum = new Uint32Array(g2 + 1);\n            for (var g = g1; g <= g2; g++) {\n                sum = 0;\n                for (var r = r1; r <= r2; r++) {\n                    for (var b = b1; b <= b2; b++) {\n                        var index = util_1.getColorIndex(r, g, b);\n                        sum += hist[index];\n                    }\n                }\n                total += sum;\n                accSum[g] = total;\n            }\n        }\n        else {\n            maxd = 'b';\n            accSum = new Uint32Array(b2 + 1);\n            for (var b = b1; b <= b2; b++) {\n                sum = 0;\n                for (var r = r1; r <= r2; r++) {\n                    for (var g = g1; g <= g2; g++) {\n                        var index = util_1.getColorIndex(r, g, b);\n                        sum += hist[index];\n                    }\n                }\n                total += sum;\n                accSum[b] = total;\n            }\n        }\n        var splitPoint = -1;\n        var reverseSum = new Uint32Array(accSum.length);\n        for (var i = 0; i < accSum.length; i++) {\n            var d = accSum[i];\n            if (splitPoint < 0 && d > total / 2)\n                splitPoint = i;\n            reverseSum[i] = total - d;\n        }\n        var vbox = this;\n        function doCut(d) {\n            var dim1 = d + '1';\n            var dim2 = d + '2';\n            var d1 = vbox.dimension[dim1];\n            var d2 = vbox.dimension[dim2];\n            var vbox1 = vbox.clone();\n            var vbox2 = vbox.clone();\n            var left = splitPoint - d1;\n            var right = d2 - splitPoint;\n            if (left <= right) {\n                d2 = Math.min(d2 - 1, ~~(splitPoint + right / 2));\n                d2 = Math.max(0, d2);\n            }\n            else {\n                d2 = Math.max(d1, ~~(splitPoint - 1 - left / 2));\n                d2 = Math.min(vbox.dimension[dim2], d2);\n            }\n            while (!accSum[d2])\n                d2++;\n            var c2 = reverseSum[d2];\n            while (!c2 && accSum[d2 - 1])\n                c2 = reverseSum[--d2];\n            vbox1.dimension[dim2] = d2;\n            vbox2.dimension[dim1] = d2 + 1;\n            return [vbox1, vbox2];\n        }\n        return doCut(maxd);\n    };\n    return VBox;\n}());\nexports.default = VBox;\n\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PQueue = /** @class */ (function () {\n    function PQueue(comparator) {\n        this._comparator = comparator;\n        this.contents = [];\n        this._sorted = false;\n    }\n    PQueue.prototype._sort = function () {\n        if (!this._sorted) {\n            this.contents.sort(this._comparator);\n            this._sorted = true;\n        }\n    };\n    PQueue.prototype.push = function (item) {\n        this.contents.push(item);\n        this._sorted = false;\n    };\n    PQueue.prototype.peek = function (index) {\n        this._sort();\n        index = typeof index === 'number' ? index : this.contents.length - 1;\n        return this.contents[index];\n    };\n    PQueue.prototype.pop = function () {\n        this._sort();\n        return this.contents.pop();\n    };\n    PQueue.prototype.size = function () {\n        return this.contents.length;\n    };\n    PQueue.prototype.map = function (mapper) {\n        this._sort();\n        return this.contents.map(mapper);\n    };\n    return PQueue;\n}());\nexports.default = PQueue;\n\n\n/***/ })\n/******/ ]);\n//# sourceMappingURL=474d262f2b165bfd49fe.worker.js.map", t.p + "474d262f2b165bfd49fe.worker.js");
    };
  }, function (e, n, t) {
    "use strict";
    var r = window.URL || window.webkitURL;e.exports = function (e, n) {
      try {
        try {
          var t;try {
            var o = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;t = new o(), t.append(e), t = t.getBlob();
          } catch (n) {
            t = new Blob([e]);
          }return new Worker(r.createObjectURL(t));
        } catch (n) {
          return new Worker("data:application/javascript," + encodeURIComponent(e));
        }
      } catch (e) {
        if (!n) throw Error("Inline worker is not supported");return new Worker(n);
      }
    };
  }]);
  },{}],"node_modules/parcel-bundler/src/builtins/hmr-runtime.js":[function(require,module,exports) {
  var global = arguments[3];
  var OVERLAY_ID = '__parcel__error__overlay__';
  
  var OldModule = module.bundle.Module;
  
  function Module(moduleName) {
    OldModule.call(this, moduleName);
    this.hot = {
      data: module.bundle.hotData,
      _acceptCallbacks: [],
      _disposeCallbacks: [],
      accept: function (fn) {
        this._acceptCallbacks.push(fn || function () {});
      },
      dispose: function (fn) {
        this._disposeCallbacks.push(fn);
      }
    };
  
    module.bundle.hotData = null;
  }
  
  module.bundle.Module = Module;
  
  var parent = module.bundle.parent;
  if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {
    var hostname = '' || location.hostname;
    var protocol = location.protocol === 'https:' ? 'wss' : 'ws';
    var ws = new WebSocket(protocol + '://' + hostname + ':' + '37599' + '/');
    ws.onmessage = function (event) {
      var data = JSON.parse(event.data);
  
      if (data.type === 'update') {
        console.clear();
  
        data.assets.forEach(function (asset) {
          hmrApply(global.parcelRequire, asset);
        });
  
        data.assets.forEach(function (asset) {
          if (!asset.isNew) {
            hmrAccept(global.parcelRequire, asset.id);
          }
        });
      }
  
      if (data.type === 'reload') {
        ws.close();
        ws.onclose = function () {
          location.reload();
        };
      }
  
      if (data.type === 'error-resolved') {
        console.log('[parcel] ✨ Error resolved');
  
        removeErrorOverlay();
      }
  
      if (data.type === 'error') {
        console.error('[parcel] 🚨  ' + data.error.message + '\n' + data.error.stack);
  
        removeErrorOverlay();
  
        var overlay = createErrorOverlay(data);
        document.body.appendChild(overlay);
      }
    };
  }
  
  function removeErrorOverlay() {
    var overlay = document.getElementById(OVERLAY_ID);
    if (overlay) {
      overlay.remove();
    }
  }
  
  function createErrorOverlay(data) {
    var overlay = document.createElement('div');
    overlay.id = OVERLAY_ID;
  
    // html encode message and stack trace
    var message = document.createElement('div');
    var stackTrace = document.createElement('pre');
    message.innerText = data.error.message;
    stackTrace.innerText = data.error.stack;
  
    overlay.innerHTML = '<div style="background: black; font-size: 16px; color: white; position: fixed; height: 100%; width: 100%; top: 0px; left: 0px; padding: 30px; opacity: 0.85; font-family: Menlo, Consolas, monospace; z-index: 9999;">' + '<span style="background: red; padding: 2px 4px; border-radius: 2px;">ERROR</span>' + '<span style="top: 2px; margin-left: 5px; position: relative;">🚨</span>' + '<div style="font-size: 18px; font-weight: bold; margin-top: 20px;">' + message.innerHTML + '</div>' + '<pre>' + stackTrace.innerHTML + '</pre>' + '</div>';
  
    return overlay;
  }
  
  function getParents(bundle, id) {
    var modules = bundle.modules;
    if (!modules) {
      return [];
    }
  
    var parents = [];
    var k, d, dep;
  
    for (k in modules) {
      for (d in modules[k][1]) {
        dep = modules[k][1][d];
        if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) {
          parents.push(k);
        }
      }
    }
  
    if (bundle.parent) {
      parents = parents.concat(getParents(bundle.parent, id));
    }
  
    return parents;
  }
  
  function hmrApply(bundle, asset) {
    var modules = bundle.modules;
    if (!modules) {
      return;
    }
  
    if (modules[asset.id] || !bundle.parent) {
      var fn = new Function('require', 'module', 'exports', asset.generated.js);
      asset.isNew = !modules[asset.id];
      modules[asset.id] = [fn, asset.deps];
    } else if (bundle.parent) {
      hmrApply(bundle.parent, asset);
    }
  }
  
  function hmrAccept(bundle, id) {
    var modules = bundle.modules;
    if (!modules) {
      return;
    }
  
    if (!modules[id] && bundle.parent) {
      return hmrAccept(bundle.parent, id);
    }
  
    var cached = bundle.cache[id];
    bundle.hotData = {};
    if (cached) {
      cached.hot.data = bundle.hotData;
    }
  
    if (cached && cached.hot && cached.hot._disposeCallbacks.length) {
      cached.hot._disposeCallbacks.forEach(function (cb) {
        cb(bundle.hotData);
      });
    }
  
    delete bundle.cache[id];
    bundle(id);
  
    cached = bundle.cache[id];
    if (cached && cached.hot && cached.hot._acceptCallbacks.length) {
      cached.hot._acceptCallbacks.forEach(function (cb) {
        cb();
      });
      return true;
    }
  
    return getParents(global.parcelRequire, id).some(function (id) {
      return hmrAccept(global.parcelRequire, id);
    });
  }
  },{}]},{},["node_modules/parcel-bundler/src/builtins/hmr-runtime.js","js/vibrant.worker.min.js"], null)
  //# sourceMappingURL=/vibrant.worker.min.bf85bef0.map