[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-includes/js/dist/ -> block-editor.js (source)

   1  this["wp"] = this["wp"] || {}; this["wp"]["blockEditor"] =
   2  /******/ (function(modules) { // webpackBootstrap
   3  /******/     // The module cache
   4  /******/     var installedModules = {};
   5  /******/
   6  /******/     // The require function
   7  /******/ 	function __webpack_require__(moduleId) {
   8  /******/
   9  /******/         // Check if module is in cache
  10  /******/         if(installedModules[moduleId]) {
  11  /******/             return installedModules[moduleId].exports;
  12  /******/         }
  13  /******/         // Create a new module (and put it into the cache)
  14  /******/         var module = installedModules[moduleId] = {
  15  /******/             i: moduleId,
  16  /******/             l: false,
  17  /******/             exports: {}
  18  /******/         };
  19  /******/
  20  /******/         // Execute the module function
  21  /******/         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  22  /******/
  23  /******/         // Flag the module as loaded
  24  /******/         module.l = true;
  25  /******/
  26  /******/         // Return the exports of the module
  27  /******/         return module.exports;
  28  /******/     }
  29  /******/
  30  /******/
  31  /******/     // expose the modules object (__webpack_modules__)
  32  /******/     __webpack_require__.m = modules;
  33  /******/
  34  /******/     // expose the module cache
  35  /******/     __webpack_require__.c = installedModules;
  36  /******/
  37  /******/     // define getter function for harmony exports
  38  /******/     __webpack_require__.d = function(exports, name, getter) {
  39  /******/         if(!__webpack_require__.o(exports, name)) {
  40  /******/             Object.defineProperty(exports, name, { enumerable: true, get: getter });
  41  /******/         }
  42  /******/     };
  43  /******/
  44  /******/     // define __esModule on exports
  45  /******/     __webpack_require__.r = function(exports) {
  46  /******/         if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  47  /******/             Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  48  /******/         }
  49  /******/         Object.defineProperty(exports, '__esModule', { value: true });
  50  /******/     };
  51  /******/
  52  /******/     // create a fake namespace object
  53  /******/     // mode & 1: value is a module id, require it
  54  /******/     // mode & 2: merge all properties of value into the ns
  55  /******/     // mode & 4: return value when already ns object
  56  /******/     // mode & 8|1: behave like require
  57  /******/     __webpack_require__.t = function(value, mode) {
  58  /******/         if(mode & 1) value = __webpack_require__(value);
  59  /******/         if(mode & 8) return value;
  60  /******/         if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
  61  /******/         var ns = Object.create(null);
  62  /******/         __webpack_require__.r(ns);
  63  /******/         Object.defineProperty(ns, 'default', { enumerable: true, value: value });
  64  /******/         if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
  65  /******/         return ns;
  66  /******/     };
  67  /******/
  68  /******/     // getDefaultExport function for compatibility with non-harmony modules
  69  /******/     __webpack_require__.n = function(module) {
  70  /******/         var getter = module && module.__esModule ?
  71  /******/ 			function getDefault() { return module['default']; } :
  72  /******/ 			function getModuleExports() { return module; };
  73  /******/         __webpack_require__.d(getter, 'a', getter);
  74  /******/         return getter;
  75  /******/     };
  76  /******/
  77  /******/     // Object.prototype.hasOwnProperty.call
  78  /******/     __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  79  /******/
  80  /******/     // __webpack_public_path__
  81  /******/     __webpack_require__.p = "";
  82  /******/
  83  /******/
  84  /******/     // Load entry module and return exports
  85  /******/     return __webpack_require__(__webpack_require__.s = 363);
  86  /******/ })
  87  /************************************************************************/
  88  /******/ ({
  89  
  90  /***/ 0:
  91  /***/ (function(module, exports) {
  92  
  93  (function() { module.exports = this["wp"]["element"]; }());
  94  
  95  /***/ }),
  96  
  97  /***/ 1:
  98  /***/ (function(module, exports) {
  99  
 100  (function() { module.exports = this["wp"]["i18n"]; }());
 101  
 102  /***/ }),
 103  
 104  /***/ 10:
 105  /***/ (function(module, exports, __webpack_require__) {
 106  
 107  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
 108    Copyright (c) 2017 Jed Watson.
 109    Licensed under the MIT License (MIT), see
 110    http://jedwatson.github.io/classnames
 111  */
 112  /* global define */
 113  
 114  (function () {
 115      'use strict';
 116  
 117      var hasOwn = {}.hasOwnProperty;
 118  
 119  	function classNames () {
 120          var classes = [];
 121  
 122          for (var i = 0; i < arguments.length; i++) {
 123              var arg = arguments[i];
 124              if (!arg) continue;
 125  
 126              var argType = typeof arg;
 127  
 128              if (argType === 'string' || argType === 'number') {
 129                  classes.push(arg);
 130              } else if (Array.isArray(arg) && arg.length) {
 131                  var inner = classNames.apply(null, arg);
 132                  if (inner) {
 133                      classes.push(inner);
 134                  }
 135              } else if (argType === 'object') {
 136                  for (var key in arg) {
 137                      if (hasOwn.call(arg, key) && arg[key]) {
 138                          classes.push(key);
 139                      }
 140                  }
 141              }
 142          }
 143  
 144          return classes.join(' ');
 145      }
 146  
 147      if ( true && module.exports) {
 148          classNames.default = classNames;
 149          module.exports = classNames;
 150      } else if (true) {
 151          // register as 'classnames', consistent with npm package name
 152          !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
 153              return classNames;
 154          }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
 155                  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
 156      } else {}
 157  }());
 158  
 159  
 160  /***/ }),
 161  
 162  /***/ 11:
 163  /***/ (function(module, exports) {
 164  
 165  (function() { module.exports = this["wp"]["blocks"]; }());
 166  
 167  /***/ }),
 168  
 169  /***/ 110:
 170  /***/ (function(module, exports) {
 171  
 172  if (typeof Object.create === 'function') {
 173    // implementation from standard node.js 'util' module
 174    module.exports = function inherits(ctor, superCtor) {
 175      if (superCtor) {
 176        ctor.super_ = superCtor
 177        ctor.prototype = Object.create(superCtor.prototype, {
 178          constructor: {
 179            value: ctor,
 180            enumerable: false,
 181            writable: true,
 182            configurable: true
 183          }
 184        })
 185      }
 186    };
 187  } else {
 188    // old school shim for old browsers
 189    module.exports = function inherits(ctor, superCtor) {
 190      if (superCtor) {
 191        ctor.super_ = superCtor
 192        var TempCtor = function () {}
 193        TempCtor.prototype = superCtor.prototype
 194        ctor.prototype = new TempCtor()
 195        ctor.prototype.constructor = ctor
 196      }
 197    }
 198  }
 199  
 200  
 201  /***/ }),
 202  
 203  /***/ 112:
 204  /***/ (function(module, exports, __webpack_require__) {
 205  
 206  "use strict";
 207  
 208  
 209  var util = __webpack_require__(113);
 210  
 211  function scrollIntoView(elem, container, config) {
 212    config = config || {};
 213    // document 归一化到 window
 214    if (container.nodeType === 9) {
 215      container = util.getWindow(container);
 216    }
 217  
 218    var allowHorizontalScroll = config.allowHorizontalScroll;
 219    var onlyScrollIfNeeded = config.onlyScrollIfNeeded;
 220    var alignWithTop = config.alignWithTop;
 221    var alignWithLeft = config.alignWithLeft;
 222    var offsetTop = config.offsetTop || 0;
 223    var offsetLeft = config.offsetLeft || 0;
 224    var offsetBottom = config.offsetBottom || 0;
 225    var offsetRight = config.offsetRight || 0;
 226  
 227    allowHorizontalScroll = allowHorizontalScroll === undefined ? true : allowHorizontalScroll;
 228  
 229    var isWin = util.isWindow(container);
 230    var elemOffset = util.offset(elem);
 231    var eh = util.outerHeight(elem);
 232    var ew = util.outerWidth(elem);
 233    var containerOffset = undefined;
 234    var ch = undefined;
 235    var cw = undefined;
 236    var containerScroll = undefined;
 237    var diffTop = undefined;
 238    var diffBottom = undefined;
 239    var win = undefined;
 240    var winScroll = undefined;
 241    var ww = undefined;
 242    var wh = undefined;
 243  
 244    if (isWin) {
 245      win = container;
 246      wh = util.height(win);
 247      ww = util.width(win);
 248      winScroll = {
 249        left: util.scrollLeft(win),
 250        top: util.scrollTop(win)
 251      };
 252      // elem 相对 container 可视视窗的距离
 253      diffTop = {
 254        left: elemOffset.left - winScroll.left - offsetLeft,
 255        top: elemOffset.top - winScroll.top - offsetTop
 256      };
 257      diffBottom = {
 258        left: elemOffset.left + ew - (winScroll.left + ww) + offsetRight,
 259        top: elemOffset.top + eh - (winScroll.top + wh) + offsetBottom
 260      };
 261      containerScroll = winScroll;
 262    } else {
 263      containerOffset = util.offset(container);
 264      ch = container.clientHeight;
 265      cw = container.clientWidth;
 266      containerScroll = {
 267        left: container.scrollLeft,
 268        top: container.scrollTop
 269      };
 270      // elem 相对 container 可视视窗的距离
 271      // 注意边框, offset 是边框到根节点
 272      diffTop = {
 273        left: elemOffset.left - (containerOffset.left + (parseFloat(util.css(container, 'borderLeftWidth')) || 0)) - offsetLeft,
 274        top: elemOffset.top - (containerOffset.top + (parseFloat(util.css(container, 'borderTopWidth')) || 0)) - offsetTop
 275      };
 276      diffBottom = {
 277        left: elemOffset.left + ew - (containerOffset.left + cw + (parseFloat(util.css(container, 'borderRightWidth')) || 0)) + offsetRight,
 278        top: elemOffset.top + eh - (containerOffset.top + ch + (parseFloat(util.css(container, 'borderBottomWidth')) || 0)) + offsetBottom
 279      };
 280    }
 281  
 282    if (diffTop.top < 0 || diffBottom.top > 0) {
 283      // 强制向上
 284      if (alignWithTop === true) {
 285        util.scrollTop(container, containerScroll.top + diffTop.top);
 286      } else if (alignWithTop === false) {
 287        util.scrollTop(container, containerScroll.top + diffBottom.top);
 288      } else {
 289        // 自动调整
 290        if (diffTop.top < 0) {
 291          util.scrollTop(container, containerScroll.top + diffTop.top);
 292        } else {
 293          util.scrollTop(container, containerScroll.top + diffBottom.top);
 294        }
 295      }
 296    } else {
 297      if (!onlyScrollIfNeeded) {
 298        alignWithTop = alignWithTop === undefined ? true : !!alignWithTop;
 299        if (alignWithTop) {
 300          util.scrollTop(container, containerScroll.top + diffTop.top);
 301        } else {
 302          util.scrollTop(container, containerScroll.top + diffBottom.top);
 303        }
 304      }
 305    }
 306  
 307    if (allowHorizontalScroll) {
 308      if (diffTop.left < 0 || diffBottom.left > 0) {
 309        // 强制向上
 310        if (alignWithLeft === true) {
 311          util.scrollLeft(container, containerScroll.left + diffTop.left);
 312        } else if (alignWithLeft === false) {
 313          util.scrollLeft(container, containerScroll.left + diffBottom.left);
 314        } else {
 315          // 自动调整
 316          if (diffTop.left < 0) {
 317            util.scrollLeft(container, containerScroll.left + diffTop.left);
 318          } else {
 319            util.scrollLeft(container, containerScroll.left + diffBottom.left);
 320          }
 321        }
 322      } else {
 323        if (!onlyScrollIfNeeded) {
 324          alignWithLeft = alignWithLeft === undefined ? true : !!alignWithLeft;
 325          if (alignWithLeft) {
 326            util.scrollLeft(container, containerScroll.left + diffTop.left);
 327          } else {
 328            util.scrollLeft(container, containerScroll.left + diffBottom.left);
 329          }
 330        }
 331      }
 332    }
 333  }
 334  
 335  module.exports = scrollIntoView;
 336  
 337  /***/ }),
 338  
 339  /***/ 113:
 340  /***/ (function(module, exports, __webpack_require__) {
 341  
 342  "use strict";
 343  
 344  
 345  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 346  
 347  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
 348  
 349  var RE_NUM = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source;
 350  
 351  function getClientPosition(elem) {
 352    var box = undefined;
 353    var x = undefined;
 354    var y = undefined;
 355    var doc = elem.ownerDocument;
 356    var body = doc.body;
 357    var docElem = doc && doc.documentElement;
 358    // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式
 359    box = elem.getBoundingClientRect();
 360  
 361    // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop
 362    // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确
 363    // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin
 364  
 365    x = box.left;
 366    y = box.top;
 367  
 368    // In IE, most of the time, 2 extra pixels are added to the top and left
 369    // due to the implicit 2-pixel inset border.  In IE6/7 quirks mode and
 370    // IE6 standards mode, this border can be overridden by setting the
 371    // document element's border to zero -- thus, we cannot rely on the
 372    // offset always being 2 pixels.
 373  
 374    // In quirks mode, the offset can be determined by querying the body's
 375    // clientLeft/clientTop, but in standards mode, it is found by querying
 376    // the document element's clientLeft/clientTop.  Since we already called
 377    // getClientBoundingRect we have already forced a reflow, so it is not
 378    // too expensive just to query them all.
 379  
 380    // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的
 381    // 窗口边框标准是设 documentElement ,quirks 时设置 body
 382    // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去
 383    // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置
 384    // 标准 ie 下 docElem.clientTop 就是 border-top
 385    // ie7 html 即窗口边框改变不了。永远为 2
 386    // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0
 387  
 388    x -= docElem.clientLeft || body.clientLeft || 0;
 389    y -= docElem.clientTop || body.clientTop || 0;
 390  
 391    return {
 392      left: x,
 393      top: y
 394    };
 395  }
 396  
 397  function getScroll(w, top) {
 398    var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];
 399    var method = 'scroll' + (top ? 'Top' : 'Left');
 400    if (typeof ret !== 'number') {
 401      var d = w.document;
 402      // ie6,7,8 standard mode
 403      ret = d.documentElement[method];
 404      if (typeof ret !== 'number') {
 405        // quirks mode
 406        ret = d.body[method];
 407      }
 408    }
 409    return ret;
 410  }
 411  
 412  function getScrollLeft(w) {
 413    return getScroll(w);
 414  }
 415  
 416  function getScrollTop(w) {
 417    return getScroll(w, true);
 418  }
 419  
 420  function getOffset(el) {
 421    var pos = getClientPosition(el);
 422    var doc = el.ownerDocument;
 423    var w = doc.defaultView || doc.parentWindow;
 424    pos.left += getScrollLeft(w);
 425    pos.top += getScrollTop(w);
 426    return pos;
 427  }
 428  function _getComputedStyle(elem, name, computedStyle_) {
 429    var val = '';
 430    var d = elem.ownerDocument;
 431    var computedStyle = computedStyle_ || d.defaultView.getComputedStyle(elem, null);
 432  
 433    // https://github.com/kissyteam/kissy/issues/61
 434    if (computedStyle) {
 435      val = computedStyle.getPropertyValue(name) || computedStyle[name];
 436    }
 437  
 438    return val;
 439  }
 440  
 441  var _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');
 442  var RE_POS = /^(top|right|bottom|left)$/;
 443  var CURRENT_STYLE = 'currentStyle';
 444  var RUNTIME_STYLE = 'runtimeStyle';
 445  var LEFT = 'left';
 446  var PX = 'px';
 447  
 448  function _getComputedStyleIE(elem, name) {
 449    // currentStyle maybe null
 450    // http://msdn.microsoft.com/en-us/library/ms535231.aspx
 451    var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];
 452  
 453    // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值
 454    // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19
 455    // 在 ie 下不对,需要直接用 offset 方式
 456    // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了
 457  
 458    // From the awesome hack by Dean Edwards
 459    // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
 460    // If we're not dealing with a regular pixel number
 461    // but a number that has a weird ending, we need to convert it to pixels
 462    // exclude left right for relativity
 463    if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {
 464      // Remember the original values
 465      var style = elem.style;
 466      var left = style[LEFT];
 467      var rsLeft = elem[RUNTIME_STYLE][LEFT];
 468  
 469      // prevent flashing of content
 470      elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];
 471  
 472      // Put in the new values to get a computed value out
 473      style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;
 474      ret = style.pixelLeft + PX;
 475  
 476      // Revert the changed values
 477      style[LEFT] = left;
 478  
 479      elem[RUNTIME_STYLE][LEFT] = rsLeft;
 480    }
 481    return ret === '' ? 'auto' : ret;
 482  }
 483  
 484  var getComputedStyleX = undefined;
 485  if (typeof window !== 'undefined') {
 486    getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;
 487  }
 488  
 489  function each(arr, fn) {
 490    for (var i = 0; i < arr.length; i++) {
 491      fn(arr[i]);
 492    }
 493  }
 494  
 495  function isBorderBoxFn(elem) {
 496    return getComputedStyleX(elem, 'boxSizing') === 'border-box';
 497  }
 498  
 499  var BOX_MODELS = ['margin', 'border', 'padding'];
 500  var CONTENT_INDEX = -1;
 501  var PADDING_INDEX = 2;
 502  var BORDER_INDEX = 1;
 503  var MARGIN_INDEX = 0;
 504  
 505  function swap(elem, options, callback) {
 506    var old = {};
 507    var style = elem.style;
 508    var name = undefined;
 509  
 510    // Remember the old values, and insert the new ones
 511    for (name in options) {
 512      if (options.hasOwnProperty(name)) {
 513        old[name] = style[name];
 514        style[name] = options[name];
 515      }
 516    }
 517  
 518    callback.call(elem);
 519  
 520    // Revert the old values
 521    for (name in options) {
 522      if (options.hasOwnProperty(name)) {
 523        style[name] = old[name];
 524      }
 525    }
 526  }
 527  
 528  function getPBMWidth(elem, props, which) {
 529    var value = 0;
 530    var prop = undefined;
 531    var j = undefined;
 532    var i = undefined;
 533    for (j = 0; j < props.length; j++) {
 534      prop = props[j];
 535      if (prop) {
 536        for (i = 0; i < which.length; i++) {
 537          var cssProp = undefined;
 538          if (prop === 'border') {
 539            cssProp = prop + which[i] + 'Width';
 540          } else {
 541            cssProp = prop + which[i];
 542          }
 543          value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;
 544        }
 545      }
 546    }
 547    return value;
 548  }
 549  
 550  /**
 551   * A crude way of determining if an object is a window
 552   * @member util
 553   */
 554  function isWindow(obj) {
 555    // must use == for ie8
 556    /* eslint eqeqeq:0 */
 557    return obj != null && obj == obj.window;
 558  }
 559  
 560  var domUtils = {};
 561  
 562  each(['Width', 'Height'], function (name) {
 563    domUtils['doc' + name] = function (refWin) {
 564      var d = refWin.document;
 565      return Math.max(
 566      // firefox chrome documentElement.scrollHeight< body.scrollHeight
 567      // ie standard mode : documentElement.scrollHeight> body.scrollHeight
 568      d.documentElement['scroll' + name],
 569      // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?
 570      d.body['scroll' + name], domUtils['viewport' + name](d));
 571    };
 572  
 573    domUtils['viewport' + name] = function (win) {
 574      // pc browser includes scrollbar in window.innerWidth
 575      var prop = 'client' + name;
 576      var doc = win.document;
 577      var body = doc.body;
 578      var documentElement = doc.documentElement;
 579      var documentElementProp = documentElement[prop];
 580      // 标准模式取 documentElement
 581      // backcompat 取 body
 582      return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;
 583    };
 584  });
 585  
 586  /*
 587   得到元素的大小信息
 588   @param elem
 589   @param name
 590   @param {String} [extra]  'padding' : (css width) + padding
 591   'border' : (css width) + padding + border
 592   'margin' : (css width) + padding + border + margin
 593   */
 594  function getWH(elem, name, extra) {
 595    if (isWindow(elem)) {
 596      return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);
 597    } else if (elem.nodeType === 9) {
 598      return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);
 599    }
 600    var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];
 601    var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;
 602    var computedStyle = getComputedStyleX(elem);
 603    var isBorderBox = isBorderBoxFn(elem, computedStyle);
 604    var cssBoxValue = 0;
 605    if (borderBoxValue == null || borderBoxValue <= 0) {
 606      borderBoxValue = undefined;
 607      // Fall back to computed then un computed css if necessary
 608      cssBoxValue = getComputedStyleX(elem, name);
 609      if (cssBoxValue == null || Number(cssBoxValue) < 0) {
 610        cssBoxValue = elem.style[name] || 0;
 611      }
 612      // Normalize '', auto, and prepare for extra
 613      cssBoxValue = parseFloat(cssBoxValue) || 0;
 614    }
 615    if (extra === undefined) {
 616      extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;
 617    }
 618    var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;
 619    var val = borderBoxValue || cssBoxValue;
 620    if (extra === CONTENT_INDEX) {
 621      if (borderBoxValueOrIsBorderBox) {
 622        return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle);
 623      }
 624      return cssBoxValue;
 625    }
 626    if (borderBoxValueOrIsBorderBox) {
 627      var padding = extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle);
 628      return val + (extra === BORDER_INDEX ? 0 : padding);
 629    }
 630    return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle);
 631  }
 632  
 633  var cssShow = {
 634    position: 'absolute',
 635    visibility: 'hidden',
 636    display: 'block'
 637  };
 638  
 639  // fix #119 : https://github.com/kissyteam/kissy/issues/119
 640  function getWHIgnoreDisplay(elem) {
 641    var val = undefined;
 642    var args = arguments;
 643    // in case elem is window
 644    // elem.offsetWidth === undefined
 645    if (elem.offsetWidth !== 0) {
 646      val = getWH.apply(undefined, args);
 647    } else {
 648      swap(elem, cssShow, function () {
 649        val = getWH.apply(undefined, args);
 650      });
 651    }
 652    return val;
 653  }
 654  
 655  function css(el, name, v) {
 656    var value = v;
 657    if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {
 658      for (var i in name) {
 659        if (name.hasOwnProperty(i)) {
 660          css(el, i, name[i]);
 661        }
 662      }
 663      return undefined;
 664    }
 665    if (typeof value !== 'undefined') {
 666      if (typeof value === 'number') {
 667        value += 'px';
 668      }
 669      el.style[name] = value;
 670      return undefined;
 671    }
 672    return getComputedStyleX(el, name);
 673  }
 674  
 675  each(['width', 'height'], function (name) {
 676    var first = name.charAt(0).toUpperCase() + name.slice(1);
 677    domUtils['outer' + first] = function (el, includeMargin) {
 678      return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);
 679    };
 680    var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];
 681  
 682    domUtils[name] = function (elem, val) {
 683      if (val !== undefined) {
 684        if (elem) {
 685          var computedStyle = getComputedStyleX(elem);
 686          var isBorderBox = isBorderBoxFn(elem);
 687          if (isBorderBox) {
 688            val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);
 689          }
 690          return css(elem, name, val);
 691        }
 692        return undefined;
 693      }
 694      return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);
 695    };
 696  });
 697  
 698  // 设置 elem 相对 elem.ownerDocument 的坐标
 699  function setOffset(elem, offset) {
 700    // set position first, in-case top/left are set even on static elem
 701    if (css(elem, 'position') === 'static') {
 702      elem.style.position = 'relative';
 703    }
 704  
 705    var old = getOffset(elem);
 706    var ret = {};
 707    var current = undefined;
 708    var key = undefined;
 709  
 710    for (key in offset) {
 711      if (offset.hasOwnProperty(key)) {
 712        current = parseFloat(css(elem, key)) || 0;
 713        ret[key] = current + offset[key] - old[key];
 714      }
 715    }
 716    css(elem, ret);
 717  }
 718  
 719  module.exports = _extends({
 720    getWindow: function getWindow(node) {
 721      var doc = node.ownerDocument || node;
 722      return doc.defaultView || doc.parentWindow;
 723    },
 724    offset: function offset(el, value) {
 725      if (typeof value !== 'undefined') {
 726        setOffset(el, value);
 727      } else {
 728        return getOffset(el);
 729      }
 730    },
 731  
 732    isWindow: isWindow,
 733    each: each,
 734    css: css,
 735    clone: function clone(obj) {
 736      var ret = {};
 737      for (var i in obj) {
 738        if (obj.hasOwnProperty(i)) {
 739          ret[i] = obj[i];
 740        }
 741      }
 742      var overflow = obj.overflow;
 743      if (overflow) {
 744        for (var i in obj) {
 745          if (obj.hasOwnProperty(i)) {
 746            ret.overflow[i] = obj.overflow[i];
 747          }
 748        }
 749      }
 750      return ret;
 751    },
 752    scrollLeft: function scrollLeft(w, v) {
 753      if (isWindow(w)) {
 754        if (v === undefined) {
 755          return getScrollLeft(w);
 756        }
 757        window.scrollTo(v, getScrollTop(w));
 758      } else {
 759        if (v === undefined) {
 760          return w.scrollLeft;
 761        }
 762        w.scrollLeft = v;
 763      }
 764    },
 765    scrollTop: function scrollTop(w, v) {
 766      if (isWindow(w)) {
 767        if (v === undefined) {
 768          return getScrollTop(w);
 769        }
 770        window.scrollTo(getScrollLeft(w), v);
 771      } else {
 772        if (v === undefined) {
 773          return w.scrollTop;
 774        }
 775        w.scrollTop = v;
 776      }
 777    },
 778  
 779    viewportWidth: 0,
 780    viewportHeight: 0
 781  }, domUtils);
 782  
 783  /***/ }),
 784  
 785  /***/ 114:
 786  /***/ (function(module, exports, __webpack_require__) {
 787  
 788  "use strict";
 789  
 790  var __extends = (this && this.__extends) || (function () {
 791      var extendStatics = Object.setPrototypeOf ||
 792          ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
 793          function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
 794      return function (d, b) {
 795          extendStatics(d, b);
 796          function __() { this.constructor = d; }
 797          d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
 798      };
 799  })();
 800  var __assign = (this && this.__assign) || Object.assign || function(t) {
 801      for (var s, i = 1, n = arguments.length; i < n; i++) {
 802          s = arguments[i];
 803          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
 804              t[p] = s[p];
 805      }
 806      return t;
 807  };
 808  var __rest = (this && this.__rest) || function (s, e) {
 809      var t = {};
 810      for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
 811          t[p] = s[p];
 812      if (s != null && typeof Object.getOwnPropertySymbols === "function")
 813          for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
 814              t[p[i]] = s[p[i]];
 815      return t;
 816  };
 817  exports.__esModule = true;
 818  var React = __webpack_require__(21);
 819  var PropTypes = __webpack_require__(28);
 820  var autosize = __webpack_require__(115);
 821  var _getLineHeight = __webpack_require__(116);
 822  var getLineHeight = _getLineHeight;
 823  var UPDATE = 'autosize:update';
 824  var DESTROY = 'autosize:destroy';
 825  var RESIZED = 'autosize:resized';
 826  /**
 827   * A light replacement for built-in textarea component
 828   * which automaticaly adjusts its height to match the content
 829   */
 830  var TextareaAutosize = /** @class */ (function (_super) {
 831      __extends(TextareaAutosize, _super);
 832      function TextareaAutosize() {
 833          var _this = _super !== null && _super.apply(this, arguments) || this;
 834          _this.state = {
 835              lineHeight: null
 836          };
 837          _this.dispatchEvent = function (EVENT_TYPE) {
 838              var event = document.createEvent('Event');
 839              event.initEvent(EVENT_TYPE, true, false);
 840              _this.textarea.dispatchEvent(event);
 841          };
 842          _this.updateLineHeight = function () {
 843              _this.setState({
 844                  lineHeight: getLineHeight(_this.textarea)
 845              });
 846          };
 847          _this.onChange = function (e) {
 848              var onChange = _this.props.onChange;
 849              _this.currentValue = e.currentTarget.value;
 850              onChange && onChange(e);
 851          };
 852          _this.saveDOMNodeRef = function (ref) {
 853              var innerRef = _this.props.innerRef;
 854              if (innerRef) {
 855                  innerRef(ref);
 856              }
 857              _this.textarea = ref;
 858          };
 859          _this.getLocals = function () {
 860              var _a = _this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "innerRef"]), lineHeight = _a.state.lineHeight, saveDOMNodeRef = _a.saveDOMNodeRef;
 861              var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null;
 862              return __assign({}, props, { saveDOMNodeRef: saveDOMNodeRef, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, onChange: _this.onChange });
 863          };
 864          return _this;
 865      }
 866      TextareaAutosize.prototype.componentDidMount = function () {
 867          var _this = this;
 868          var _a = this.props, onResize = _a.onResize, maxRows = _a.maxRows;
 869          if (typeof maxRows === 'number') {
 870              this.updateLineHeight();
 871          }
 872          /*
 873            the defer is needed to:
 874              - force "autosize" to activate the scrollbar when this.props.maxRows is passed
 875              - support StyledComponents (see #71)
 876          */
 877          setTimeout(function () { return autosize(_this.textarea); });
 878          if (onResize) {
 879              this.textarea.addEventListener(RESIZED, onResize);
 880          }
 881      };
 882      TextareaAutosize.prototype.componentWillUnmount = function () {
 883          var onResize = this.props.onResize;
 884          if (onResize) {
 885              this.textarea.removeEventListener(RESIZED, onResize);
 886          }
 887          this.dispatchEvent(DESTROY);
 888      };
 889      TextareaAutosize.prototype.render = function () {
 890          var _a = this.getLocals(), children = _a.children, saveDOMNodeRef = _a.saveDOMNodeRef, locals = __rest(_a, ["children", "saveDOMNodeRef"]);
 891          return (React.createElement("textarea", __assign({}, locals, { ref: saveDOMNodeRef }), children));
 892      };
 893      TextareaAutosize.prototype.componentDidUpdate = function (prevProps) {
 894          if (this.props.value !== this.currentValue || this.props.rows !== prevProps.rows) {
 895              this.dispatchEvent(UPDATE);
 896          }
 897      };
 898      TextareaAutosize.defaultProps = {
 899          rows: 1
 900      };
 901      TextareaAutosize.propTypes = {
 902          rows: PropTypes.number,
 903          maxRows: PropTypes.number,
 904          onResize: PropTypes.func,
 905          innerRef: PropTypes.func
 906      };
 907      return TextareaAutosize;
 908  }(React.Component));
 909  exports["default"] = TextareaAutosize;
 910  
 911  
 912  /***/ }),
 913  
 914  /***/ 115:
 915  /***/ (function(module, exports, __webpack_require__) {
 916  
 917  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
 918      autosize 4.0.2
 919      license: MIT
 920      http://www.jacklmoore.com/autosize
 921  */
 922  (function (global, factory) {
 923      if (true) {
 924          !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
 925                  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
 926                  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
 927                  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
 928      } else { var mod; }
 929  })(this, function (module, exports) {
 930      'use strict';
 931  
 932      var map = typeof Map === "function" ? new Map() : function () {
 933          var keys = [];
 934          var values = [];
 935  
 936          return {
 937              has: function has(key) {
 938                  return keys.indexOf(key) > -1;
 939              },
 940              get: function get(key) {
 941                  return values[keys.indexOf(key)];
 942              },
 943              set: function set(key, value) {
 944                  if (keys.indexOf(key) === -1) {
 945                      keys.push(key);
 946                      values.push(value);
 947                  }
 948              },
 949              delete: function _delete(key) {
 950                  var index = keys.indexOf(key);
 951                  if (index > -1) {
 952                      keys.splice(index, 1);
 953                      values.splice(index, 1);
 954                  }
 955              }
 956          };
 957      }();
 958  
 959      var createEvent = function createEvent(name) {
 960          return new Event(name, { bubbles: true });
 961      };
 962      try {
 963          new Event('test');
 964      } catch (e) {
 965          // IE does not support `new Event()`
 966          createEvent = function createEvent(name) {
 967              var evt = document.createEvent('Event');
 968              evt.initEvent(name, true, false);
 969              return evt;
 970          };
 971      }
 972  
 973  	function assign(ta) {
 974          if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
 975  
 976          var heightOffset = null;
 977          var clientWidth = null;
 978          var cachedHeight = null;
 979  
 980  		function init() {
 981              var style = window.getComputedStyle(ta, null);
 982  
 983              if (style.resize === 'vertical') {
 984                  ta.style.resize = 'none';
 985              } else if (style.resize === 'both') {
 986                  ta.style.resize = 'horizontal';
 987              }
 988  
 989              if (style.boxSizing === 'content-box') {
 990                  heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
 991              } else {
 992                  heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
 993              }
 994              // Fix when a textarea is not on document body and heightOffset is Not a Number
 995              if (isNaN(heightOffset)) {
 996                  heightOffset = 0;
 997              }
 998  
 999              update();
1000          }
1001  
1002  		function changeOverflow(value) {
1003              {
1004                  // Chrome/Safari-specific fix:
1005                  // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
1006                  // made available by removing the scrollbar. The following forces the necessary text reflow.
1007                  var width = ta.style.width;
1008                  ta.style.width = '0px';
1009                  // Force reflow:
1010                  /* jshint ignore:start */
1011                  ta.offsetWidth;
1012                  /* jshint ignore:end */
1013                  ta.style.width = width;
1014              }
1015  
1016              ta.style.overflowY = value;
1017          }
1018  
1019  		function getParentOverflows(el) {
1020              var arr = [];
1021  
1022              while (el && el.parentNode && el.parentNode instanceof Element) {
1023                  if (el.parentNode.scrollTop) {
1024                      arr.push({
1025                          node: el.parentNode,
1026                          scrollTop: el.parentNode.scrollTop
1027                      });
1028                  }
1029                  el = el.parentNode;
1030              }
1031  
1032              return arr;
1033          }
1034  
1035  		function resize() {
1036              if (ta.scrollHeight === 0) {
1037                  // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
1038                  return;
1039              }
1040  
1041              var overflows = getParentOverflows(ta);
1042              var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
1043  
1044              ta.style.height = '';
1045              ta.style.height = ta.scrollHeight + heightOffset + 'px';
1046  
1047              // used to check if an update is actually necessary on window.resize
1048              clientWidth = ta.clientWidth;
1049  
1050              // prevents scroll-position jumping
1051              overflows.forEach(function (el) {
1052                  el.node.scrollTop = el.scrollTop;
1053              });
1054  
1055              if (docTop) {
1056                  document.documentElement.scrollTop = docTop;
1057              }
1058          }
1059  
1060  		function update() {
1061              resize();
1062  
1063              var styleHeight = Math.round(parseFloat(ta.style.height));
1064              var computed = window.getComputedStyle(ta, null);
1065  
1066              // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
1067              var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;
1068  
1069              // The actual height not matching the style height (set via the resize method) indicates that 
1070              // the max-height has been exceeded, in which case the overflow should be allowed.
1071              if (actualHeight < styleHeight) {
1072                  if (computed.overflowY === 'hidden') {
1073                      changeOverflow('scroll');
1074                      resize();
1075                      actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
1076                  }
1077              } else {
1078                  // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
1079                  if (computed.overflowY !== 'hidden') {
1080                      changeOverflow('hidden');
1081                      resize();
1082                      actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
1083                  }
1084              }
1085  
1086              if (cachedHeight !== actualHeight) {
1087                  cachedHeight = actualHeight;
1088                  var evt = createEvent('autosize:resized');
1089                  try {
1090                      ta.dispatchEvent(evt);
1091                  } catch (err) {
1092                      // Firefox will throw an error on dispatchEvent for a detached element
1093                      // https://bugzilla.mozilla.org/show_bug.cgi?id=889376
1094                  }
1095              }
1096          }
1097  
1098          var pageResize = function pageResize() {
1099              if (ta.clientWidth !== clientWidth) {
1100                  update();
1101              }
1102          };
1103  
1104          var destroy = function (style) {
1105              window.removeEventListener('resize', pageResize, false);
1106              ta.removeEventListener('input', update, false);
1107              ta.removeEventListener('keyup', update, false);
1108              ta.removeEventListener('autosize:destroy', destroy, false);
1109              ta.removeEventListener('autosize:update', update, false);
1110  
1111              Object.keys(style).forEach(function (key) {
1112                  ta.style[key] = style[key];
1113              });
1114  
1115              map.delete(ta);
1116          }.bind(ta, {
1117              height: ta.style.height,
1118              resize: ta.style.resize,
1119              overflowY: ta.style.overflowY,
1120              overflowX: ta.style.overflowX,
1121              wordWrap: ta.style.wordWrap
1122          });
1123  
1124          ta.addEventListener('autosize:destroy', destroy, false);
1125  
1126          // IE9 does not fire onpropertychange or oninput for deletions,
1127          // so binding to onkeyup to catch most of those events.
1128          // There is no way that I know of to detect something like 'cut' in IE9.
1129          if ('onpropertychange' in ta && 'oninput' in ta) {
1130              ta.addEventListener('keyup', update, false);
1131          }
1132  
1133          window.addEventListener('resize', pageResize, false);
1134          ta.addEventListener('input', update, false);
1135          ta.addEventListener('autosize:update', update, false);
1136          ta.style.overflowX = 'hidden';
1137          ta.style.wordWrap = 'break-word';
1138  
1139          map.set(ta, {
1140              destroy: destroy,
1141              update: update
1142          });
1143  
1144          init();
1145      }
1146  
1147  	function destroy(ta) {
1148          var methods = map.get(ta);
1149          if (methods) {
1150              methods.destroy();
1151          }
1152      }
1153  
1154  	function update(ta) {
1155          var methods = map.get(ta);
1156          if (methods) {
1157              methods.update();
1158          }
1159      }
1160  
1161      var autosize = null;
1162  
1163      // Do nothing in Node.js environment and IE8 (or lower)
1164      if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
1165          autosize = function autosize(el) {
1166              return el;
1167          };
1168          autosize.destroy = function (el) {
1169              return el;
1170          };
1171          autosize.update = function (el) {
1172              return el;
1173          };
1174      } else {
1175          autosize = function autosize(el, options) {
1176              if (el) {
1177                  Array.prototype.forEach.call(el.length ? el : [el], function (x) {
1178                      return assign(x, options);
1179                  });
1180              }
1181              return el;
1182          };
1183          autosize.destroy = function (el) {
1184              if (el) {
1185                  Array.prototype.forEach.call(el.length ? el : [el], destroy);
1186              }
1187              return el;
1188          };
1189          autosize.update = function (el) {
1190              if (el) {
1191                  Array.prototype.forEach.call(el.length ? el : [el], update);
1192              }
1193              return el;
1194          };
1195      }
1196  
1197      exports.default = autosize;
1198      module.exports = exports['default'];
1199  });
1200  
1201  /***/ }),
1202  
1203  /***/ 116:
1204  /***/ (function(module, exports, __webpack_require__) {
1205  
1206  // Load in dependencies
1207  var computedStyle = __webpack_require__(117);
1208  
1209  /**
1210   * Calculate the `line-height` of a given node
1211   * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.
1212   * @returns {Number} `line-height` of the element in pixels
1213   */
1214  function lineHeight(node) {
1215    // Grab the line-height via style
1216    var lnHeightStr = computedStyle(node, 'line-height');
1217    var lnHeight = parseFloat(lnHeightStr, 10);
1218  
1219    // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')
1220    if (lnHeightStr === lnHeight + '') {
1221      // Save the old lineHeight style and update the em unit to the element
1222      var _lnHeightStyle = node.style.lineHeight;
1223      node.style.lineHeight = lnHeightStr + 'em';
1224  
1225      // Calculate the em based height
1226      lnHeightStr = computedStyle(node, 'line-height');
1227      lnHeight = parseFloat(lnHeightStr, 10);
1228  
1229      // Revert the lineHeight style
1230      if (_lnHeightStyle) {
1231        node.style.lineHeight = _lnHeightStyle;
1232      } else {
1233        delete node.style.lineHeight;
1234      }
1235    }
1236  
1237    // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)
1238    // DEV: `em` units are converted to `pt` in IE6
1239    // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length
1240    if (lnHeightStr.indexOf('pt') !== -1) {
1241      lnHeight *= 4;
1242      lnHeight /= 3;
1243    // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)
1244    } else if (lnHeightStr.indexOf('mm') !== -1) {
1245      lnHeight *= 96;
1246      lnHeight /= 25.4;
1247    // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)
1248    } else if (lnHeightStr.indexOf('cm') !== -1) {
1249      lnHeight *= 96;
1250      lnHeight /= 2.54;
1251    // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)
1252    } else if (lnHeightStr.indexOf('in') !== -1) {
1253      lnHeight *= 96;
1254    // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)
1255    } else if (lnHeightStr.indexOf('pc') !== -1) {
1256      lnHeight *= 16;
1257    }
1258  
1259    // Continue our computation
1260    lnHeight = Math.round(lnHeight);
1261  
1262    // If the line-height is "normal", calculate by font-size
1263    if (lnHeightStr === 'normal') {
1264      // Create a temporary node
1265      var nodeName = node.nodeName;
1266      var _node = document.createElement(nodeName);
1267      _node.innerHTML = '&nbsp;';
1268  
1269      // If we have a text area, reset it to only 1 row
1270      // https://github.com/twolfson/line-height/issues/4
1271      if (nodeName.toUpperCase() === 'TEXTAREA') {
1272        _node.setAttribute('rows', '1');
1273      }
1274  
1275      // Set the font-size of the element
1276      var fontSizeStr = computedStyle(node, 'font-size');
1277      _node.style.fontSize = fontSizeStr;
1278  
1279      // Remove default padding/border which can affect offset height
1280      // https://github.com/twolfson/line-height/issues/4
1281      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight
1282      _node.style.padding = '0px';
1283      _node.style.border = '0px';
1284  
1285      // Append it to the body
1286      var body = document.body;
1287      body.appendChild(_node);
1288  
1289      // Assume the line height of the element is the height
1290      var height = _node.offsetHeight;
1291      lnHeight = height;
1292  
1293      // Remove our child from the DOM
1294      body.removeChild(_node);
1295    }
1296  
1297    // Return the calculated height
1298    return lnHeight;
1299  }
1300  
1301  // Export lineHeight
1302  module.exports = lineHeight;
1303  
1304  
1305  /***/ }),
1306  
1307  /***/ 117:
1308  /***/ (function(module, exports) {
1309  
1310  // This code has been refactored for 140 bytes
1311  // You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js
1312  var computedStyle = function (el, prop, getComputedStyle) {
1313    getComputedStyle = window.getComputedStyle;
1314  
1315    // In one fell swoop
1316    return (
1317      // If we have getComputedStyle
1318      getComputedStyle ?
1319        // Query it
1320        // TODO: From CSS-Query notes, we might need (node, null) for FF
1321        getComputedStyle(el) :
1322  
1323      // Otherwise, we are in IE and use currentStyle
1324        el.currentStyle
1325    )[
1326      // Switch to camelCase for CSSOM
1327      // DEV: Grabbed from jQuery
1328      // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194
1329      // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597
1330      prop.replace(/-(\w)/gi, function (word, letter) {
1331        return letter.toUpperCase();
1332      })
1333    ];
1334  };
1335  
1336  module.exports = computedStyle;
1337  
1338  
1339  /***/ }),
1340  
1341  /***/ 118:
1342  /***/ (function(module, exports) {
1343  
1344  function _extends() {
1345    module.exports = _extends = Object.assign || function (target) {
1346      for (var i = 1; i < arguments.length; i++) {
1347        var source = arguments[i];
1348  
1349        for (var key in source) {
1350          if (Object.prototype.hasOwnProperty.call(source, key)) {
1351            target[key] = source[key];
1352          }
1353        }
1354      }
1355  
1356      return target;
1357    };
1358  
1359    return _extends.apply(this, arguments);
1360  }
1361  
1362  module.exports = _extends;
1363  
1364  /***/ }),
1365  
1366  /***/ 119:
1367  /***/ (function(module, exports) {
1368  
1369  function _objectWithoutPropertiesLoose(source, excluded) {
1370    if (source == null) return {};
1371    var target = {};
1372    var sourceKeys = Object.keys(source);
1373    var key, i;
1374  
1375    for (i = 0; i < sourceKeys.length; i++) {
1376      key = sourceKeys[i];
1377      if (excluded.indexOf(key) >= 0) continue;
1378      target[key] = source[key];
1379    }
1380  
1381    return target;
1382  }
1383  
1384  module.exports = _objectWithoutPropertiesLoose;
1385  
1386  /***/ }),
1387  
1388  /***/ 12:
1389  /***/ (function(module, __webpack_exports__, __webpack_require__) {
1390  
1391  "use strict";
1392  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _extends; });
1393  function _extends() {
1394    _extends = Object.assign || function (target) {
1395      for (var i = 1; i < arguments.length; i++) {
1396        var source = arguments[i];
1397  
1398        for (var key in source) {
1399          if (Object.prototype.hasOwnProperty.call(source, key)) {
1400            target[key] = source[key];
1401          }
1402        }
1403      }
1404  
1405      return target;
1406    };
1407  
1408    return _extends.apply(this, arguments);
1409  }
1410  
1411  /***/ }),
1412  
1413  /***/ 120:
1414  /***/ (function(module, exports) {
1415  
1416  function _assertThisInitialized(self) {
1417    if (self === void 0) {
1418      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
1419    }
1420  
1421    return self;
1422  }
1423  
1424  module.exports = _assertThisInitialized;
1425  
1426  /***/ }),
1427  
1428  /***/ 121:
1429  /***/ (function(module, exports, __webpack_require__) {
1430  
1431  /* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.3.2 by @mathias */
1432  ;(function(root) {
1433  
1434      /** Detect free variables */
1435      var freeExports =  true && exports &&
1436          !exports.nodeType && exports;
1437      var freeModule =  true && module &&
1438          !module.nodeType && module;
1439      var freeGlobal = typeof global == 'object' && global;
1440      if (
1441          freeGlobal.global === freeGlobal ||
1442          freeGlobal.window === freeGlobal ||
1443          freeGlobal.self === freeGlobal
1444      ) {
1445          root = freeGlobal;
1446      }
1447  
1448      /**
1449       * The `punycode` object.
1450       * @name punycode
1451       * @type Object
1452       */
1453      var punycode,
1454  
1455      /** Highest positive signed 32-bit float value */
1456      maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
1457  
1458      /** Bootstring parameters */
1459      base = 36,
1460      tMin = 1,
1461      tMax = 26,
1462      skew = 38,
1463      damp = 700,
1464      initialBias = 72,
1465      initialN = 128, // 0x80
1466      delimiter = '-', // '\x2D'
1467  
1468      /** Regular expressions */
1469      regexPunycode = /^xn--/,
1470      regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
1471      regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
1472  
1473      /** Error messages */
1474      errors = {
1475          'overflow': 'Overflow: input needs wider integers to process',
1476          'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
1477          'invalid-input': 'Invalid input'
1478      },
1479  
1480      /** Convenience shortcuts */
1481      baseMinusTMin = base - tMin,
1482      floor = Math.floor,
1483      stringFromCharCode = String.fromCharCode,
1484  
1485      /** Temporary variable */
1486      key;
1487  
1488      /*--------------------------------------------------------------------------*/
1489  
1490      /**
1491       * A generic error utility function.
1492       * @private
1493       * @param {String} type The error type.
1494       * @returns {Error} Throws a `RangeError` with the applicable error message.
1495       */
1496  	function error(type) {
1497          throw RangeError(errors[type]);
1498      }
1499  
1500      /**
1501       * A generic `Array#map` utility function.
1502       * @private
1503       * @param {Array} array The array to iterate over.
1504       * @param {Function} callback The function that gets called for every array
1505       * item.
1506       * @returns {Array} A new array of values returned by the callback function.
1507       */
1508  	function map(array, fn) {
1509          var length = array.length;
1510          var result = [];
1511          while (length--) {
1512              result[length] = fn(array[length]);
1513          }
1514          return result;
1515      }
1516  
1517      /**
1518       * A simple `Array#map`-like wrapper to work with domain name strings or email
1519       * addresses.
1520       * @private
1521       * @param {String} domain The domain name or email address.
1522       * @param {Function} callback The function that gets called for every
1523       * character.
1524       * @returns {Array} A new string of characters returned by the callback
1525       * function.
1526       */
1527  	function mapDomain(string, fn) {
1528          var parts = string.split('@');
1529          var result = '';
1530          if (parts.length > 1) {
1531              // In email addresses, only the domain name should be punycoded. Leave
1532              // the local part (i.e. everything up to `@`) intact.
1533              result = parts[0] + '@';
1534              string = parts[1];
1535          }
1536          // Avoid `split(regex)` for IE8 compatibility. See #17.
1537          string = string.replace(regexSeparators, '\x2E');
1538          var labels = string.split('.');
1539          var encoded = map(labels, fn).join('.');
1540          return result + encoded;
1541      }
1542  
1543      /**
1544       * Creates an array containing the numeric code points of each Unicode
1545       * character in the string. While JavaScript uses UCS-2 internally,
1546       * this function will convert a pair of surrogate halves (each of which
1547       * UCS-2 exposes as separate characters) into a single code point,
1548       * matching UTF-16.
1549       * @see `punycode.ucs2.encode`
1550       * @see <https://mathiasbynens.be/notes/javascript-encoding>
1551       * @memberOf punycode.ucs2
1552       * @name decode
1553       * @param {String} string The Unicode input string (UCS-2).
1554       * @returns {Array} The new array of code points.
1555       */
1556  	function ucs2decode(string) {
1557          var output = [],
1558              counter = 0,
1559              length = string.length,
1560              value,
1561              extra;
1562          while (counter < length) {
1563              value = string.charCodeAt(counter++);
1564              if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
1565                  // high surrogate, and there is a next character
1566                  extra = string.charCodeAt(counter++);
1567                  if ((extra & 0xFC00) == 0xDC00) { // low surrogate
1568                      output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
1569                  } else {
1570                      // unmatched surrogate; only append this code unit, in case the next
1571                      // code unit is the high surrogate of a surrogate pair
1572                      output.push(value);
1573                      counter--;
1574                  }
1575              } else {
1576                  output.push(value);
1577              }
1578          }
1579          return output;
1580      }
1581  
1582      /**
1583       * Creates a string based on an array of numeric code points.
1584       * @see `punycode.ucs2.decode`
1585       * @memberOf punycode.ucs2
1586       * @name encode
1587       * @param {Array} codePoints The array of numeric code points.
1588       * @returns {String} The new Unicode string (UCS-2).
1589       */
1590  	function ucs2encode(array) {
1591          return map(array, function(value) {
1592              var output = '';
1593              if (value > 0xFFFF) {
1594                  value -= 0x10000;
1595                  output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
1596                  value = 0xDC00 | value & 0x3FF;
1597              }
1598              output += stringFromCharCode(value);
1599              return output;
1600          }).join('');
1601      }
1602  
1603      /**
1604       * Converts a basic code point into a digit/integer.
1605       * @see `digitToBasic()`
1606       * @private
1607       * @param {Number} codePoint The basic numeric code point value.
1608       * @returns {Number} The numeric value of a basic code point (for use in
1609       * representing integers) in the range `0` to `base - 1`, or `base` if
1610       * the code point does not represent a value.
1611       */
1612  	function basicToDigit(codePoint) {
1613          if (codePoint - 48 < 10) {
1614              return codePoint - 22;
1615          }
1616          if (codePoint - 65 < 26) {
1617              return codePoint - 65;
1618          }
1619          if (codePoint - 97 < 26) {
1620              return codePoint - 97;
1621          }
1622          return base;
1623      }
1624  
1625      /**
1626       * Converts a digit/integer into a basic code point.
1627       * @see `basicToDigit()`
1628       * @private
1629       * @param {Number} digit The numeric value of a basic code point.
1630       * @returns {Number} The basic code point whose value (when used for
1631       * representing integers) is `digit`, which needs to be in the range
1632       * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
1633       * used; else, the lowercase form is used. The behavior is undefined
1634       * if `flag` is non-zero and `digit` has no uppercase form.
1635       */
1636  	function digitToBasic(digit, flag) {
1637          //  0..25 map to ASCII a..z or A..Z
1638          // 26..35 map to ASCII 0..9
1639          return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
1640      }
1641  
1642      /**
1643       * Bias adaptation function as per section 3.4 of RFC 3492.
1644       * http://tools.ietf.org/html/rfc3492#section-3.4
1645       * @private
1646       */
1647  	function adapt(delta, numPoints, firstTime) {
1648          var k = 0;
1649          delta = firstTime ? floor(delta / damp) : delta >> 1;
1650          delta += floor(delta / numPoints);
1651          for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
1652              delta = floor(delta / baseMinusTMin);
1653          }
1654          return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
1655      }
1656  
1657      /**
1658       * Converts a Punycode string of ASCII-only symbols to a string of Unicode
1659       * symbols.
1660       * @memberOf punycode
1661       * @param {String} input The Punycode string of ASCII-only symbols.
1662       * @returns {String} The resulting string of Unicode symbols.
1663       */
1664  	function decode(input) {
1665          // Don't use UCS-2
1666          var output = [],
1667              inputLength = input.length,
1668              out,
1669              i = 0,
1670              n = initialN,
1671              bias = initialBias,
1672              basic,
1673              j,
1674              index,
1675              oldi,
1676              w,
1677              k,
1678              digit,
1679              t,
1680              /** Cached calculation results */
1681              baseMinusT;
1682  
1683          // Handle the basic code points: let `basic` be the number of input code
1684          // points before the last delimiter, or `0` if there is none, then copy
1685          // the first basic code points to the output.
1686  
1687          basic = input.lastIndexOf(delimiter);
1688          if (basic < 0) {
1689              basic = 0;
1690          }
1691  
1692          for (j = 0; j < basic; ++j) {
1693              // if it's not a basic code point
1694              if (input.charCodeAt(j) >= 0x80) {
1695                  error('not-basic');
1696              }
1697              output.push(input.charCodeAt(j));
1698          }
1699  
1700          // Main decoding loop: start just after the last delimiter if any basic code
1701          // points were copied; start at the beginning otherwise.
1702  
1703          for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
1704  
1705              // `index` is the index of the next character to be consumed.
1706              // Decode a generalized variable-length integer into `delta`,
1707              // which gets added to `i`. The overflow checking is easier
1708              // if we increase `i` as we go, then subtract off its starting
1709              // value at the end to obtain `delta`.
1710              for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
1711  
1712                  if (index >= inputLength) {
1713                      error('invalid-input');
1714                  }
1715  
1716                  digit = basicToDigit(input.charCodeAt(index++));
1717  
1718                  if (digit >= base || digit > floor((maxInt - i) / w)) {
1719                      error('overflow');
1720                  }
1721  
1722                  i += digit * w;
1723                  t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
1724  
1725                  if (digit < t) {
1726                      break;
1727                  }
1728  
1729                  baseMinusT = base - t;
1730                  if (w > floor(maxInt / baseMinusT)) {
1731                      error('overflow');
1732                  }
1733  
1734                  w *= baseMinusT;
1735  
1736              }
1737  
1738              out = output.length + 1;
1739              bias = adapt(i - oldi, out, oldi == 0);
1740  
1741              // `i` was supposed to wrap around from `out` to `0`,
1742              // incrementing `n` each time, so we'll fix that now:
1743              if (floor(i / out) > maxInt - n) {
1744                  error('overflow');
1745              }
1746  
1747              n += floor(i / out);
1748              i %= out;
1749  
1750              // Insert `n` at position `i` of the output
1751              output.splice(i++, 0, n);
1752  
1753          }
1754  
1755          return ucs2encode(output);
1756      }
1757  
1758      /**
1759       * Converts a string of Unicode symbols (e.g. a domain name label) to a
1760       * Punycode string of ASCII-only symbols.
1761       * @memberOf punycode
1762       * @param {String} input The string of Unicode symbols.
1763       * @returns {String} The resulting Punycode string of ASCII-only symbols.
1764       */
1765  	function encode(input) {
1766          var n,
1767              delta,
1768              handledCPCount,
1769              basicLength,
1770              bias,
1771              j,
1772              m,
1773              q,
1774              k,
1775              t,
1776              currentValue,
1777              output = [],
1778              /** `inputLength` will hold the number of code points in `input`. */
1779              inputLength,
1780              /** Cached calculation results */
1781              handledCPCountPlusOne,
1782              baseMinusT,
1783              qMinusT;
1784  
1785          // Convert the input in UCS-2 to Unicode
1786          input = ucs2decode(input);
1787  
1788          // Cache the length
1789          inputLength = input.length;
1790  
1791          // Initialize the state
1792          n = initialN;
1793          delta = 0;
1794          bias = initialBias;
1795  
1796          // Handle the basic code points
1797          for (j = 0; j < inputLength; ++j) {
1798              currentValue = input[j];
1799              if (currentValue < 0x80) {
1800                  output.push(stringFromCharCode(currentValue));
1801              }
1802          }
1803  
1804          handledCPCount = basicLength = output.length;
1805  
1806          // `handledCPCount` is the number of code points that have been handled;
1807          // `basicLength` is the number of basic code points.
1808  
1809          // Finish the basic string - if it is not empty - with a delimiter
1810          if (basicLength) {
1811              output.push(delimiter);
1812          }
1813  
1814          // Main encoding loop:
1815          while (handledCPCount < inputLength) {
1816  
1817              // All non-basic code points < n have been handled already. Find the next
1818              // larger one:
1819              for (m = maxInt, j = 0; j < inputLength; ++j) {
1820                  currentValue = input[j];
1821                  if (currentValue >= n && currentValue < m) {
1822                      m = currentValue;
1823                  }
1824              }
1825  
1826              // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
1827              // but guard against overflow
1828              handledCPCountPlusOne = handledCPCount + 1;
1829              if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
1830                  error('overflow');
1831              }
1832  
1833              delta += (m - n) * handledCPCountPlusOne;
1834              n = m;
1835  
1836              for (j = 0; j < inputLength; ++j) {
1837                  currentValue = input[j];
1838  
1839                  if (currentValue < n && ++delta > maxInt) {
1840                      error('overflow');
1841                  }
1842  
1843                  if (currentValue == n) {
1844                      // Represent delta as a generalized variable-length integer
1845                      for (q = delta, k = base; /* no condition */; k += base) {
1846                          t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
1847                          if (q < t) {
1848                              break;
1849                          }
1850                          qMinusT = q - t;
1851                          baseMinusT = base - t;
1852                          output.push(
1853                              stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
1854                          );
1855                          q = floor(qMinusT / baseMinusT);
1856                      }
1857  
1858                      output.push(stringFromCharCode(digitToBasic(q, 0)));
1859                      bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
1860                      delta = 0;
1861                      ++handledCPCount;
1862                  }
1863              }
1864  
1865              ++delta;
1866              ++n;
1867  
1868          }
1869          return output.join('');
1870      }
1871  
1872      /**
1873       * Converts a Punycode string representing a domain name or an email address
1874       * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
1875       * it doesn't matter if you call it on a string that has already been
1876       * converted to Unicode.
1877       * @memberOf punycode
1878       * @param {String} input The Punycoded domain name or email address to
1879       * convert to Unicode.
1880       * @returns {String} The Unicode representation of the given Punycode
1881       * string.
1882       */
1883  	function toUnicode(input) {
1884          return mapDomain(input, function(string) {
1885              return regexPunycode.test(string)
1886                  ? decode(string.slice(4).toLowerCase())
1887                  : string;
1888          });
1889      }
1890  
1891      /**
1892       * Converts a Unicode string representing a domain name or an email address to
1893       * Punycode. Only the non-ASCII parts of the domain name will be converted,
1894       * i.e. it doesn't matter if you call it with a domain that's already in
1895       * ASCII.
1896       * @memberOf punycode
1897       * @param {String} input The domain name or email address to convert, as a
1898       * Unicode string.
1899       * @returns {String} The Punycode representation of the given domain name or
1900       * email address.
1901       */
1902  	function toASCII(input) {
1903          return mapDomain(input, function(string) {
1904              return regexNonASCII.test(string)
1905                  ? 'xn--' + encode(string)
1906                  : string;
1907          });
1908      }
1909  
1910      /*--------------------------------------------------------------------------*/
1911  
1912      /** Define the public API */
1913      punycode = {
1914          /**
1915           * A string representing the current Punycode.js version number.
1916           * @memberOf punycode
1917           * @type String
1918           */
1919          'version': '1.3.2',
1920          /**
1921           * An object of methods to convert from JavaScript's internal character
1922           * representation (UCS-2) to Unicode code points, and back.
1923           * @see <https://mathiasbynens.be/notes/javascript-encoding>
1924           * @memberOf punycode
1925           * @type Object
1926           */
1927          'ucs2': {
1928              'decode': ucs2decode,
1929              'encode': ucs2encode
1930          },
1931          'decode': decode,
1932          'encode': encode,
1933          'toASCII': toASCII,
1934          'toUnicode': toUnicode
1935      };
1936  
1937      /** Expose `punycode` */
1938      // Some AMD build optimizers, like r.js, check for specific condition patterns
1939      // like the following:
1940      if (
1941          true
1942      ) {
1943          !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
1944              return punycode;
1945          }).call(exports, __webpack_require__, exports, module),
1946                  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1947      } else {}
1948  
1949  }(this));
1950  
1951  /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(122)(module), __webpack_require__(63)))
1952  
1953  /***/ }),
1954  
1955  /***/ 122:
1956  /***/ (function(module, exports) {
1957  
1958  module.exports = function(module) {
1959      if (!module.webpackPolyfill) {
1960          module.deprecate = function() {};
1961          module.paths = [];
1962          // module.parent = undefined by default
1963          if (!module.children) module.children = [];
1964          Object.defineProperty(module, "loaded", {
1965              enumerable: true,
1966              get: function() {
1967                  return module.l;
1968              }
1969          });
1970          Object.defineProperty(module, "id", {
1971              enumerable: true,
1972              get: function() {
1973                  return module.i;
1974              }
1975          });
1976          module.webpackPolyfill = 1;
1977      }
1978      return module;
1979  };
1980  
1981  
1982  /***/ }),
1983  
1984  /***/ 123:
1985  /***/ (function(module, exports, __webpack_require__) {
1986  
1987  "use strict";
1988  
1989  
1990  module.exports = {
1991    isString: function(arg) {
1992      return typeof(arg) === 'string';
1993    },
1994    isObject: function(arg) {
1995      return typeof(arg) === 'object' && arg !== null;
1996    },
1997    isNull: function(arg) {
1998      return arg === null;
1999    },
2000    isNullOrUndefined: function(arg) {
2001      return arg == null;
2002    }
2003  };
2004  
2005  
2006  /***/ }),
2007  
2008  /***/ 124:
2009  /***/ (function(module, exports, __webpack_require__) {
2010  
2011  "use strict";
2012  
2013  
2014  exports.decode = exports.parse = __webpack_require__(125);
2015  exports.encode = exports.stringify = __webpack_require__(126);
2016  
2017  
2018  /***/ }),
2019  
2020  /***/ 125:
2021  /***/ (function(module, exports, __webpack_require__) {
2022  
2023  "use strict";
2024  // Copyright Joyent, Inc. and other Node contributors.
2025  //
2026  // Permission is hereby granted, free of charge, to any person obtaining a
2027  // copy of this software and associated documentation files (the
2028  // "Software"), to deal in the Software without restriction, including
2029  // without limitation the rights to use, copy, modify, merge, publish,
2030  // distribute, sublicense, and/or sell copies of the Software, and to permit
2031  // persons to whom the Software is furnished to do so, subject to the
2032  // following conditions:
2033  //
2034  // The above copyright notice and this permission notice shall be included
2035  // in all copies or substantial portions of the Software.
2036  //
2037  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
2038  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
2039  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
2040  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
2041  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
2042  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
2043  // USE OR OTHER DEALINGS IN THE SOFTWARE.
2044  
2045  
2046  
2047  // If obj.hasOwnProperty has been overridden, then calling
2048  // obj.hasOwnProperty(prop) will break.
2049  // See: https://github.com/joyent/node/issues/1707
2050  function hasOwnProperty(obj, prop) {
2051    return Object.prototype.hasOwnProperty.call(obj, prop);
2052  }
2053  
2054  module.exports = function(qs, sep, eq, options) {
2055    sep = sep || '&';
2056    eq = eq || '=';
2057    var obj = {};
2058  
2059    if (typeof qs !== 'string' || qs.length === 0) {
2060      return obj;
2061    }
2062  
2063    var regexp = /\+/g;
2064    qs = qs.split(sep);
2065  
2066    var maxKeys = 1000;
2067    if (options && typeof options.maxKeys === 'number') {
2068      maxKeys = options.maxKeys;
2069    }
2070  
2071    var len = qs.length;
2072    // maxKeys <= 0 means that we should not limit keys count
2073    if (maxKeys > 0 && len > maxKeys) {
2074      len = maxKeys;
2075    }
2076  
2077    for (var i = 0; i < len; ++i) {
2078      var x = qs[i].replace(regexp, '%20'),
2079          idx = x.indexOf(eq),
2080          kstr, vstr, k, v;
2081  
2082      if (idx >= 0) {
2083        kstr = x.substr(0, idx);
2084        vstr = x.substr(idx + 1);
2085      } else {
2086        kstr = x;
2087        vstr = '';
2088      }
2089  
2090      k = decodeURIComponent(kstr);
2091      v = decodeURIComponent(vstr);
2092  
2093      if (!hasOwnProperty(obj, k)) {
2094        obj[k] = v;
2095      } else if (isArray(obj[k])) {
2096        obj[k].push(v);
2097      } else {
2098        obj[k] = [obj[k], v];
2099      }
2100    }
2101  
2102    return obj;
2103  };
2104  
2105  var isArray = Array.isArray || function (xs) {
2106    return Object.prototype.toString.call(xs) === '[object Array]';
2107  };
2108  
2109  
2110  /***/ }),
2111  
2112  /***/ 126:
2113  /***/ (function(module, exports, __webpack_require__) {
2114  
2115  "use strict";
2116  // Copyright Joyent, Inc. and other Node contributors.
2117  //
2118  // Permission is hereby granted, free of charge, to any person obtaining a
2119  // copy of this software and associated documentation files (the
2120  // "Software"), to deal in the Software without restriction, including
2121  // without limitation the rights to use, copy, modify, merge, publish,
2122  // distribute, sublicense, and/or sell copies of the Software, and to permit
2123  // persons to whom the Software is furnished to do so, subject to the
2124  // following conditions:
2125  //
2126  // The above copyright notice and this permission notice shall be included
2127  // in all copies or substantial portions of the Software.
2128  //
2129  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
2130  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
2131  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
2132  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
2133  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
2134  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
2135  // USE OR OTHER DEALINGS IN THE SOFTWARE.
2136  
2137  
2138  
2139  var stringifyPrimitive = function(v) {
2140    switch (typeof v) {
2141      case 'string':
2142        return v;
2143  
2144      case 'boolean':
2145        return v ? 'true' : 'false';
2146  
2147      case 'number':
2148        return isFinite(v) ? v : '';
2149  
2150      default:
2151        return '';
2152    }
2153  };
2154  
2155  module.exports = function(obj, sep, eq, name) {
2156    sep = sep || '&';
2157    eq = eq || '=';
2158    if (obj === null) {
2159      obj = undefined;
2160    }
2161  
2162    if (typeof obj === 'object') {
2163      return map(objectKeys(obj), function(k) {
2164        var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
2165        if (isArray(obj[k])) {
2166          return map(obj[k], function(v) {
2167            return ks + encodeURIComponent(stringifyPrimitive(v));
2168          }).join(sep);
2169        } else {
2170          return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
2171        }
2172      }).join(sep);
2173  
2174    }
2175  
2176    if (!name) return '';
2177    return encodeURIComponent(stringifyPrimitive(name)) + eq +
2178           encodeURIComponent(stringifyPrimitive(obj));
2179  };
2180  
2181  var isArray = Array.isArray || function (xs) {
2182    return Object.prototype.toString.call(xs) === '[object Array]';
2183  };
2184  
2185  function map (xs, f) {
2186    if (xs.map) return xs.map(f);
2187    var res = [];
2188    for (var i = 0; i < xs.length; i++) {
2189      res.push(f(xs[i], i));
2190    }
2191    return res;
2192  }
2193  
2194  var objectKeys = Object.keys || function (obj) {
2195    var res = [];
2196    for (var key in obj) {
2197      if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
2198    }
2199    return res;
2200  };
2201  
2202  
2203  /***/ }),
2204  
2205  /***/ 13:
2206  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2207  
2208  "use strict";
2209  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _createClass; });
2210  function _defineProperties(target, props) {
2211    for (var i = 0; i < props.length; i++) {
2212      var descriptor = props[i];
2213      descriptor.enumerable = descriptor.enumerable || false;
2214      descriptor.configurable = true;
2215      if ("value" in descriptor) descriptor.writable = true;
2216      Object.defineProperty(target, descriptor.key, descriptor);
2217    }
2218  }
2219  
2220  function _createClass(Constructor, protoProps, staticProps) {
2221    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
2222    if (staticProps) _defineProperties(Constructor, staticProps);
2223    return Constructor;
2224  }
2225  
2226  /***/ }),
2227  
2228  /***/ 14:
2229  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2230  
2231  "use strict";
2232  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _classCallCheck; });
2233  function _classCallCheck(instance, Constructor) {
2234    if (!(instance instanceof Constructor)) {
2235      throw new TypeError("Cannot call a class as a function");
2236    }
2237  }
2238  
2239  /***/ }),
2240  
2241  /***/ 144:
2242  /***/ (function(module, exports) {
2243  
2244  (function() { module.exports = this["wp"]["tokenList"]; }());
2245  
2246  /***/ }),
2247  
2248  /***/ 15:
2249  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2250  
2251  "use strict";
2252  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _possibleConstructorReturn; });
2253  /* harmony import */ var _helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(32);
2254  /* harmony import */ var _assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
2255  
2256  
2257  function _possibleConstructorReturn(self, call) {
2258    if (call && (Object(_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(call) === "object" || typeof call === "function")) {
2259      return call;
2260    }
2261  
2262    return Object(_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(self);
2263  }
2264  
2265  /***/ }),
2266  
2267  /***/ 16:
2268  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2269  
2270  "use strict";
2271  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _getPrototypeOf; });
2272  function _getPrototypeOf(o) {
2273    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
2274      return o.__proto__ || Object.getPrototypeOf(o);
2275    };
2276    return _getPrototypeOf(o);
2277  }
2278  
2279  /***/ }),
2280  
2281  /***/ 17:
2282  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2283  
2284  "use strict";
2285  
2286  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
2287  function _setPrototypeOf(o, p) {
2288    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
2289      o.__proto__ = p;
2290      return o;
2291    };
2292  
2293    return _setPrototypeOf(o, p);
2294  }
2295  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js
2296  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _inherits; });
2297  
2298  function _inherits(subClass, superClass) {
2299    if (typeof superClass !== "function" && superClass !== null) {
2300      throw new TypeError("Super expression must either be null or a function");
2301    }
2302  
2303    subClass.prototype = Object.create(superClass && superClass.prototype, {
2304      constructor: {
2305        value: subClass,
2306        writable: true,
2307        configurable: true
2308      }
2309    });
2310    if (superClass) _setPrototypeOf(subClass, superClass);
2311  }
2312  
2313  /***/ }),
2314  
2315  /***/ 18:
2316  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2317  
2318  "use strict";
2319  
2320  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
2321  function _arrayWithoutHoles(arr) {
2322    if (Array.isArray(arr)) {
2323      for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
2324        arr2[i] = arr[i];
2325      }
2326  
2327      return arr2;
2328    }
2329  }
2330  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js
2331  var iterableToArray = __webpack_require__(31);
2332  
2333  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
2334  function _nonIterableSpread() {
2335    throw new TypeError("Invalid attempt to spread non-iterable instance");
2336  }
2337  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
2338  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _toConsumableArray; });
2339  
2340  
2341  
2342  function _toConsumableArray(arr) {
2343    return _arrayWithoutHoles(arr) || Object(iterableToArray["a" /* default */])(arr) || _nonIterableSpread();
2344  }
2345  
2346  /***/ }),
2347  
2348  /***/ 19:
2349  /***/ (function(module, exports) {
2350  
2351  (function() { module.exports = this["wp"]["keycodes"]; }());
2352  
2353  /***/ }),
2354  
2355  /***/ 2:
2356  /***/ (function(module, exports) {
2357  
2358  (function() { module.exports = this["lodash"]; }());
2359  
2360  /***/ }),
2361  
2362  /***/ 20:
2363  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2364  
2365  "use strict";
2366  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectWithoutProperties; });
2367  /* harmony import */ var _objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(40);
2368  
2369  function _objectWithoutProperties(source, excluded) {
2370    if (source == null) return {};
2371    var target = Object(_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(source, excluded);
2372    var key, i;
2373  
2374    if (Object.getOwnPropertySymbols) {
2375      var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
2376  
2377      for (i = 0; i < sourceSymbolKeys.length; i++) {
2378        key = sourceSymbolKeys[i];
2379        if (excluded.indexOf(key) >= 0) continue;
2380        if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
2381        target[key] = source[key];
2382      }
2383    }
2384  
2385    return target;
2386  }
2387  
2388  /***/ }),
2389  
2390  /***/ 21:
2391  /***/ (function(module, exports) {
2392  
2393  (function() { module.exports = this["React"]; }());
2394  
2395  /***/ }),
2396  
2397  /***/ 216:
2398  /***/ (function(module, exports, __webpack_require__) {
2399  
2400  "use strict";
2401  
2402  
2403  Object.defineProperty(exports, "__esModule", {
2404    value: true
2405  });
2406  /**
2407   * Redux dispatch multiple actions
2408   */
2409  
2410  function multi(_ref) {
2411    var dispatch = _ref.dispatch;
2412  
2413    return function (next) {
2414      return function (action) {
2415        return Array.isArray(action) ? action.filter(Boolean).map(dispatch) : next(action);
2416      };
2417    };
2418  }
2419  
2420  /**
2421   * Exports
2422   */
2423  
2424  exports.default = multi;
2425  
2426  /***/ }),
2427  
2428  /***/ 217:
2429  /***/ (function(module, exports, __webpack_require__) {
2430  
2431  /*!
2432  
2433   diff v3.5.0
2434  
2435  Software License Agreement (BSD License)
2436  
2437  Copyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>
2438  
2439  All rights reserved.
2440  
2441  Redistribution and use of this software in source and binary forms, with or without modification,
2442  are permitted provided that the following conditions are met:
2443  
2444  * Redistributions of source code must retain the above
2445    copyright notice, this list of conditions and the
2446    following disclaimer.
2447  
2448  * Redistributions in binary form must reproduce the above
2449    copyright notice, this list of conditions and the
2450    following disclaimer in the documentation and/or other
2451    materials provided with the distribution.
2452  
2453  * Neither the name of Kevin Decker nor the names of its
2454    contributors may be used to endorse or promote products
2455    derived from this software without specific prior
2456    written permission.
2457  
2458  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
2459  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
2460  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
2461  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2462  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2463  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
2464  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
2465  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2466  @license
2467  */
2468  (function webpackUniversalModuleDefinition(root, factory) {
2469      if(true)
2470          module.exports = factory();
2471      else {}
2472  })(this, function() {
2473  return /******/ (function(modules) { // webpackBootstrap
2474  /******/     // The module cache
2475  /******/     var installedModules = {};
2476  
2477  /******/     // The require function
2478  /******/ 	function __webpack_require__(moduleId) {
2479  
2480  /******/         // Check if module is in cache
2481  /******/         if(installedModules[moduleId])
2482  /******/             return installedModules[moduleId].exports;
2483  
2484  /******/         // Create a new module (and put it into the cache)
2485  /******/         var module = installedModules[moduleId] = {
2486  /******/             exports: {},
2487  /******/             id: moduleId,
2488  /******/             loaded: false
2489  /******/         };
2490  
2491  /******/         // Execute the module function
2492  /******/         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
2493  
2494  /******/         // Flag the module as loaded
2495  /******/         module.loaded = true;
2496  
2497  /******/         // Return the exports of the module
2498  /******/         return module.exports;
2499  /******/     }
2500  
2501  
2502  /******/     // expose the modules object (__webpack_modules__)
2503  /******/     __webpack_require__.m = modules;
2504  
2505  /******/     // expose the module cache
2506  /******/     __webpack_require__.c = installedModules;
2507  
2508  /******/     // __webpack_public_path__
2509  /******/     __webpack_require__.p = "";
2510  
2511  /******/     // Load entry module and return exports
2512  /******/     return __webpack_require__(0);
2513  /******/ })
2514  /************************************************************************/
2515  /******/ ([
2516  /* 0 */
2517  /***/ (function(module, exports, __webpack_require__) {
2518  
2519      /*istanbul ignore start*/'use strict';
2520  
2521      exports.__esModule = true;
2522      exports.canonicalize = exports.convertChangesToXML = exports.convertChangesToDMP = exports.merge = exports.parsePatch = exports.applyPatches = exports.applyPatch = exports.createPatch = exports.createTwoFilesPatch = exports.structuredPatch = exports.diffArrays = exports.diffJson = exports.diffCss = exports.diffSentences = exports.diffTrimmedLines = exports.diffLines = exports.diffWordsWithSpace = exports.diffWords = exports.diffChars = exports.Diff = undefined;
2523  
2524      /*istanbul ignore end*/var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
2525  
2526      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
2527  
2528      /*istanbul ignore end*/var /*istanbul ignore start*/_character = __webpack_require__(2) /*istanbul ignore end*/;
2529  
2530      var /*istanbul ignore start*/_word = __webpack_require__(3) /*istanbul ignore end*/;
2531  
2532      var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
2533  
2534      var /*istanbul ignore start*/_sentence = __webpack_require__(6) /*istanbul ignore end*/;
2535  
2536      var /*istanbul ignore start*/_css = __webpack_require__(7) /*istanbul ignore end*/;
2537  
2538      var /*istanbul ignore start*/_json = __webpack_require__(8) /*istanbul ignore end*/;
2539  
2540      var /*istanbul ignore start*/_array = __webpack_require__(9) /*istanbul ignore end*/;
2541  
2542      var /*istanbul ignore start*/_apply = __webpack_require__(10) /*istanbul ignore end*/;
2543  
2544      var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/;
2545  
2546      var /*istanbul ignore start*/_merge = __webpack_require__(13) /*istanbul ignore end*/;
2547  
2548      var /*istanbul ignore start*/_create = __webpack_require__(14) /*istanbul ignore end*/;
2549  
2550      var /*istanbul ignore start*/_dmp = __webpack_require__(16) /*istanbul ignore end*/;
2551  
2552      var /*istanbul ignore start*/_xml = __webpack_require__(17) /*istanbul ignore end*/;
2553  
2554      /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2555  
2556      /* See LICENSE file for terms of use */
2557  
2558      /*
2559       * Text diff implementation.
2560       *
2561       * This library supports the following APIS:
2562       * JsDiff.diffChars: Character by character diff
2563       * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
2564       * JsDiff.diffLines: Line based diff
2565       *
2566       * JsDiff.diffCss: Diff targeted at CSS content
2567       *
2568       * These methods are based on the implementation proposed in
2569       * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
2570       * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
2571       */
2572      exports. /*istanbul ignore end*/Diff = _base2['default'];
2573      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffChars = _character.diffChars;
2574      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWords = _word.diffWords;
2575      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = _word.diffWordsWithSpace;
2576      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffLines = _line.diffLines;
2577      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = _line.diffTrimmedLines;
2578      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffSentences = _sentence.diffSentences;
2579      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffCss = _css.diffCss;
2580      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffJson = _json.diffJson;
2581      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffArrays = _array.diffArrays;
2582      /*istanbul ignore start*/exports. /*istanbul ignore end*/structuredPatch = _create.structuredPatch;
2583      /*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = _create.createTwoFilesPatch;
2584      /*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = _create.createPatch;
2585      /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatch = _apply.applyPatch;
2586      /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = _apply.applyPatches;
2587      /*istanbul ignore start*/exports. /*istanbul ignore end*/parsePatch = _parse.parsePatch;
2588      /*istanbul ignore start*/exports. /*istanbul ignore end*/merge = _merge.merge;
2589      /*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToDMP = _dmp.convertChangesToDMP;
2590      /*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToXML = _xml.convertChangesToXML;
2591      /*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = _json.canonicalize;
2592      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJEaWZmIiwiZGlmZkNoYXJzIiwiZGlmZldvcmRzIiwiZGlmZldvcmRzV2l0aFNwYWNlIiwiZGlmZkxpbmVzIiwiZGlmZlRyaW1tZWRMaW5lcyIsImRpZmZTZW50ZW5jZXMiLCJkaWZmQ3NzIiwiZGlmZkpzb24iLCJkaWZmQXJyYXlzIiwic3RydWN0dXJlZFBhdGNoIiwiY3JlYXRlVHdvRmlsZXNQYXRjaCIsImNyZWF0ZVBhdGNoIiwiYXBwbHlQYXRjaCIsImFwcGx5UGF0Y2hlcyIsInBhcnNlUGF0Y2giLCJtZXJnZSIsImNvbnZlcnRDaGFuZ2VzVG9ETVAiLCJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2Fub25pY2FsaXplIl0sIm1hcHBpbmdzIjoiOzs7Ozt1QkFnQkE7Ozs7dUJBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7QUFqQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7O2dDQWtDRUEsSTt5REFFQUMsUzt5REFDQUMsUzt5REFDQUMsa0I7eURBQ0FDLFM7eURBQ0FDLGdCO3lEQUNBQyxhO3lEQUVBQyxPO3lEQUNBQyxRO3lEQUVBQyxVO3lEQUVBQyxlO3lEQUNBQyxtQjt5REFDQUMsVzt5REFDQUMsVTt5REFDQUMsWTt5REFDQUMsVTt5REFDQUMsSzt5REFDQUMsbUI7eURBQ0FDLG1CO3lEQUNBQyxZIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogU2VlIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMgb2YgdXNlICovXG5cbi8qXG4gKiBUZXh0IGRpZmYgaW1wbGVtZW50YXRpb24uXG4gKlxuICogVGhpcyBsaWJyYXJ5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgQVBJUzpcbiAqIEpzRGlmZi5kaWZmQ2hhcnM6IENoYXJhY3RlciBieSBjaGFyYWN0ZXIgZGlmZlxuICogSnNEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBKc0RpZmYuZGlmZkxpbmVzOiBMaW5lIGJhc2VkIGRpZmZcbiAqXG4gKiBKc0RpZmYuZGlmZkNzczogRGlmZiB0YXJnZXRlZCBhdCBDU1MgY29udGVudFxuICpcbiAqIFRoZXNlIG1ldGhvZHMgYXJlIGJhc2VkIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBwcm9wb3NlZCBpblxuICogXCJBbiBPKE5EKSBEaWZmZXJlbmNlIEFsZ29yaXRobSBhbmQgaXRzIFZhcmlhdGlvbnNcIiAoTXllcnMsIDE5ODYpLlxuICogaHR0cDovL2NpdGVzZWVyeC5pc3QucHN1LmVkdS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS40LjY5MjdcbiAqL1xuaW1wb3J0IERpZmYgZnJvbSAnLi9kaWZmL2Jhc2UnO1xuaW1wb3J0IHtkaWZmQ2hhcnN9IGZyb20gJy4vZGlmZi9jaGFyYWN0ZXInO1xuaW1wb3J0IHtkaWZmV29yZHMsIGRpZmZXb3Jkc1dpdGhTcGFjZX0gZnJvbSAnLi9kaWZmL3dvcmQnO1xuaW1wb3J0IHtkaWZmTGluZXMsIGRpZmZUcmltbWVkTGluZXN9IGZyb20gJy4vZGlmZi9saW5lJztcbmltcG9ydCB7ZGlmZlNlbnRlbmNlc30gZnJvbSAnLi9kaWZmL3NlbnRlbmNlJztcblxuaW1wb3J0IHtkaWZmQ3NzfSBmcm9tICcuL2RpZmYvY3NzJztcbmltcG9ydCB7ZGlmZkpzb24sIGNhbm9uaWNhbGl6ZX0gZnJvbSAnLi9kaWZmL2pzb24nO1xuXG5pbXBvcnQge2RpZmZBcnJheXN9IGZyb20gJy4vZGlmZi9hcnJheSc7XG5cbmltcG9ydCB7YXBwbHlQYXRjaCwgYXBwbHlQYXRjaGVzfSBmcm9tICcuL3BhdGNoL2FwcGx5JztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXRjaC9wYXJzZSc7XG5pbXBvcnQge21lcmdlfSBmcm9tICcuL3BhdGNoL21lcmdlJztcbmltcG9ydCB7c3RydWN0dXJlZFBhdGNoLCBjcmVhdGVUd29GaWxlc1BhdGNoLCBjcmVhdGVQYXRjaH0gZnJvbSAnLi9wYXRjaC9jcmVhdGUnO1xuXG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9ETVB9IGZyb20gJy4vY29udmVydC9kbXAnO1xuaW1wb3J0IHtjb252ZXJ0Q2hhbmdlc1RvWE1MfSBmcm9tICcuL2NvbnZlcnQveG1sJztcblxuZXhwb3J0IHtcbiAgRGlmZixcblxuICBkaWZmQ2hhcnMsXG4gIGRpZmZXb3JkcyxcbiAgZGlmZldvcmRzV2l0aFNwYWNlLFxuICBkaWZmTGluZXMsXG4gIGRpZmZUcmltbWVkTGluZXMsXG4gIGRpZmZTZW50ZW5jZXMsXG5cbiAgZGlmZkNzcyxcbiAgZGlmZkpzb24sXG5cbiAgZGlmZkFycmF5cyxcblxuICBzdHJ1Y3R1cmVkUGF0Y2gsXG4gIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gsXG4gIGNyZWF0ZVBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICBjb252ZXJ0Q2hhbmdlc1RvRE1QLFxuICBjb252ZXJ0Q2hhbmdlc1RvWE1MLFxuICBjYW5vbmljYWxpemVcbn07XG4iXX0=
2593  
2594  
2595  /***/ }),
2596  /* 1 */
2597  /***/ (function(module, exports) {
2598  
2599      /*istanbul ignore start*/'use strict';
2600  
2601      exports.__esModule = true;
2602      exports['default'] = /*istanbul ignore end*/Diff;
2603  	function Diff() {}
2604  
2605      Diff.prototype = {
2606        /*istanbul ignore start*/ /*istanbul ignore end*/diff: function diff(oldString, newString) {
2607          /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
2608  
2609          var callback = options.callback;
2610          if (typeof options === 'function') {
2611            callback = options;
2612            options = {};
2613          }
2614          this.options = options;
2615  
2616          var self = this;
2617  
2618  	    function done(value) {
2619            if (callback) {
2620              setTimeout(function () {
2621                callback(undefined, value);
2622              }, 0);
2623              return true;
2624            } else {
2625              return value;
2626            }
2627          }
2628  
2629          // Allow subclasses to massage the input prior to running
2630          oldString = this.castInput(oldString);
2631          newString = this.castInput(newString);
2632  
2633          oldString = this.removeEmpty(this.tokenize(oldString));
2634          newString = this.removeEmpty(this.tokenize(newString));
2635  
2636          var newLen = newString.length,
2637              oldLen = oldString.length;
2638          var editLength = 1;
2639          var maxEditLength = newLen + oldLen;
2640          var bestPath = [{ newPos: -1, components: [] }];
2641  
2642          // Seed editLength = 0, i.e. the content starts with the same values
2643          var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
2644          if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
2645            // Identity per the equality and tokenizer
2646            return done([{ value: this.join(newString), count: newString.length }]);
2647          }
2648  
2649          // Main worker method. checks all permutations of a given edit length for acceptance.
2650  	    function execEditLength() {
2651            for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
2652              var basePath = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
2653              var addPath = bestPath[diagonalPath - 1],
2654                  removePath = bestPath[diagonalPath + 1],
2655                  _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
2656              if (addPath) {
2657                // No one else is going to attempt to use this value, clear it
2658                bestPath[diagonalPath - 1] = undefined;
2659              }
2660  
2661              var canAdd = addPath && addPath.newPos + 1 < newLen,
2662                  canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
2663              if (!canAdd && !canRemove) {
2664                // If this path is a terminal then prune
2665                bestPath[diagonalPath] = undefined;
2666                continue;
2667              }
2668  
2669              // Select the diagonal that we want to branch from. We select the prior
2670              // path whose position in the new string is the farthest from the origin
2671              // and does not pass the bounds of the diff graph
2672              if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
2673                basePath = clonePath(removePath);
2674                self.pushComponent(basePath.components, undefined, true);
2675              } else {
2676                basePath = addPath; // No need to clone, we've pulled it from the list
2677                basePath.newPos++;
2678                self.pushComponent(basePath.components, true, undefined);
2679              }
2680  
2681              _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath);
2682  
2683              // If we have hit the end of both strings, then we are done
2684              if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
2685                return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
2686              } else {
2687                // Otherwise track this path as a potential candidate and continue.
2688                bestPath[diagonalPath] = basePath;
2689              }
2690            }
2691  
2692            editLength++;
2693          }
2694  
2695          // Performs the length of edit iteration. Is a bit fugly as this has to support the
2696          // sync and async mode which is never fun. Loops over execEditLength until a value
2697          // is produced.
2698          if (callback) {
2699            (function exec() {
2700              setTimeout(function () {
2701                // This should not happen, but we want to be safe.
2702                /* istanbul ignore next */
2703                if (editLength > maxEditLength) {
2704                  return callback();
2705                }
2706  
2707                if (!execEditLength()) {
2708                  exec();
2709                }
2710              }, 0);
2711            })();
2712          } else {
2713            while (editLength <= maxEditLength) {
2714              var ret = execEditLength();
2715              if (ret) {
2716                return ret;
2717              }
2718            }
2719          }
2720        },
2721        /*istanbul ignore start*/ /*istanbul ignore end*/pushComponent: function pushComponent(components, added, removed) {
2722          var last = components[components.length - 1];
2723          if (last && last.added === added && last.removed === removed) {
2724            // We need to clone here as the component clone operation is just
2725            // as shallow array clone
2726            components[components.length - 1] = { count: last.count + 1, added: added, removed: removed };
2727          } else {
2728            components.push({ count: 1, added: added, removed: removed });
2729          }
2730        },
2731        /*istanbul ignore start*/ /*istanbul ignore end*/extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
2732          var newLen = newString.length,
2733              oldLen = oldString.length,
2734              newPos = basePath.newPos,
2735              oldPos = newPos - diagonalPath,
2736              commonCount = 0;
2737          while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
2738            newPos++;
2739            oldPos++;
2740            commonCount++;
2741          }
2742  
2743          if (commonCount) {
2744            basePath.components.push({ count: commonCount });
2745          }
2746  
2747          basePath.newPos = newPos;
2748          return oldPos;
2749        },
2750        /*istanbul ignore start*/ /*istanbul ignore end*/equals: function equals(left, right) {
2751          if (this.options.comparator) {
2752            return this.options.comparator(left, right);
2753          } else {
2754            return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
2755          }
2756        },
2757        /*istanbul ignore start*/ /*istanbul ignore end*/removeEmpty: function removeEmpty(array) {
2758          var ret = [];
2759          for (var i = 0; i < array.length; i++) {
2760            if (array[i]) {
2761              ret.push(array[i]);
2762            }
2763          }
2764          return ret;
2765        },
2766        /*istanbul ignore start*/ /*istanbul ignore end*/castInput: function castInput(value) {
2767          return value;
2768        },
2769        /*istanbul ignore start*/ /*istanbul ignore end*/tokenize: function tokenize(value) {
2770          return value.split('');
2771        },
2772        /*istanbul ignore start*/ /*istanbul ignore end*/join: function join(chars) {
2773          return chars.join('');
2774        }
2775      };
2776  
2777  	function buildValues(diff, components, newString, oldString, useLongestToken) {
2778        var componentPos = 0,
2779            componentLen = components.length,
2780            newPos = 0,
2781            oldPos = 0;
2782  
2783        for (; componentPos < componentLen; componentPos++) {
2784          var component = components[componentPos];
2785          if (!component.removed) {
2786            if (!component.added && useLongestToken) {
2787              var value = newString.slice(newPos, newPos + component.count);
2788              value = value.map(function (value, i) {
2789                var oldValue = oldString[oldPos + i];
2790                return oldValue.length > value.length ? oldValue : value;
2791              });
2792  
2793              component.value = diff.join(value);
2794            } else {
2795              component.value = diff.join(newString.slice(newPos, newPos + component.count));
2796            }
2797            newPos += component.count;
2798  
2799            // Common case
2800            if (!component.added) {
2801              oldPos += component.count;
2802            }
2803          } else {
2804            component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
2805            oldPos += component.count;
2806  
2807            // Reverse add and remove so removes are output first to match common convention
2808            // The diffing algorithm is tied to add then remove output and this is the simplest
2809            // route to get the desired output with minimal overhead.
2810            if (componentPos && components[componentPos - 1].added) {
2811              var tmp = components[componentPos - 1];
2812              components[componentPos - 1] = components[componentPos];
2813              components[componentPos] = tmp;
2814            }
2815          }
2816        }
2817  
2818        // Special case handle for when one terminal is ignored (i.e. whitespace).
2819        // For this case we merge the terminal into the prior string and drop the change.
2820        // This is only available for string mode.
2821        var lastComponent = components[componentLen - 1];
2822        if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
2823          components[componentLen - 2].value += lastComponent.value;
2824          components.pop();
2825        }
2826  
2827        return components;
2828      }
2829  
2830  	function clonePath(path) {
2831        return { newPos: path.newPos, components: path.components.slice(0) };
2832      }
2833      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsImJlc3RQYXRoIiwibmV3UG9zIiwiY29tcG9uZW50cyIsIm9sZFBvcyIsImV4dHJhY3RDb21tb24iLCJqb2luIiwiY291bnQiLCJleGVjRWRpdExlbmd0aCIsImRpYWdvbmFsUGF0aCIsImJhc2VQYXRoIiwiYWRkUGF0aCIsInJlbW92ZVBhdGgiLCJjYW5BZGQiLCJjYW5SZW1vdmUiLCJjbG9uZVBhdGgiLCJwdXNoQ29tcG9uZW50IiwiYnVpbGRWYWx1ZXMiLCJ1c2VMb25nZXN0VG9rZW4iLCJleGVjIiwicmV0IiwiYWRkZWQiLCJyZW1vdmVkIiwibGFzdCIsInB1c2giLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJzcGxpdCIsImNoYXJzIiwiY29tcG9uZW50UG9zIiwiY29tcG9uZW50TGVuIiwiY29tcG9uZW50Iiwic2xpY2UiLCJtYXAiLCJvbGRWYWx1ZSIsInRtcCIsImxhc3RDb21wb25lbnQiLCJwb3AiLCJwYXRoIl0sIm1hcHBpbmdzIjoiOzs7NENBQXdCQSxJO0FBQVQsU0FBU0EsSUFBVCxHQUFnQixDQUFFOztBQUVqQ0EsS0FBS0MsU0FBTCxHQUFpQjtBQUFBLG1EQUNmQyxJQURlLGdCQUNWQyxTQURVLEVBQ0NDLFNBREQsRUFDMEI7QUFBQSx3REFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUN2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RUFBd0JBLFNBQVNrQyxVQUFVL0IsS0FBM0MsQ0FBVixDQUFsQjtBQUNBSCxnQkFBVWtDLFVBQVUvQixLQUFwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFJNkIsZ0JBQWdCakMsV0FBV2lDLGVBQWUsQ0FBMUIsRUFBNkJmLEtBQWpELEVBQXdEO0FBQ3RELFlBQUlxQixNQUFNdkMsV0FBV2lDLGVBQWUsQ0FBMUIsQ0FBVjtBQUNBakMsbUJBQVdpQyxlQUFlLENBQTFCLElBQStCakMsV0FBV2lDLFlBQVgsQ0FBL0I7QUFDQWpDLG1CQUFXaUMsWUFBWCxJQUEyQk0sR0FBM0I7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsTUFBSUMsZ0JBQWdCeEMsV0FBV2tDLGVBQWUsQ0FBMUIsQ0FBcEI7QUFDQSxNQUFJQSxlQUFlLENBQWYsSUFDRyxPQUFPTSxjQUFjckQsS0FBckIsS0FBK0IsUUFEbEMsS0FFSXFELGNBQWN0QixLQUFkLElBQXVCc0IsY0FBY3JCLE9BRnpDLEtBR0d2QyxLQUFLMkMsTUFBTCxDQUFZLEVBQVosRUFBZ0JpQixjQUFjckQsS0FBOUIsQ0FIUCxFQUc2QztBQUMzQ2EsZUFBV2tDLGVBQWUsQ0FBMUIsRUFBNkIvQyxLQUE3QixJQUFzQ3FELGNBQWNyRCxLQUFwRDtBQUNBYSxlQUFXeUMsR0FBWDtBQUNEOztBQUVELFNBQU96QyxVQUFQO0FBQ0Q7O0FBRUQsU0FBU1ksU0FBVCxDQUFtQjhCLElBQW5CLEVBQXlCO0FBQ3ZCLFNBQU8sRUFBRTNDLFFBQVEyQyxLQUFLM0MsTUFBZixFQUF1QkMsWUFBWTBDLEtBQUsxQyxVQUFMLENBQWdCb0MsS0FBaEIsQ0FBc0IsQ0FBdEIsQ0FBbkMsRUFBUDtBQUNEIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaWZmKCkge31cblxuRGlmZi5wcm90b3R5cGUgPSB7XG4gIGRpZmYob2xkU3RyaW5nLCBuZXdTdHJpbmcsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBjYWxsYmFjayA9IG9wdGlvbnMuY2FsbGJhY2s7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBsZXQgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBkb25lKHZhbHVlKSB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgY2FsbGJhY2sodW5kZWZpbmVkLCB2YWx1ZSk7IH0sIDApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGxvdyBzdWJjbGFzc2VzIHRvIG1hc3NhZ2UgdGhlIGlucHV0IHByaW9yIHRvIHJ1bm5pbmdcbiAgICBvbGRTdHJpbmcgPSB0aGlzLmNhc3RJbnB1dChvbGRTdHJpbmcpO1xuICAgIG5ld1N0cmluZyA9IHRoaXMuY2FzdElucHV0KG5ld1N0cmluZyk7XG5cbiAgICBvbGRTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUob2xkU3RyaW5nKSk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5yZW1vdmVFbXB0eSh0aGlzLnRva2VuaXplKG5ld1N0cmluZykpO1xuXG4gICAgbGV0IG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGg7XG4gICAgbGV0IGVkaXRMZW5ndGggPSAxO1xuICAgIGxldCBtYXhFZGl0TGVuZ3RoID0gbmV3TGVuICsgb2xkTGVuO1xuICAgIGxldCBiZXN0UGF0aCA9IFt7IG5ld1BvczogLTEsIGNvbXBvbmVudHM6IFtdIH1dO1xuXG4gICAgLy8gU2VlZCBlZGl0TGVuZ3RoID0gMCwgaS5lLiB0aGUgY29udGVudCBzdGFydHMgd2l0aCB0aGUgc2FtZSB2YWx1ZXNcbiAgICBsZXQgb2xkUG9zID0gdGhpcy5leHRyYWN0Q29tbW9uKGJlc3RQYXRoWzBdLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgMCk7XG4gICAgaWYgKGJlc3RQYXRoWzBdLm5ld1BvcyArIDEgPj0gbmV3TGVuICYmIG9sZFBvcyArIDEgPj0gb2xkTGVuKSB7XG4gICAgICAvLyBJZGVudGl0eSBwZXIgdGhlIGVxdWFsaXR5IGFuZCB0b2tlbml6ZXJcbiAgICAgIHJldHVybiBkb25lKFt7dmFsdWU6IHRoaXMuam9pbihuZXdTdHJpbmcpLCBjb3VudDogbmV3U3RyaW5nLmxlbmd0aH1dKTtcbiAgICB9XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKGxldCBkaWFnb25hbFBhdGggPSAtMSAqIGVkaXRMZW5ndGg7IGRpYWdvbmFsUGF0aCA8PSBlZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggKz0gMikge1xuICAgICAgICBsZXQgYmFzZVBhdGg7XG4gICAgICAgIGxldCBhZGRQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0sXG4gICAgICAgICAgICByZW1vdmVQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoICsgMV0sXG4gICAgICAgICAgICBvbGRQb3MgPSAocmVtb3ZlUGF0aCA/IHJlbW92ZVBhdGgubmV3UG9zIDogMCkgLSBkaWFnb25hbFBhdGg7XG4gICAgICAgIGlmIChhZGRQYXRoKSB7XG4gICAgICAgICAgLy8gTm8gb25lIGVsc2UgaXMgZ29pbmcgdG8gYXR0ZW1wdCB0byB1c2UgdGhpcyB2YWx1ZSwgY2xlYXIgaXRcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5BZGQgPSBhZGRQYXRoICYmIGFkZFBhdGgubmV3UG9zICsgMSA8IG5ld0xlbixcbiAgICAgICAgICAgIGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgMCA8PSBvbGRQb3MgJiYgb2xkUG9zIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBuZXcgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICBpZiAoIWNhbkFkZCB8fCAoY2FuUmVtb3ZlICYmIGFkZFBhdGgubmV3UG9zIDwgcmVtb3ZlUGF0aC5uZXdQb3MpKSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBjbG9uZVBhdGgocmVtb3ZlUGF0aCk7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBhZGRQYXRoOyAgIC8vIE5vIG5lZWQgdG8gY2xvbmUsIHdlJ3ZlIHB1bGxlZCBpdCBmcm9tIHRoZSBsaXN0XG4gICAgICAgICAgYmFzZVBhdGgubmV3UG9zKys7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHRydWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICBvbGRQb3MgPSBzZWxmLmV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpO1xuXG4gICAgICAgIC8vIElmIHdlIGhhdmUgaGl0IHRoZSBlbmQgb2YgYm90aCBzdHJpbmdzLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgICAgIGlmIChiYXNlUGF0aC5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB0cmFjayB0aGlzIHBhdGggYXMgYSBwb3RlbnRpYWwgY2FuZGlkYXRlIGFuZCBjb250aW51ZS5cbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLlxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgKGZ1bmN0aW9uIGV4ZWMoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IHdlIHdhbnQgdG8gYmUgc2FmZS5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGgpIHtcbiAgICAgICAgbGV0IHJldCA9IGV4ZWNFZGl0TGVuZ3RoKCk7XG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHB1c2hDb21wb25lbnQoY29tcG9uZW50cywgYWRkZWQsIHJlbW92ZWQpIHtcbiAgICBsZXQgbGFzdCA9IGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICBpZiAobGFzdCAmJiBsYXN0LmFkZGVkID09PSBhZGRlZCAmJiBsYXN0LnJlbW92ZWQgPT09IHJlbW92ZWQpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2xvbmUgaGVyZSBhcyB0aGUgY29tcG9uZW50IGNsb25lIG9wZXJhdGlvbiBpcyBqdXN0XG4gICAgICAvLyBhcyBzaGFsbG93IGFycmF5IGNsb25lXG4gICAgICBjb21wb25lbnRzW2NvbXBvbmVudHMubGVuZ3RoIC0gMV0gPSB7Y291bnQ6IGxhc3QuY291bnQgKyAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50cy5wdXNoKHtjb3VudDogMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkIH0pO1xuICAgIH1cbiAgfSxcbiAgZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCkge1xuICAgIGxldCBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLFxuICAgICAgICBvbGRMZW4gPSBvbGRTdHJpbmcubGVuZ3RoLFxuICAgICAgICBuZXdQb3MgPSBiYXNlUGF0aC5uZXdQb3MsXG4gICAgICAgIG9sZFBvcyA9IG5ld1BvcyAtIGRpYWdvbmFsUGF0aCxcblxuICAgICAgICBjb21tb25Db3VudCA9IDA7XG4gICAgd2hpbGUgKG5ld1BvcyArIDEgPCBuZXdMZW4gJiYgb2xkUG9zICsgMSA8IG9sZExlbiAmJiB0aGlzLmVxdWFscyhuZXdTdHJpbmdbbmV3UG9zICsgMV0sIG9sZFN0cmluZ1tvbGRQb3MgKyAxXSkpIHtcbiAgICAgIG5ld1BvcysrO1xuICAgICAgb2xkUG9zKys7XG4gICAgICBjb21tb25Db3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjb21tb25Db3VudCkge1xuICAgICAgYmFzZVBhdGguY29tcG9uZW50cy5wdXNoKHtjb3VudDogY29tbW9uQ291bnR9KTtcbiAgICB9XG5cbiAgICBiYXNlUGF0aC5uZXdQb3MgPSBuZXdQb3M7XG4gICAgcmV0dXJuIG9sZFBvcztcbiAgfSxcblxuICBlcXVhbHMobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29tcGFyYXRvcihsZWZ0LCByaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsZWZ0ID09PSByaWdodFxuICAgICAgICB8fCAodGhpcy5vcHRpb25zLmlnbm9yZUNhc2UgJiYgbGVmdC50b0xvd2VyQ2FzZSgpID09PSByaWdodC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gIH0sXG4gIHJlbW92ZUVtcHR5KGFycmF5KSB7XG4gICAgbGV0IHJldCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcnJheVtpXSkge1xuICAgICAgICByZXQucHVzaChhcnJheVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0sXG4gIGNhc3RJbnB1dCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgdG9rZW5pemUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJycpO1xuICB9LFxuICBqb2luKGNoYXJzKSB7XG4gICAgcmV0dXJuIGNoYXJzLmpvaW4oJycpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBidWlsZFZhbHVlcyhkaWZmLCBjb21wb25lbnRzLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgdXNlTG9uZ2VzdFRva2VuKSB7XG4gIGxldCBjb21wb25lbnRQb3MgPSAwLFxuICAgICAgY29tcG9uZW50TGVuID0gY29tcG9uZW50cy5sZW5ndGgsXG4gICAgICBuZXdQb3MgPSAwLFxuICAgICAgb2xkUG9zID0gMDtcblxuICBmb3IgKDsgY29tcG9uZW50UG9zIDwgY29tcG9uZW50TGVuOyBjb21wb25lbnRQb3MrKykge1xuICAgIGxldCBjb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgaWYgKCFjb21wb25lbnQucmVtb3ZlZCkge1xuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQgJiYgdXNlTG9uZ2VzdFRva2VuKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCk7XG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKHZhbHVlLCBpKSB7XG4gICAgICAgICAgbGV0IG9sZFZhbHVlID0gb2xkU3RyaW5nW29sZFBvcyArIGldO1xuICAgICAgICAgIHJldHVybiBvbGRWYWx1ZS5sZW5ndGggPiB2YWx1ZS5sZW5ndGggPyBvbGRWYWx1ZSA6IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4odmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgfVxuICAgICAgbmV3UG9zICs9IGNvbXBvbmVudC5jb3VudDtcblxuICAgICAgLy8gQ29tbW9uIGNhc2VcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkKSB7XG4gICAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihvbGRTdHJpbmcuc2xpY2Uob2xkUG9zLCBvbGRQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIFJldmVyc2UgYWRkIGFuZCByZW1vdmUgc28gcmVtb3ZlcyBhcmUgb3V0cHV0IGZpcnN0IHRvIG1hdGNoIGNvbW1vbiBjb252ZW50aW9uXG4gICAgICAvLyBUaGUgZGlmZmluZyBhbGdvcml0aG0gaXMgdGllZCB0byBhZGQgdGhlbiByZW1vdmUgb3V0cHV0IGFuZCB0aGlzIGlzIHRoZSBzaW1wbGVzdFxuICAgICAgLy8gcm91dGUgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dCB3aXRoIG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgICBpZiAoY29tcG9uZW50UG9zICYmIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0uYWRkZWQpIHtcbiAgICAgICAgbGV0IHRtcCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV07XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0gPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zXSA9IHRtcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWFsIGNhc2UgaGFuZGxlIGZvciB3aGVuIG9uZSB0ZXJtaW5hbCBpcyBpZ25vcmVkIChpLmUuIHdoaXRlc3BhY2UpLlxuICAvLyBGb3IgdGhpcyBjYXNlIHdlIG1lcmdlIHRoZSB0ZXJtaW5hbCBpbnRvIHRoZSBwcmlvciBzdHJpbmcgYW5kIGRyb3AgdGhlIGNoYW5nZS5cbiAgLy8gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBmb3Igc3RyaW5nIG1vZGUuXG4gIGxldCBsYXN0Q29tcG9uZW50ID0gY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAxXTtcbiAgaWYgKGNvbXBvbmVudExlbiA+IDFcbiAgICAgICYmIHR5cGVvZiBsYXN0Q29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgKGxhc3RDb21wb25lbnQuYWRkZWQgfHwgbGFzdENvbXBvbmVudC5yZW1vdmVkKVxuICAgICAgJiYgZGlmZi5lcXVhbHMoJycsIGxhc3RDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBsYXN0Q29tcG9uZW50LnZhbHVlO1xuICAgIGNvbXBvbmVudHMucG9wKCk7XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50cztcbn1cblxuZnVuY3Rpb24gY2xvbmVQYXRoKHBhdGgpIHtcbiAgcmV0dXJuIHsgbmV3UG9zOiBwYXRoLm5ld1BvcywgY29tcG9uZW50czogcGF0aC5jb21wb25lbnRzLnNsaWNlKDApIH07XG59XG4iXX0=
2834  
2835  
2836  /***/ }),
2837  /* 2 */
2838  /***/ (function(module, exports, __webpack_require__) {
2839  
2840      /*istanbul ignore start*/'use strict';
2841  
2842      exports.__esModule = true;
2843      exports.characterDiff = undefined;
2844      exports. /*istanbul ignore end*/diffChars = diffChars;
2845  
2846      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
2847  
2848      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
2849  
2850  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2851  
2852      /*istanbul ignore end*/var characterDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/characterDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
2853  	function diffChars(oldStr, newStr, options) {
2854        return characterDiff.diff(oldStr, newStr, options);
2855      }
2856      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJkaWZmQ2hhcnMiLCJjaGFyYWN0ZXJEaWZmIiwib2xkU3RyIiwibmV3U3RyIiwib3B0aW9ucyIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBR2dCQSxTLEdBQUFBLFM7O0FBSGhCOzs7Ozs7dUJBRU8sSUFBTUMseUZBQWdCLHdFQUF0QjtBQUNBLFNBQVNELFNBQVQsQ0FBbUJFLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ0MsT0FBbkMsRUFBNEM7QUFBRSxTQUFPSCxjQUFjSSxJQUFkLENBQW1CSCxNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNDLE9BQW5DLENBQVA7QUFBcUQiLCJmaWxlIjoiY2hhcmFjdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19
2857  
2858  
2859  /***/ }),
2860  /* 3 */
2861  /***/ (function(module, exports, __webpack_require__) {
2862  
2863      /*istanbul ignore start*/'use strict';
2864  
2865      exports.__esModule = true;
2866      exports.wordDiff = undefined;
2867      exports. /*istanbul ignore end*/diffWords = diffWords;
2868      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = diffWordsWithSpace;
2869  
2870      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
2871  
2872      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
2873  
2874      /*istanbul ignore end*/var /*istanbul ignore start*/_params = __webpack_require__(4) /*istanbul ignore end*/;
2875  
2876      /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2877  
2878      /*istanbul ignore end*/ // Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode
2879      //
2880      // Ranges and exceptions:
2881      // Latin-1 Supplement, 0080–00FF
2882      //  - U+00D7  × Multiplication sign
2883      //  - U+00F7  ÷ Division sign
2884      // Latin Extended-A, 0100–017F
2885      // Latin Extended-B, 0180–024F
2886      // IPA Extensions, 0250–02AF
2887      // Spacing Modifier Letters, 02B0–02FF
2888      //  - U+02C7  ˇ &#711;  Caron
2889      //  - U+02D8  ˘ &#728;  Breve
2890      //  - U+02D9  ˙ &#729;  Dot Above
2891      //  - U+02DA  ˚ &#730;  Ring Above
2892      //  - U+02DB  ˛ &#731;  Ogonek
2893      //  - U+02DC  ˜ &#732;  Small Tilde
2894      //  - U+02DD  ˝ &#733;  Double Acute Accent
2895      // Latin Extended Additional, 1E00–1EFF
2896      var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
2897  
2898      var reWhitespace = /\S/;
2899  
2900      var wordDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/wordDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
2901      wordDiff.equals = function (left, right) {
2902        if (this.options.ignoreCase) {
2903          left = left.toLowerCase();
2904          right = right.toLowerCase();
2905        }
2906        return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
2907      };
2908      wordDiff.tokenize = function (value) {
2909        var tokens = value.split(/(\s+|\b)/);
2910  
2911        // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
2912        for (var i = 0; i < tokens.length - 1; i++) {
2913          // If we have an empty string in the next field and we have only word chars before and after, merge
2914          if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
2915            tokens[i] += tokens[i + 2];
2916            tokens.splice(i + 1, 2);
2917            i--;
2918          }
2919        }
2920  
2921        return tokens;
2922      };
2923  
2924  	function diffWords(oldStr, newStr, options) {
2925        options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(options, { ignoreWhitespace: true });
2926        return wordDiff.diff(oldStr, newStr, options);
2927      }
2928  
2929  	function diffWordsWithSpace(oldStr, newStr, options) {
2930        return wordDiff.diff(oldStr, newStr, options);
2931      }
2932      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZGlmZldvcmRzIiwiZGlmZldvcmRzV2l0aFNwYWNlIiwiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsIm9wdGlvbnMiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJpZ25vcmVXaGl0ZXNwYWNlIiwidGVzdCIsInRva2VuaXplIiwidmFsdWUiLCJ0b2tlbnMiLCJzcGxpdCIsImkiLCJsZW5ndGgiLCJzcGxpY2UiLCJvbGRTdHIiLCJuZXdTdHIiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7O2dDQW1EZ0JBLFMsR0FBQUEsUzt5REFLQUMsa0IsR0FBQUEsa0I7O0FBeERoQjs7Ozt1QkFDQTs7Ozt3QkFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxvQkFBb0IsK0RBQTFCOztBQUVBLElBQU1DLGVBQWUsSUFBckI7O0FBRU8sSUFBTUMsK0VBQVcsd0VBQWpCO0FBQ1BBLFNBQVNDLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsV0FBT0EsS0FBS0ksV0FBTCxFQUFQO0FBQ0FILFlBQVFBLE1BQU1HLFdBQU4sRUFBUjtBQUNEO0FBQ0QsU0FBT0osU0FBU0MsS0FBVCxJQUFtQixLQUFLQyxPQUFMLENBQWFHLGdCQUFiLElBQWlDLENBQUNSLGFBQWFTLElBQWIsQ0FBa0JOLElBQWxCLENBQWxDLElBQTZELENBQUNILGFBQWFTLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDtBQU9BSCxTQUFTUyxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEMsTUFBSUMsU0FBU0QsTUFBTUUsS0FBTixDQUFZLFVBQVosQ0FBYjs7QUFFQTtBQUNBLE9BQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJRixPQUFPRyxNQUFQLEdBQWdCLENBQXBDLEVBQXVDRCxHQUF2QyxFQUE0QztBQUMxQztBQUNBLFFBQUksQ0FBQ0YsT0FBT0UsSUFBSSxDQUFYLENBQUQsSUFBa0JGLE9BQU9FLElBQUksQ0FBWCxDQUFsQixJQUNLZixrQkFBa0JVLElBQWxCLENBQXVCRyxPQUFPRSxDQUFQLENBQXZCLENBREwsSUFFS2Ysa0JBQWtCVSxJQUFsQixDQUF1QkcsT0FBT0UsSUFBSSxDQUFYLENBQXZCLENBRlQsRUFFZ0Q7QUFDOUNGLGFBQU9FLENBQVAsS0FBYUYsT0FBT0UsSUFBSSxDQUFYLENBQWI7QUFDQUYsYUFBT0ksTUFBUCxDQUFjRixJQUFJLENBQWxCLEVBQXFCLENBQXJCO0FBQ0FBO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FoQkQ7O0FBa0JPLFNBQVNmLFNBQVQsQ0FBbUJvQixNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNiLE9BQW5DLEVBQTRDO0FBQ2pEQSxZQUFVLDhFQUFnQkEsT0FBaEIsRUFBeUIsRUFBQ0csa0JBQWtCLElBQW5CLEVBQXpCLENBQVY7QUFDQSxTQUFPUCxTQUFTa0IsSUFBVCxDQUFjRixNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmIsT0FBOUIsQ0FBUDtBQUNEOztBQUVNLFNBQVNQLGtCQUFULENBQTRCbUIsTUFBNUIsRUFBb0NDLE1BQXBDLEVBQTRDYixPQUE1QyxFQUFxRDtBQUMxRCxTQUFPSixTQUFTa0IsSUFBVCxDQUFjRixNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmIsT0FBOUIsQ0FBUDtBQUNEIiwiZmlsZSI6IndvcmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtnZW5lcmF0ZU9wdGlvbnN9IGZyb20gJy4uL3V0aWwvcGFyYW1zJztcblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fc2NyaXB0X2luX1VuaWNvZGVcbi8vXG4vLyBSYW5nZXMgYW5kIGV4Y2VwdGlvbnM6XG4vLyBMYXRpbi0xIFN1cHBsZW1lbnQsIDAwODDigJMwMEZGXG4vLyAgLSBVKzAwRDcgIMOXIE11bHRpcGxpY2F0aW9uIHNpZ25cbi8vICAtIFUrMDBGNyAgw7cgRGl2aXNpb24gc2lnblxuLy8gTGF0aW4gRXh0ZW5kZWQtQSwgMDEwMOKAkzAxN0Zcbi8vIExhdGluIEV4dGVuZGVkLUIsIDAxODDigJMwMjRGXG4vLyBJUEEgRXh0ZW5zaW9ucywgMDI1MOKAkzAyQUZcbi8vIFNwYWNpbmcgTW9kaWZpZXIgTGV0dGVycywgMDJCMOKAkzAyRkZcbi8vICAtIFUrMDJDNyAgy4cgJiM3MTE7ICBDYXJvblxuLy8gIC0gVSswMkQ4ICDLmCAmIzcyODsgIEJyZXZlXG4vLyAgLSBVKzAyRDkgIMuZICYjNzI5OyAgRG90IEFib3ZlXG4vLyAgLSBVKzAyREEgIMuaICYjNzMwOyAgUmluZyBBYm92ZVxuLy8gIC0gVSswMkRCICDLmyAmIzczMTsgIE9nb25la1xuLy8gIC0gVSswMkRDICDLnCAmIzczMjsgIFNtYWxsIFRpbGRlXG4vLyAgLSBVKzAyREQgIMudICYjNzMzOyAgRG91YmxlIEFjdXRlIEFjY2VudFxuLy8gTGF0aW4gRXh0ZW5kZWQgQWRkaXRpb25hbCwgMUUwMOKAkzFFRkZcbmNvbnN0IGV4dGVuZGVkV29yZENoYXJzID0gL15bYS16QS1aXFx1e0MwfS1cXHV7RkZ9XFx1e0Q4fS1cXHV7RjZ9XFx1e0Y4fS1cXHV7MkM2fVxcdXsyQzh9LVxcdXsyRDd9XFx1ezJERX0tXFx1ezJGRn1cXHV7MUUwMH0tXFx1ezFFRkZ9XSskL3U7XG5cbmNvbnN0IHJlV2hpdGVzcGFjZSA9IC9cXFMvO1xuXG5leHBvcnQgY29uc3Qgd29yZERpZmYgPSBuZXcgRGlmZigpO1xud29yZERpZmYuZXF1YWxzID0gZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgaWYgKHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlKSB7XG4gICAgbGVmdCA9IGxlZnQudG9Mb3dlckNhc2UoKTtcbiAgICByaWdodCA9IHJpZ2h0LnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0IHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSAmJiAhcmVXaGl0ZXNwYWNlLnRlc3QobGVmdCkgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KHJpZ2h0KSk7XG59O1xud29yZERpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBsZXQgdG9rZW5zID0gdmFsdWUuc3BsaXQoLyhcXHMrfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0=
2933  
2934  
2935  /***/ }),
2936  /* 4 */
2937  /***/ (function(module, exports) {
2938  
2939      /*istanbul ignore start*/'use strict';
2940  
2941      exports.__esModule = true;
2942      exports. /*istanbul ignore end*/generateOptions = generateOptions;
2943  	function generateOptions(options, defaults) {
2944        if (typeof options === 'function') {
2945          defaults.callback = options;
2946        } else if (options) {
2947          for (var name in options) {
2948            /* istanbul ignore else */
2949            if (options.hasOwnProperty(name)) {
2950              defaults[name] = options[name];
2951            }
2952          }
2953        }
2954        return defaults;
2955      }
2956      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7O2dDQUFnQkEsZSxHQUFBQSxlO0FBQVQsU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsYUFBU0MsUUFBVCxHQUFvQkYsT0FBcEI7QUFDRCxHQUZELE1BRU8sSUFBSUEsT0FBSixFQUFhO0FBQ2xCLFNBQUssSUFBSUcsSUFBVCxJQUFpQkgsT0FBakIsRUFBMEI7QUFDeEI7QUFDQSxVQUFJQSxRQUFRSSxjQUFSLENBQXVCRCxJQUF2QixDQUFKLEVBQWtDO0FBQ2hDRixpQkFBU0UsSUFBVCxJQUFpQkgsUUFBUUcsSUFBUixDQUFqQjtBQUNEO0FBQ0Y7QUFDRjtBQUNELFNBQU9GLFFBQVA7QUFDRCIsImZpbGUiOiJwYXJhbXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0=
2957  
2958  
2959  /***/ }),
2960  /* 5 */
2961  /***/ (function(module, exports, __webpack_require__) {
2962  
2963      /*istanbul ignore start*/'use strict';
2964  
2965      exports.__esModule = true;
2966      exports.lineDiff = undefined;
2967      exports. /*istanbul ignore end*/diffLines = diffLines;
2968      /*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = diffTrimmedLines;
2969  
2970      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
2971  
2972      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
2973  
2974      /*istanbul ignore end*/var /*istanbul ignore start*/_params = __webpack_require__(4) /*istanbul ignore end*/;
2975  
2976      /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2977  
2978      /*istanbul ignore end*/var lineDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/lineDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
2979      lineDiff.tokenize = function (value) {
2980        var retLines = [],
2981            linesAndNewlines = value.split(/(\n|\r\n)/);
2982  
2983        // Ignore the final empty token that occurs if the string ends with a new line
2984        if (!linesAndNewlines[linesAndNewlines.length - 1]) {
2985          linesAndNewlines.pop();
2986        }
2987  
2988        // Merge the content and line separators into single tokens
2989        for (var i = 0; i < linesAndNewlines.length; i++) {
2990          var line = linesAndNewlines[i];
2991  
2992          if (i % 2 && !this.options.newlineIsToken) {
2993            retLines[retLines.length - 1] += line;
2994          } else {
2995            if (this.options.ignoreWhitespace) {
2996              line = line.trim();
2997            }
2998            retLines.push(line);
2999          }
3000        }
3001  
3002        return retLines;
3003      };
3004  
3005  	function diffLines(oldStr, newStr, callback) {
3006        return lineDiff.diff(oldStr, newStr, callback);
3007      }
3008  	function diffTrimmedLines(oldStr, newStr, callback) {
3009        var options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(callback, { ignoreWhitespace: true });
3010        return lineDiff.diff(oldStr, newStr, options);
3011      }
3012      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsiZGlmZkxpbmVzIiwiZGlmZlRyaW1tZWRMaW5lcyIsImxpbmVEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsInJldExpbmVzIiwibGluZXNBbmROZXdsaW5lcyIsInNwbGl0IiwibGVuZ3RoIiwicG9wIiwiaSIsImxpbmUiLCJvcHRpb25zIiwibmV3bGluZUlzVG9rZW4iLCJpZ25vcmVXaGl0ZXNwYWNlIiwidHJpbSIsInB1c2giLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBOEJnQkEsUyxHQUFBQSxTO3lEQUNBQyxnQixHQUFBQSxnQjs7QUEvQmhCOzs7O3VCQUNBOzs7O3VCQUVPLElBQU1DLCtFQUFXLHdFQUFqQjtBQUNQQSxTQUFTQyxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEMsTUFBSUMsV0FBVyxFQUFmO0FBQUEsTUFDSUMsbUJBQW1CRixNQUFNRyxLQUFOLENBQVksV0FBWixDQUR2Qjs7QUFHQTtBQUNBLE1BQUksQ0FBQ0QsaUJBQWlCQSxpQkFBaUJFLE1BQWpCLEdBQTBCLENBQTNDLENBQUwsRUFBb0Q7QUFDbERGLHFCQUFpQkcsR0FBakI7QUFDRDs7QUFFRDtBQUNBLE9BQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJSixpQkFBaUJFLE1BQXJDLEVBQTZDRSxHQUE3QyxFQUFrRDtBQUNoRCxRQUFJQyxPQUFPTCxpQkFBaUJJLENBQWpCLENBQVg7O0FBRUEsUUFBSUEsSUFBSSxDQUFKLElBQVMsQ0FBQyxLQUFLRSxPQUFMLENBQWFDLGNBQTNCLEVBQTJDO0FBQ3pDUixlQUFTQSxTQUFTRyxNQUFULEdBQWtCLENBQTNCLEtBQWlDRyxJQUFqQztBQUNELEtBRkQsTUFFTztBQUNMLFVBQUksS0FBS0MsT0FBTCxDQUFhRSxnQkFBakIsRUFBbUM7QUFDakNILGVBQU9BLEtBQUtJLElBQUwsRUFBUDtBQUNEO0FBQ0RWLGVBQVNXLElBQVQsQ0FBY0wsSUFBZDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT04sUUFBUDtBQUNELENBeEJEOztBQTBCTyxTQUFTTCxTQUFULENBQW1CaUIsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxRQUFuQyxFQUE2QztBQUFFLFNBQU9qQixTQUFTa0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QkMsUUFBOUIsQ0FBUDtBQUFpRDtBQUNoRyxTQUFTbEIsZ0JBQVQsQ0FBMEJnQixNQUExQixFQUFrQ0MsTUFBbEMsRUFBMENDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUlQLFVBQVUsOEVBQWdCTyxRQUFoQixFQUEwQixFQUFDTCxrQkFBa0IsSUFBbkIsRUFBMUIsQ0FBZDtBQUNBLFNBQU9aLFNBQVNrQixJQUFULENBQWNILE1BQWQsRUFBc0JDLE1BQXRCLEVBQThCTixPQUE5QixDQUFQO0FBQ0QiLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2dlbmVyYXRlT3B0aW9uc30gZnJvbSAnLi4vdXRpbC9wYXJhbXMnO1xuXG5leHBvcnQgY29uc3QgbGluZURpZmYgPSBuZXcgRGlmZigpO1xubGluZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBsZXQgcmV0TGluZXMgPSBbXSxcbiAgICAgIGxpbmVzQW5kTmV3bGluZXMgPSB2YWx1ZS5zcGxpdCgvKFxcbnxcXHJcXG4pLyk7XG5cbiAgLy8gSWdub3JlIHRoZSBmaW5hbCBlbXB0eSB0b2tlbiB0aGF0IG9jY3VycyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhIG5ldyBsaW5lXG4gIGlmICghbGluZXNBbmROZXdsaW5lc1tsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgbGluZXNBbmROZXdsaW5lcy5wb3AoKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHRoZSBjb250ZW50IGFuZCBsaW5lIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgdG9rZW5zXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNBbmROZXdsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBsaW5lID0gbGluZXNBbmROZXdsaW5lc1tpXTtcblxuICAgIGlmIChpICUgMiAmJiAhdGhpcy5vcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgfVxuICAgICAgcmV0TGluZXMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0TGluZXM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG5leHBvcnQgZnVuY3Rpb24gZGlmZlRyaW1tZWRMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbiJdfQ==
3013  
3014  
3015  /***/ }),
3016  /* 6 */
3017  /***/ (function(module, exports, __webpack_require__) {
3018  
3019      /*istanbul ignore start*/'use strict';
3020  
3021      exports.__esModule = true;
3022      exports.sentenceDiff = undefined;
3023      exports. /*istanbul ignore end*/diffSentences = diffSentences;
3024  
3025      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
3026  
3027      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
3028  
3029  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3030  
3031      /*istanbul ignore end*/var sentenceDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/sentenceDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
3032      sentenceDiff.tokenize = function (value) {
3033        return value.split(/(\S.+?[.!?])(?=\s+|$)/);
3034      };
3035  
3036  	function diffSentences(oldStr, newStr, callback) {
3037        return sentenceDiff.diff(oldStr, newStr, callback);
3038      }
3039      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbImRpZmZTZW50ZW5jZXMiLCJzZW50ZW5jZURpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBUWdCQSxhLEdBQUFBLGE7O0FBUmhCOzs7Ozs7dUJBR08sSUFBTUMsdUZBQWUsd0VBQXJCO0FBQ1BBLGFBQWFDLFFBQWIsR0FBd0IsVUFBU0MsS0FBVCxFQUFnQjtBQUN0QyxTQUFPQSxNQUFNQyxLQUFOLENBQVksdUJBQVosQ0FBUDtBQUNELENBRkQ7O0FBSU8sU0FBU0osYUFBVCxDQUF1QkssTUFBdkIsRUFBK0JDLE1BQS9CLEVBQXVDQyxRQUF2QyxFQUFpRDtBQUFFLFNBQU9OLGFBQWFPLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsImZpbGUiOiJzZW50ZW5jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==
3040  
3041  
3042  /***/ }),
3043  /* 7 */
3044  /***/ (function(module, exports, __webpack_require__) {
3045  
3046      /*istanbul ignore start*/'use strict';
3047  
3048      exports.__esModule = true;
3049      exports.cssDiff = undefined;
3050      exports. /*istanbul ignore end*/diffCss = diffCss;
3051  
3052      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
3053  
3054      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
3055  
3056  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3057  
3058      /*istanbul ignore end*/var cssDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/cssDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
3059      cssDiff.tokenize = function (value) {
3060        return value.split(/([{}:;,]|\s+)/);
3061      };
3062  
3063  	function diffCss(oldStr, newStr, callback) {
3064        return cssDiff.diff(oldStr, newStr, callback);
3065      }
3066      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJkaWZmQ3NzIiwiY3NzRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsIm9sZFN0ciIsIm5ld1N0ciIsImNhbGxiYWNrIiwiZGlmZiJdLCJtYXBwaW5ncyI6Ijs7OztnQ0FPZ0JBLE8sR0FBQUEsTzs7QUFQaEI7Ozs7Ozt1QkFFTyxJQUFNQyw2RUFBVSx3RUFBaEI7QUFDUEEsUUFBUUMsUUFBUixHQUFtQixVQUFTQyxLQUFULEVBQWdCO0FBQ2pDLFNBQU9BLE1BQU1DLEtBQU4sQ0FBWSxlQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNKLE9BQVQsQ0FBaUJLLE1BQWpCLEVBQXlCQyxNQUF6QixFQUFpQ0MsUUFBakMsRUFBMkM7QUFBRSxTQUFPTixRQUFRTyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwiZmlsZSI6ImNzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBjc3NEaWZmID0gbmV3IERpZmYoKTtcbmNzc0RpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhbe306OyxdfFxccyspLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNzcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIGNzc0RpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG4iXX0=
3067  
3068  
3069  /***/ }),
3070  /* 8 */
3071  /***/ (function(module, exports, __webpack_require__) {
3072  
3073      /*istanbul ignore start*/'use strict';
3074  
3075      exports.__esModule = true;
3076      exports.jsonDiff = undefined;
3077  
3078      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; };
3079  
3080      exports. /*istanbul ignore end*/diffJson = diffJson;
3081      /*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = canonicalize;
3082  
3083      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
3084  
3085      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
3086  
3087      /*istanbul ignore end*/var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
3088  
3089      /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3090  
3091      /*istanbul ignore end*/var objectPrototypeToString = Object.prototype.toString;
3092  
3093      var jsonDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/jsonDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
3094      // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
3095      // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
3096      jsonDiff.useLongestToken = true;
3097  
3098      jsonDiff.tokenize = /*istanbul ignore start*/_line.lineDiff /*istanbul ignore end*/.tokenize;
3099      jsonDiff.castInput = function (value) {
3100        /*istanbul ignore start*/var _options = /*istanbul ignore end*/this.options,
3101            undefinedReplacement = _options.undefinedReplacement,
3102            _options$stringifyRep = _options.stringifyReplacer,
3103            stringifyReplacer = _options$stringifyRep === undefined ? function (k, v) /*istanbul ignore start*/{
3104          return (/*istanbul ignore end*/typeof v === 'undefined' ? undefinedReplacement : v
3105          );
3106        } : _options$stringifyRep;
3107  
3108  
3109        return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, '  ');
3110      };
3111      jsonDiff.equals = function (left, right) {
3112        return (/*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'))
3113        );
3114      };
3115  
3116  	function diffJson(oldObj, newObj, options) {
3117        return jsonDiff.diff(oldObj, newObj, options);
3118      }
3119  
3120      // This function handles the presence of circular references by bailing out when encountering an
3121      // object that is already on the "stack" of items being processed. Accepts an optional replacer
3122  	function canonicalize(obj, stack, replacementStack, replacer, key) {
3123        stack = stack || [];
3124        replacementStack = replacementStack || [];
3125  
3126        if (replacer) {
3127          obj = replacer(key, obj);
3128        }
3129  
3130        var i = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
3131  
3132        for (i = 0; i < stack.length; i += 1) {
3133          if (stack[i] === obj) {
3134            return replacementStack[i];
3135          }
3136        }
3137  
3138        var canonicalizedObj = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
3139  
3140        if ('[object Array]' === objectPrototypeToString.call(obj)) {
3141          stack.push(obj);
3142          canonicalizedObj = new Array(obj.length);
3143          replacementStack.push(canonicalizedObj);
3144          for (i = 0; i < obj.length; i += 1) {
3145            canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);
3146          }
3147          stack.pop();
3148          replacementStack.pop();
3149          return canonicalizedObj;
3150        }
3151  
3152        if (obj && obj.toJSON) {
3153          obj = obj.toJSON();
3154        }
3155  
3156        if ( /*istanbul ignore start*/(typeof /*istanbul ignore end*/obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null) {
3157          stack.push(obj);
3158          canonicalizedObj = {};
3159          replacementStack.push(canonicalizedObj);
3160          var sortedKeys = [],
3161              _key = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
3162          for (_key in obj) {
3163            /* istanbul ignore else */
3164            if (obj.hasOwnProperty(_key)) {
3165              sortedKeys.push(_key);
3166            }
3167          }
3168          sortedKeys.sort();
3169          for (i = 0; i < sortedKeys.length; i += 1) {
3170            _key = sortedKeys[i];
3171            canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
3172          }
3173          stack.pop();
3174          replacementStack.pop();
3175        } else {
3176          canonicalizedObj = obj;
3177        }
3178        return canonicalizedObj;
3179      }
3180      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsiZGlmZkpzb24iLCJjYW5vbmljYWxpemUiLCJvYmplY3RQcm90b3R5cGVUb1N0cmluZyIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwianNvbkRpZmYiLCJ1c2VMb25nZXN0VG9rZW4iLCJ0b2tlbml6ZSIsImNhc3RJbnB1dCIsInZhbHVlIiwib3B0aW9ucyIsInVuZGVmaW5lZFJlcGxhY2VtZW50Iiwic3RyaW5naWZ5UmVwbGFjZXIiLCJrIiwidiIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJjYWxsIiwicmVwbGFjZSIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztnQ0FxQmdCQSxRLEdBQUFBLFE7eURBSUFDLFksR0FBQUEsWTs7QUF6QmhCOzs7O3VCQUNBOzs7O3VCQUVBLElBQU1DLDBCQUEwQkMsT0FBT0MsU0FBUCxDQUFpQkMsUUFBakQ7O0FBR08sSUFBTUMsK0VBQVcsd0VBQWpCO0FBQ1A7QUFDQTtBQUNBQSxTQUFTQyxlQUFULEdBQTJCLElBQTNCOztBQUVBRCxTQUFTRSxRQUFULEdBQW9CLGdFQUFTQSxRQUE3QjtBQUNBRixTQUFTRyxTQUFULEdBQXFCLFVBQVNDLEtBQVQsRUFBZ0I7QUFBQSxpRUFDK0UsS0FBS0MsT0FEcEY7QUFBQSxNQUM1QkMsb0JBRDRCLFlBQzVCQSxvQkFENEI7QUFBQSx1Q0FDTkMsaUJBRE07QUFBQSxNQUNOQSxpQkFETSx5Q0FDYyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxtQ0FBVSxPQUFPQSxDQUFQ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QUFLVCxJQUFJLENBQVQsRUFBWUEsSUFBSU8sV0FBV04sTUFBM0IsRUFBbUNELEtBQUssQ0FBeEMsRUFBMkM7QUFDekNELGFBQU1RLFdBQVdQLENBQVgsQ0FBTjtBQUNBRSx1QkFBaUJILElBQWpCLElBQXdCN0IsYUFBYXlCLElBQUlJLElBQUosQ0FBYixFQUF1QkgsS0FBdkIsRUFBOEJDLGdCQUE5QixFQUFnREMsUUFBaEQsRUFBMERDLElBQTFELENBQXhCO0FBQ0Q7QUFDREgsVUFBTVMsR0FBTjtBQUNBUixxQkFBaUJRLEdBQWpCO0FBQ0QsR0FuQkQsTUFtQk87QUFDTEgsdUJBQW1CUCxHQUFuQjtBQUNEO0FBQ0QsU0FBT08sZ0JBQVA7QUFDRCIsImZpbGUiOiJqc29uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0=
3181  
3182  
3183  /***/ }),
3184  /* 9 */
3185  /***/ (function(module, exports, __webpack_require__) {
3186  
3187      /*istanbul ignore start*/'use strict';
3188  
3189      exports.__esModule = true;
3190      exports.arrayDiff = undefined;
3191      exports. /*istanbul ignore end*/diffArrays = diffArrays;
3192  
3193      var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
3194  
3195      /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
3196  
3197  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3198  
3199      /*istanbul ignore end*/var arrayDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/arrayDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
3200      arrayDiff.tokenize = function (value) {
3201        return value.slice();
3202      };
3203      arrayDiff.join = arrayDiff.removeEmpty = function (value) {
3204        return value;
3205      };
3206  
3207  	function diffArrays(oldArr, newArr, callback) {
3208        return arrayDiff.diff(oldArr, newArr, callback);
3209      }
3210      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImRpZmZBcnJheXMiLCJhcnJheURpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJvbGRBcnIiLCJuZXdBcnIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBVWdCQSxVLEdBQUFBLFU7O0FBVmhCOzs7Ozs7dUJBRU8sSUFBTUMsaUZBQVksd0VBQWxCO0FBQ1BBLFVBQVVDLFFBQVYsR0FBcUIsVUFBU0MsS0FBVCxFQUFnQjtBQUNuQyxTQUFPQSxNQUFNQyxLQUFOLEVBQVA7QUFDRCxDQUZEO0FBR0FILFVBQVVJLElBQVYsR0FBaUJKLFVBQVVLLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSCxVQUFULENBQW9CTyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1IsVUFBVVMsSUFBVixDQUFlSCxNQUFmLEVBQXVCQyxNQUF2QixFQUErQkMsUUFBL0IsQ0FBUDtBQUFrRCIsImZpbGUiOiJhcnJheS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBhcnJheURpZmYgPSBuZXcgRGlmZigpO1xuYXJyYXlEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnNsaWNlKCk7XG59O1xuYXJyYXlEaWZmLmpvaW4gPSBhcnJheURpZmYucmVtb3ZlRW1wdHkgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkFycmF5cyhvbGRBcnIsIG5ld0FyciwgY2FsbGJhY2spIHsgcmV0dXJuIGFycmF5RGlmZi5kaWZmKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjayk7IH1cbiJdfQ==
3211  
3212  
3213  /***/ }),
3214  /* 10 */
3215  /***/ (function(module, exports, __webpack_require__) {
3216  
3217      /*istanbul ignore start*/'use strict';
3218  
3219      exports.__esModule = true;
3220      exports. /*istanbul ignore end*/applyPatch = applyPatch;
3221      /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = applyPatches;
3222  
3223      var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/;
3224  
3225      var /*istanbul ignore start*/_distanceIterator = __webpack_require__(12) /*istanbul ignore end*/;
3226  
3227      /*istanbul ignore start*/var _distanceIterator2 = _interopRequireDefault(_distanceIterator);
3228  
3229  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3230  
3231      /*istanbul ignore end*/function applyPatch(source, uniDiff) {
3232        /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
3233  
3234        if (typeof uniDiff === 'string') {
3235          uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);
3236        }
3237  
3238        if (Array.isArray(uniDiff)) {
3239          if (uniDiff.length > 1) {
3240            throw new Error('applyPatch only works with a single input.');
3241          }
3242  
3243          uniDiff = uniDiff[0];
3244        }
3245  
3246        // Apply the diff to the input
3247        var lines = source.split(/\r\n|[\n\v\f\r\x85]/),
3248            delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [],
3249            hunks = uniDiff.hunks,
3250            compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) /*istanbul ignore start*/{
3251          return (/*istanbul ignore end*/line === patchContent
3252          );
3253        },
3254            errorCount = 0,
3255            fuzzFactor = options.fuzzFactor || 0,
3256            minLine = 0,
3257            offset = 0,
3258            removeEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,
3259            addEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
3260  
3261        /**
3262         * Checks if the hunk exactly fits on the provided location
3263         */
3264  	  function hunkFits(hunk, toPos) {
3265          for (var j = 0; j < hunk.lines.length; j++) {
3266            var line = hunk.lines[j],
3267                operation = line.length > 0 ? line[0] : ' ',
3268                content = line.length > 0 ? line.substr(1) : line;
3269  
3270            if (operation === ' ' || operation === '-') {
3271              // Context sanity check
3272              if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
3273                errorCount++;
3274  
3275                if (errorCount > fuzzFactor) {
3276                  return false;
3277                }
3278              }
3279              toPos++;
3280            }
3281          }
3282  
3283          return true;
3284        }
3285  
3286        // Search best fit offsets for each hunk based on the previous ones
3287        for (var i = 0; i < hunks.length; i++) {
3288          var hunk = hunks[i],
3289              maxLine = lines.length - hunk.oldLines,
3290              localOffset = 0,
3291              toPos = offset + hunk.oldStart - 1;
3292  
3293          var iterator = /*istanbul ignore start*/(0, _distanceIterator2['default']) /*istanbul ignore end*/(toPos, minLine, maxLine);
3294  
3295          for (; localOffset !== undefined; localOffset = iterator()) {
3296            if (hunkFits(hunk, toPos + localOffset)) {
3297              hunk.offset = offset += localOffset;
3298              break;
3299            }
3300          }
3301  
3302          if (localOffset === undefined) {
3303            return false;
3304          }
3305  
3306          // Set lower text limit to end of the current hunk, so next ones don't try
3307          // to fit over already patched text
3308          minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
3309        }
3310  
3311        // Apply patch hunks
3312        var diffOffset = 0;
3313        for (var _i = 0; _i < hunks.length; _i++) {
3314          var _hunk = hunks[_i],
3315              _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
3316          diffOffset += _hunk.newLines - _hunk.oldLines;
3317  
3318          if (_toPos < 0) {
3319            // Creating a new file
3320            _toPos = 0;
3321          }
3322  
3323          for (var j = 0; j < _hunk.lines.length; j++) {
3324            var line = _hunk.lines[j],
3325                operation = line.length > 0 ? line[0] : ' ',
3326                content = line.length > 0 ? line.substr(1) : line,
3327                delimiter = _hunk.linedelimiters[j];
3328  
3329            if (operation === ' ') {
3330              _toPos++;
3331            } else if (operation === '-') {
3332              lines.splice(_toPos, 1);
3333              delimiters.splice(_toPos, 1);
3334              /* istanbul ignore else */
3335            } else if (operation === '+') {
3336              lines.splice(_toPos, 0, content);
3337              delimiters.splice(_toPos, 0, delimiter);
3338              _toPos++;
3339            } else if (operation === '\\') {
3340              var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
3341              if (previousOperation === '+') {
3342                removeEOFNL = true;
3343              } else if (previousOperation === '-') {
3344                addEOFNL = true;
3345              }
3346            }
3347          }
3348        }
3349  
3350        // Handle EOFNL insertion/removal
3351        if (removeEOFNL) {
3352          while (!lines[lines.length - 1]) {
3353            lines.pop();
3354            delimiters.pop();
3355          }
3356        } else if (addEOFNL) {
3357          lines.push('');
3358          delimiters.push('\n');
3359        }
3360        for (var _k = 0; _k < lines.length - 1; _k++) {
3361          lines[_k] = lines[_k] + delimiters[_k];
3362        }
3363        return lines.join('');
3364      }
3365  
3366      // Wrapper that supports multiple file patches via callbacks.
3367  	function applyPatches(uniDiff, options) {
3368        if (typeof uniDiff === 'string') {
3369          uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);
3370        }
3371  
3372        var currentIndex = 0;
3373  	  function processIndex() {
3374          var index = uniDiff[currentIndex++];
3375          if (!index) {
3376            return options.complete();
3377          }
3378  
3379          options.loadFile(index, function (err, data) {
3380            if (err) {
3381              return options.complete(err);
3382            }
3383  
3384            var updatedContent = applyPatch(data, index, options);
3385            options.patched(index, updatedContent, function (err) {
3386              if (err) {
3387                return options.complete(err);
3388              }
3389  
3390              processIndex();
3391            });
3392          });
3393        }
3394        processIndex();
3395      }
3396      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwiYXBwbHlQYXRjaGVzIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJFcnJvciIsImxpbmVzIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJodW5rcyIsImNvbXBhcmVMaW5lIiwibGluZU51bWJlciIsImxpbmUiLCJvcGVyYXRpb24iLCJwYXRjaENvbnRlbnQiLCJlcnJvckNvdW50IiwiZnV6ekZhY3RvciIsIm1pbkxpbmUiLCJvZmZzZXQiLCJyZW1vdmVFT0ZOTCIsImFkZEVPRk5MIiwiaHVua0ZpdHMiLCJodW5rIiwidG9Qb3MiLCJqIiwiY29udGVudCIsInN1YnN0ciIsImkiLCJtYXhMaW5lIiwib2xkTGluZXMiLCJsb2NhbE9mZnNldCIsIm9sZFN0YXJ0IiwiaXRlcmF0b3IiLCJ1bmRlZmluZWQiLCJkaWZmT2Zmc2V0IiwibmV3TGluZXMiLCJkZWxpbWl0ZXIiLCJsaW5lZGVsaW1pdGVycyIsInNwbGljZSIsInByZXZpb3VzT3BlcmF0aW9uIiwicG9wIiwicHVzaCIsIl9rIiwiam9pbiIsImN1cnJlbnRJbmRleCIsInByb2Nlc3NJbmRleCIsImluZGV4IiwiY29tcGxldGUiLCJsb2FkRmlsZSIsImVyciIsImRhdGEiLCJ1cGRhdGVkQ29udGVudCIsInBhdGNoZWQiXSwibWFwcGluZ3MiOiI7OztnQ0FHZ0JBLFUsR0FBQUEsVTt5REFvSUFDLFksR0FBQUEsWTs7QUF2SWhCOztBQUNBOzs7Ozs7dUJBRU8sU0FBU0QsVUFBVCxDQUFvQkUsTUFBcEIsRUFBNEJDLE9BQTVCLEVBQW1EO0FBQUEsc0RBQWRDLE9BQWMsdUVBQUosRUFBSTs7QUFDeEQsTUFBSSxPQUFPRCxPQUFQLEtBQW1CLFFBQXZCLEVBQWlDO0FBQy9CQSxjQUFVLHdFQUFXQSxPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJRSxNQUFNQyxP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QUFZO0FBQ1YsYUFBTzlDLFFBQVErQyxRQUFSLEVBQVA7QUFDRDs7QUFFRC9DLFlBQVFnRCxRQUFSLENBQWlCRixLQUFqQixFQUF3QixVQUFTRyxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDMUMsVUFBSUQsR0FBSixFQUFTO0FBQ1AsZUFBT2pELFFBQVErQyxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRUQsVUFBSUUsaUJBQWlCdkQsV0FBV3NELElBQVgsRUFBaUJKLEtBQWpCLEVBQXdCOUMsT0FBeEIsQ0FBckI7QUFDQUEsY0FBUW9ELE9BQVIsQ0FBZ0JOLEtBQWhCLEVBQXVCSyxjQUF2QixFQUF1QyxVQUFTRixHQUFULEVBQWM7QUFDbkQsWUFBSUEsR0FBSixFQUFTO0FBQ1AsaUJBQU9qRCxRQUFRK0MsUUFBUixDQUFpQkUsR0FBakIsQ0FBUDtBQUNEOztBQUVESjtBQUNELE9BTkQ7QUFPRCxLQWJEO0FBY0Q7QUFDREE7QUFDRCIsImZpbGUiOiJhcHBseS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgZGlzdGFuY2VJdGVyYXRvciBmcm9tICcuLi91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2goc291cmNlLCB1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9XG5cbiAgLy8gQXBwbHkgdGhlIGRpZmYgdG8gdGhlIGlucHV0XG4gIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vKSxcbiAgICAgIGRlbGltaXRlcnMgPSBzb3VyY2UubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgLy8gQ29udGV4dCBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFjb21wYXJlTGluZSh0b1BvcyArIDEsIGxpbmVzW3RvUG9zXSwgb3BlcmF0aW9uLCBjb250ZW50KSkge1xuICAgICAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgICAgIGlmIChlcnJvckNvdW50ID4gZnV6ekZhY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0b1BvcysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gU2VhcmNoIGJlc3QgZml0IG9mZnNldHMgZm9yIGVhY2ggaHVuayBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMsXG4gICAgICAgIGxvY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgdG9Qb3MgPSBvZmZzZXQgKyBodW5rLm9sZFN0YXJ0IC0gMTtcblxuICAgIGxldCBpdGVyYXRvciA9IGRpc3RhbmNlSXRlcmF0b3IodG9Qb3MsIG1pbkxpbmUsIG1heExpbmUpO1xuXG4gICAgZm9yICg7IGxvY2FsT2Zmc2V0ICE9PSB1bmRlZmluZWQ7IGxvY2FsT2Zmc2V0ID0gaXRlcmF0b3IoKSkge1xuICAgICAgaWYgKGh1bmtGaXRzKGh1bmssIHRvUG9zICsgbG9jYWxPZmZzZXQpKSB7XG4gICAgICAgIGh1bmsub2Zmc2V0ID0gb2Zmc2V0ICs9IGxvY2FsT2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBsb3dlciB0ZXh0IGxpbWl0IHRvIGVuZCBvZiB0aGUgY3VycmVudCBodW5rLCBzbyBuZXh0IG9uZXMgZG9uJ3QgdHJ5XG4gICAgLy8gdG8gZml0IG92ZXIgYWxyZWFkeSBwYXRjaGVkIHRleHRcbiAgICBtaW5MaW5lID0gaHVuay5vZmZzZXQgKyBodW5rLm9sZFN0YXJ0ICsgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIC8vIEFwcGx5IHBhdGNoIGh1bmtzXG4gIGxldCBkaWZmT2Zmc2V0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIHRvUG9zID0gaHVuay5vbGRTdGFydCArIGh1bmsub2Zmc2V0ICsgZGlmZk9mZnNldCAtIDE7XG4gICAgZGlmZk9mZnNldCArPSBodW5rLm5ld0xpbmVzIC0gaHVuay5vbGRMaW5lcztcblxuICAgIGlmICh0b1BvcyA8IDApIHsgLy8gQ3JlYXRpbmcgYSBuZXcgZmlsZVxuICAgICAgdG9Qb3MgPSAwO1xuICAgIH1cblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaHVuay5saW5lcy5sZW5ndGg7IGorKykge1xuICAgICAgbGV0IGxpbmUgPSBodW5rLmxpbmVzW2pdLFxuICAgICAgICAgIG9wZXJhdGlvbiA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnKSxcbiAgICAgICAgICBjb250ZW50ID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmUuc3Vic3RyKDEpIDogbGluZSksXG4gICAgICAgICAgZGVsaW1pdGVyID0gaHVuay5saW5lZGVsaW1pdGVyc1tqXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19
3397  
3398  
3399  /***/ }),
3400  /* 11 */
3401  /***/ (function(module, exports) {
3402  
3403      /*istanbul ignore start*/'use strict';
3404  
3405      exports.__esModule = true;
3406      exports. /*istanbul ignore end*/parsePatch = parsePatch;
3407  	function parsePatch(uniDiff) {
3408        /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3409  
3410        var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/),
3411            delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [],
3412            list = [],
3413            i = 0;
3414  
3415  	  function parseIndex() {
3416          var index = {};
3417          list.push(index);
3418  
3419          // Parse diff metadata
3420          while (i < diffstr.length) {
3421            var line = diffstr[i];
3422  
3423            // File header found, end parsing diff metadata
3424            if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
3425              break;
3426            }
3427  
3428            // Diff index
3429            var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
3430            if (header) {
3431              index.index = header[1];
3432            }
3433  
3434            i++;
3435          }
3436  
3437          // Parse file headers if they are defined. Unified diff requires them, but
3438          // there's no technical issues to have an isolated hunk without file header
3439          parseFileHeader(index);
3440          parseFileHeader(index);
3441  
3442          // Parse hunks
3443          index.hunks = [];
3444  
3445          while (i < diffstr.length) {
3446            var _line = diffstr[i];
3447  
3448            if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
3449              break;
3450            } else if (/^@@/.test(_line)) {
3451              index.hunks.push(parseHunk());
3452            } else if (_line && options.strict) {
3453              // Ignore unexpected content unless in strict mode
3454              throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
3455            } else {
3456              i++;
3457            }
3458          }
3459        }
3460  
3461        // Parses the --- and +++ headers, if none are found, no lines
3462        // are consumed.
3463  	  function parseFileHeader(index) {
3464          var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
3465          if (fileHeader) {
3466            var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
3467            var data = fileHeader[2].split('\t', 2);
3468            var fileName = data[0].replace(/\\\\/g, '\\');
3469            if (/^".*"$/.test(fileName)) {
3470              fileName = fileName.substr(1, fileName.length - 2);
3471            }
3472            index[keyPrefix + 'FileName'] = fileName;
3473            index[keyPrefix + 'Header'] = (data[1] || '').trim();
3474  
3475            i++;
3476          }
3477        }
3478  
3479        // Parses a hunk
3480        // This assumes that we are at the start of a hunk.
3481  	  function parseHunk() {
3482          var chunkHeaderIndex = i,
3483              chunkHeaderLine = diffstr[i++],
3484              chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
3485  
3486          var hunk = {
3487            oldStart: +chunkHeader[1],
3488            oldLines: +chunkHeader[2] || 1,
3489            newStart: +chunkHeader[3],
3490            newLines: +chunkHeader[4] || 1,
3491            lines: [],
3492            linedelimiters: []
3493          };
3494  
3495          var addCount = 0,
3496              removeCount = 0;
3497          for (; i < diffstr.length; i++) {
3498            // Lines starting with '---' could be mistaken for the "remove line" operation
3499            // But they could be the header for the next file. Therefore prune such cases out.
3500            if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {
3501              break;
3502            }
3503            var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];
3504  
3505            if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
3506              hunk.lines.push(diffstr[i]);
3507              hunk.linedelimiters.push(delimiters[i] || '\n');
3508  
3509              if (operation === '+') {
3510                addCount++;
3511              } else if (operation === '-') {
3512                removeCount++;
3513              } else if (operation === ' ') {
3514                addCount++;
3515                removeCount++;
3516              }
3517            } else {
3518              break;
3519            }
3520          }
3521  
3522          // Handle the empty block count case
3523          if (!addCount && hunk.newLines === 1) {
3524            hunk.newLines = 0;
3525          }
3526          if (!removeCount && hunk.oldLines === 1) {
3527            hunk.oldLines = 0;
3528          }
3529  
3530          // Perform optional sanity checking
3531          if (options.strict) {
3532            if (addCount !== hunk.newLines) {
3533              throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
3534            }
3535            if (removeCount !== hunk.oldLines) {
3536              throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
3537            }
3538          }
3539  
3540          return hunk;
3541        }
3542  
3543        while (i < diffstr.length) {
3544          parseIndex();
3545        }
3546  
3547        return list;
3548      }
3549      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7O2dDQUFnQkEsVSxHQUFBQSxVO0FBQVQsU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQSxzREFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUNoRCxNQUFJQyxVQUFVRixRQUFRRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLGFBQWFKLFFBQVFLLEtBQVIsQ0FBYyxzQkFBZCxLQUF5QyxFQUQxRDtBQUFBLE1BRUlDLE9BQU8sRUFGWDtBQUFBLE1BR0lDLElBQUksQ0FIUjs7QUFLQSxXQUFTQyxVQUFULEdBQXNCO0FBQ3BCLFFBQUlDLFFBQVEsRUFBWjtBQUNBSCxTQUFLSSxJQUFMLENBQVVELEtBQVY7O0FBRUE7QUFDQSxXQUFPRixJQUFJTCxRQUFRUyxNQUFuQixFQUEyQjtBQUN6QixVQUFJQyxPQUFPVixRQUFR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QW9CO0FBQ2xCLFVBQUlxQixhQUFhUCxLQUFLSSxRQUF0QixFQUFnQztBQUM5QixjQUFNLElBQUlqQixLQUFKLENBQVUsc0RBQXNEVSxtQkFBbUIsQ0FBekUsQ0FBVixDQUFOO0FBQ0Q7QUFDRCxVQUFJVyxnQkFBZ0JSLEtBQUtFLFFBQXpCLEVBQW1DO0FBQ2pDLGNBQU0sSUFBSWYsS0FBSixDQUFVLHdEQUF3RFUsbUJBQW1CLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixJQUFJTCxRQUFRUyxNQUFuQixFQUEyQjtBQUN6Qkg7QUFDRDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgvXihcXC1cXC1cXC18XFwrXFwrXFwrfEBAKVxccy8udGVzdChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gRGlmZiBpbmRleFxuICAgICAgbGV0IGhlYWRlciA9ICgvXig/OkluZGV4OnxkaWZmKD86IC1yIFxcdyspKylcXHMrKC4rPylcXHMqJC8pLmV4ZWMobGluZSk7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGluZGV4LmluZGV4ID0gaGVhZGVyWzFdO1xuICAgICAgfVxuXG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgZmlsZSBoZWFkZXJzIGlmIHRoZXkgYXJlIGRlZmluZWQuIFVuaWZpZWQgZGlmZiByZXF1aXJlcyB0aGVtLCBidXRcbiAgICAvLyB0aGVyZSdzIG5vIHRlY2huaWNhbCBpc3N1ZXMgdG8gaGF2ZSBhbiBpc29sYXRlZCBodW5rIHdpdGhvdXQgZmlsZSBoZWFkZXJcbiAgICBwYXJzZUZpbGVIZWFkZXIoaW5kZXgpO1xuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG5cbiAgICAvLyBQYXJzZSBodW5rc1xuICAgIGluZGV4Lmh1bmtzID0gW107XG5cbiAgICB3aGlsZSAoaSA8IGRpZmZzdHIubGVuZ3RoKSB7XG4gICAgICBsZXQgbGluZSA9IGRpZmZzdHJbaV07XG5cbiAgICAgIGlmICgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8udGVzdChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAoL15AQC8udGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKC9eXCIuKlwiJC8udGVzdChmaWxlTmFtZSkpIHtcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5zdWJzdHIoMSwgZmlsZU5hbWUubGVuZ3RoIC0gMik7XG4gICAgICB9XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnRmlsZU5hbWUnXSA9IGZpbGVOYW1lO1xuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0hlYWRlciddID0gKGRhdGFbMV0gfHwgJycpLnRyaW0oKTtcblxuICAgICAgaSsrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlcyBhIGh1bmtcbiAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIGh1bmsuXG4gIGZ1bmN0aW9uIHBhcnNlSHVuaygpIHtcbiAgICBsZXQgY2h1bmtIZWFkZXJJbmRleCA9IGksXG4gICAgICAgIGNodW5rSGVhZGVyTGluZSA9IGRpZmZzdHJbaSsrXSxcbiAgICAgICAgY2h1bmtIZWFkZXIgPSBjaHVua0hlYWRlckxpbmUuc3BsaXQoL0BAIC0oXFxkKykoPzosKFxcZCspKT8gXFwrKFxcZCspKD86LChcXGQrKSk/IEBALyk7XG5cbiAgICBsZXQgaHVuayA9IHtcbiAgICAgIG9sZFN0YXJ0OiArY2h1bmtIZWFkZXJbMV0sXG4gICAgICBvbGRMaW5lczogK2NodW5rSGVhZGVyWzJdIHx8IDEsXG4gICAgICBuZXdTdGFydDogK2NodW5rSGVhZGVyWzNdLFxuICAgICAgbmV3TGluZXM6ICtjaHVua0hlYWRlcls0XSB8fCAxLFxuICAgICAgbGluZXM6IFtdLFxuICAgICAgbGluZWRlbGltaXRlcnM6IFtdXG4gICAgfTtcblxuICAgIGxldCBhZGRDb3VudCA9IDAsXG4gICAgICAgIHJlbW92ZUNvdW50ID0gMDtcbiAgICBmb3IgKDsgaSA8IGRpZmZzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggJy0tLScgY291bGQgYmUgbWlzdGFrZW4gZm9yIHRoZSBcInJlbW92ZSBsaW5lXCIgb3BlcmF0aW9uXG4gICAgICAvLyBCdXQgdGhleSBjb3VsZCBiZSB0aGUgaGVhZGVyIGZvciB0aGUgbmV4dCBmaWxlLiBUaGVyZWZvcmUgcHJ1bmUgc3VjaCBjYXNlcyBvdXQuXG4gICAgICBpZiAoZGlmZnN0cltpXS5pbmRleE9mKCctLS0gJykgPT09IDBcbiAgICAgICAgICAgICYmIChpICsgMiA8IGRpZmZzdHIubGVuZ3RoKVxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMV0uaW5kZXhPZignKysrICcpID09PSAwXG4gICAgICAgICAgICAmJiBkaWZmc3RyW2kgKyAyXS5pbmRleE9mKCdAQCcpID09PSAwKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBsZXQgb3BlcmF0aW9uID0gKGRpZmZzdHJbaV0ubGVuZ3RoID09IDAgJiYgaSAhPSAoZGlmZnN0ci5sZW5ndGggLSAxKSkgPyAnICcgOiBkaWZmc3RyW2ldWzBdO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnKycgfHwgb3BlcmF0aW9uID09PSAnLScgfHwgb3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnXFxcXCcpIHtcbiAgICAgICAgaHVuay5saW5lcy5wdXNoKGRpZmZzdHJbaV0pO1xuICAgICAgICBodW5rLmxpbmVkZWxpbWl0ZXJzLnB1c2goZGVsaW1pdGVyc1tpXSB8fCAnXFxuJyk7XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnICcpIHtcbiAgICAgICAgICBhZGRDb3VudCsrO1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgZW1wdHkgYmxvY2sgY291bnQgY2FzZVxuICAgIGlmICghYWRkQ291bnQgJiYgaHVuay5uZXdMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5uZXdMaW5lcyA9IDA7XG4gICAgfVxuICAgIGlmICghcmVtb3ZlQ291bnQgJiYgaHVuay5vbGRMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5vbGRMaW5lcyA9IDA7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybSBvcHRpb25hbCBzYW5pdHkgY2hlY2tpbmdcbiAgICBpZiAob3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgIGlmIChhZGRDb3VudCAhPT0gaHVuay5uZXdMaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FkZGVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZW1vdmVDb3VudCAhPT0gaHVuay5vbGRMaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbW92ZWQgbGluZSBjb3VudCBkaWQgbm90IG1hdGNoIGZvciBodW5rIGF0IGxpbmUgJyArIChjaHVua0hlYWRlckluZGV4ICsgMSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBodW5rO1xuICB9XG5cbiAgd2hpbGUgKGkgPCBkaWZmc3RyLmxlbmd0aCkge1xuICAgIHBhcnNlSW5kZXgoKTtcbiAgfVxuXG4gIHJldHVybiBsaXN0O1xufVxuIl19
3550  
3551  
3552  /***/ }),
3553  /* 12 */
3554  /***/ (function(module, exports) {
3555  
3556      /*istanbul ignore start*/"use strict";
3557  
3558      exports.__esModule = true;
3559  
3560      exports["default"] = /*istanbul ignore end*/function (start, minLine, maxLine) {
3561        var wantForward = true,
3562            backwardExhausted = false,
3563            forwardExhausted = false,
3564            localOffset = 1;
3565  
3566        return function iterator() {
3567          if (wantForward && !forwardExhausted) {
3568            if (backwardExhausted) {
3569              localOffset++;
3570            } else {
3571              wantForward = false;
3572            }
3573  
3574            // Check if trying to fit beyond text length, and if not, check it fits
3575            // after offset location (or desired location on first iteration)
3576            if (start + localOffset <= maxLine) {
3577              return localOffset;
3578            }
3579  
3580            forwardExhausted = true;
3581          }
3582  
3583          if (!backwardExhausted) {
3584            if (!forwardExhausted) {
3585              wantForward = true;
3586            }
3587  
3588            // Check if trying to fit before text beginning, and if not, check it fits
3589            // before offset location
3590            if (minLine <= start - localOffset) {
3591              return -localOffset++;
3592            }
3593  
3594            backwardExhausted = true;
3595            return iterator();
3596          }
3597  
3598          // We tried to fit hunk before text beginning and beyond text length, then
3599          // hunk can't fit on the text. Return undefined
3600        };
3601      };
3602      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7NENBR2UsVUFBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLGNBQWMsSUFBbEI7QUFBQSxNQUNJQyxvQkFBb0IsS0FEeEI7QUFBQSxNQUVJQyxtQkFBbUIsS0FGdkI7QUFBQSxNQUdJQyxjQUFjLENBSGxCOztBQUtBLFNBQU8sU0FBU0MsUUFBVCxHQUFvQjtBQUN6QixRQUFJSixlQUFlLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkU7QUFDRCxPQUZELE1BRU87QUFDTEgsc0JBQWMsS0FBZDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxVQUFJSCxRQUFRTSxXQUFSLElBQXVCSixPQUEzQixFQUFvQztBQUNsQyxlQUFPSSxXQUFQO0FBQ0Q7O0FBRURELHlCQUFtQixJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsc0JBQWMsSUFBZDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxVQUFJRixXQUFXRCxRQUFRTSxXQUF2QixFQUFvQztBQUNsQyxlQUFPLENBQUNBLGFBQVI7QUFDRDs7QUFFREYsMEJBQW9CLElBQXBCO0FBQ0EsYUFBT0csVUFBUDtBQUNEOztBQUVEO0FBQ0E7QUFDRCxHQWxDRDtBQW1DRCxDIiwiZmlsZSI6ImRpc3RhbmNlLWl0ZXJhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0=
3603  
3604  
3605  /***/ }),
3606  /* 13 */
3607  /***/ (function(module, exports, __webpack_require__) {
3608  
3609      /*istanbul ignore start*/'use strict';
3610  
3611      exports.__esModule = true;
3612      exports. /*istanbul ignore end*/calcLineCount = calcLineCount;
3613      /*istanbul ignore start*/exports. /*istanbul ignore end*/merge = merge;
3614  
3615      var /*istanbul ignore start*/_create = __webpack_require__(14) /*istanbul ignore end*/;
3616  
3617      var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/;
3618  
3619      var /*istanbul ignore start*/_array = __webpack_require__(15) /*istanbul ignore end*/;
3620  
3621      /*istanbul ignore start*/function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
3622  
3623      /*istanbul ignore end*/function calcLineCount(hunk) {
3624        /*istanbul ignore start*/var _calcOldNewLineCount = /*istanbul ignore end*/calcOldNewLineCount(hunk.lines),
3625            oldLines = _calcOldNewLineCount.oldLines,
3626            newLines = _calcOldNewLineCount.newLines;
3627  
3628        if (oldLines !== undefined) {
3629          hunk.oldLines = oldLines;
3630        } else {
3631          delete hunk.oldLines;
3632        }
3633  
3634        if (newLines !== undefined) {
3635          hunk.newLines = newLines;
3636        } else {
3637          delete hunk.newLines;
3638        }
3639      }
3640  
3641  	function merge(mine, theirs, base) {
3642        mine = loadPatch(mine, base);
3643        theirs = loadPatch(theirs, base);
3644  
3645        var ret = {};
3646  
3647        // For index we just let it pass through as it doesn't have any necessary meaning.
3648        // Leaving sanity checks on this to the API consumer that may know more about the
3649        // meaning in their own context.
3650        if (mine.index || theirs.index) {
3651          ret.index = mine.index || theirs.index;
3652        }
3653  
3654        if (mine.newFileName || theirs.newFileName) {
3655          if (!fileNameChanged(mine)) {
3656            // No header or no change in ours, use theirs (and ours if theirs does not exist)
3657            ret.oldFileName = theirs.oldFileName || mine.oldFileName;
3658            ret.newFileName = theirs.newFileName || mine.newFileName;
3659            ret.oldHeader = theirs.oldHeader || mine.oldHeader;
3660            ret.newHeader = theirs.newHeader || mine.newHeader;
3661          } else if (!fileNameChanged(theirs)) {
3662            // No header or no change in theirs, use ours
3663            ret.oldFileName = mine.oldFileName;
3664            ret.newFileName = mine.newFileName;
3665            ret.oldHeader = mine.oldHeader;
3666            ret.newHeader = mine.newHeader;
3667          } else {
3668            // Both changed... figure it out
3669            ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
3670            ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
3671            ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
3672            ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
3673          }
3674        }
3675  
3676        ret.hunks = [];
3677  
3678        var mineIndex = 0,
3679            theirsIndex = 0,
3680            mineOffset = 0,
3681            theirsOffset = 0;
3682  
3683        while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
3684          var mineCurrent = mine.hunks[mineIndex] || { oldStart: Infinity },
3685              theirsCurrent = theirs.hunks[theirsIndex] || { oldStart: Infinity };
3686  
3687          if (hunkBefore(mineCurrent, theirsCurrent)) {
3688            // This patch does not overlap with any of the others, yay.
3689            ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
3690            mineIndex++;
3691            theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
3692          } else if (hunkBefore(theirsCurrent, mineCurrent)) {
3693            // This patch does not overlap with any of the others, yay.
3694            ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
3695            theirsIndex++;
3696            mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
3697          } else {
3698            // Overlap, merge as best we can
3699            var mergedHunk = {
3700              oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
3701              oldLines: 0,
3702              newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
3703              newLines: 0,
3704              lines: []
3705            };
3706            mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
3707            theirsIndex++;
3708            mineIndex++;
3709  
3710            ret.hunks.push(mergedHunk);
3711          }
3712        }
3713  
3714        return ret;
3715      }
3716  
3717  	function loadPatch(param, base) {
3718        if (typeof param === 'string') {
3719          if (/^@@/m.test(param) || /^Index:/m.test(param)) {
3720            return (/*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(param)[0]
3721            );
3722          }
3723  
3724          if (!base) {
3725            throw new Error('Must provide a base reference or pass in a patch');
3726          }
3727          return (/*istanbul ignore start*/(0, _create.structuredPatch) /*istanbul ignore end*/(undefined, undefined, base, param)
3728          );
3729        }
3730  
3731        return param;
3732      }
3733  
3734  	function fileNameChanged(patch) {
3735        return patch.newFileName && patch.newFileName !== patch.oldFileName;
3736      }
3737  
3738  	function selectField(index, mine, theirs) {
3739        if (mine === theirs) {
3740          return mine;
3741        } else {
3742          index.conflict = true;
3743          return { mine: mine, theirs: theirs };
3744        }
3745      }
3746  
3747  	function hunkBefore(test, check) {
3748        return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
3749      }
3750  
3751  	function cloneHunk(hunk, offset) {
3752        return {
3753          oldStart: hunk.oldStart, oldLines: hunk.oldLines,
3754          newStart: hunk.newStart + offset, newLines: hunk.newLines,
3755          lines: hunk.lines
3756        };
3757      }
3758  
3759  	function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
3760        // This will generally result in a conflicted hunk, but there are cases where the context
3761        // is the only overlap where we can successfully merge the content here.
3762        var mine = { offset: mineOffset, lines: mineLines, index: 0 },
3763            their = { offset: theirOffset, lines: theirLines, index: 0 };
3764  
3765        // Handle any leading content
3766        insertLeading(hunk, mine, their);
3767        insertLeading(hunk, their, mine);
3768  
3769        // Now in the overlap content. Scan through and select the best changes from each.
3770        while (mine.index < mine.lines.length && their.index < their.lines.length) {
3771          var mineCurrent = mine.lines[mine.index],
3772              theirCurrent = their.lines[their.index];
3773  
3774          if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
3775            // Both modified ...
3776            mutualChange(hunk, mine, their);
3777          } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
3778            /*istanbul ignore start*/var _hunk$lines;
3779  
3780            /*istanbul ignore end*/ // Mine inserted
3781            /*istanbul ignore start*/(_hunk$lines = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/collectChange(mine)));
3782          } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
3783            /*istanbul ignore start*/var _hunk$lines2;
3784  
3785            /*istanbul ignore end*/ // Theirs inserted
3786            /*istanbul ignore start*/(_hunk$lines2 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/collectChange(their)));
3787          } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
3788            // Mine removed or edited
3789            removal(hunk, mine, their);
3790          } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
3791            // Their removed or edited
3792            removal(hunk, their, mine, true);
3793          } else if (mineCurrent === theirCurrent) {
3794            // Context identity
3795            hunk.lines.push(mineCurrent);
3796            mine.index++;
3797            their.index++;
3798          } else {
3799            // Context mismatch
3800            conflict(hunk, collectChange(mine), collectChange(their));
3801          }
3802        }
3803  
3804        // Now push anything that may be remaining
3805        insertTrailing(hunk, mine);
3806        insertTrailing(hunk, their);
3807  
3808        calcLineCount(hunk);
3809      }
3810  
3811  	function mutualChange(hunk, mine, their) {
3812        var myChanges = collectChange(mine),
3813            theirChanges = collectChange(their);
3814  
3815        if (allRemoves(myChanges) && allRemoves(theirChanges)) {
3816          // Special case for remove changes that are supersets of one another
3817          if ( /*istanbul ignore start*/(0, _array.arrayStartsWith) /*istanbul ignore end*/(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
3818            /*istanbul ignore start*/var _hunk$lines3;
3819  
3820            /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines3 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/myChanges));
3821            return;
3822          } else if ( /*istanbul ignore start*/(0, _array.arrayStartsWith) /*istanbul ignore end*/(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
3823            /*istanbul ignore start*/var _hunk$lines4;
3824  
3825            /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines4 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines4 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/theirChanges));
3826            return;
3827          }
3828        } else if ( /*istanbul ignore start*/(0, _array.arrayEqual) /*istanbul ignore end*/(myChanges, theirChanges)) {
3829          /*istanbul ignore start*/var _hunk$lines5;
3830  
3831          /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines5 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines5 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/myChanges));
3832          return;
3833        }
3834  
3835        conflict(hunk, myChanges, theirChanges);
3836      }
3837  
3838  	function removal(hunk, mine, their, swap) {
3839        var myChanges = collectChange(mine),
3840            theirChanges = collectContext(their, myChanges);
3841        if (theirChanges.merged) {
3842          /*istanbul ignore start*/var _hunk$lines6;
3843  
3844          /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines6 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines6 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/theirChanges.merged));
3845        } else {
3846          conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
3847        }
3848      }
3849  
3850  	function conflict(hunk, mine, their) {
3851        hunk.conflict = true;
3852        hunk.lines.push({
3853          conflict: true,
3854          mine: mine,
3855          theirs: their
3856        });
3857      }
3858  
3859  	function insertLeading(hunk, insert, their) {
3860        while (insert.offset < their.offset && insert.index < insert.lines.length) {
3861          var line = insert.lines[insert.index++];
3862          hunk.lines.push(line);
3863          insert.offset++;
3864        }
3865      }
3866  	function insertTrailing(hunk, insert) {
3867        while (insert.index < insert.lines.length) {
3868          var line = insert.lines[insert.index++];
3869          hunk.lines.push(line);
3870        }
3871      }
3872  
3873  	function collectChange(state) {
3874        var ret = [],
3875            operation = state.lines[state.index][0];
3876        while (state.index < state.lines.length) {
3877          var line = state.lines[state.index];
3878  
3879          // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
3880          if (operation === '-' && line[0] === '+') {
3881            operation = '+';
3882          }
3883  
3884          if (operation === line[0]) {
3885            ret.push(line);
3886            state.index++;
3887          } else {
3888            break;
3889          }
3890        }
3891  
3892        return ret;
3893      }
3894  	function collectContext(state, matchChanges) {
3895        var changes = [],
3896            merged = [],
3897            matchIndex = 0,
3898            contextChanges = false,
3899            conflicted = false;
3900        while (matchIndex < matchChanges.length && state.index < state.lines.length) {
3901          var change = state.lines[state.index],
3902              match = matchChanges[matchIndex];
3903  
3904          // Once we've hit our add, then we are done
3905          if (match[0] === '+') {
3906            break;
3907          }
3908  
3909          contextChanges = contextChanges || change[0] !== ' ';
3910  
3911          merged.push(match);
3912          matchIndex++;
3913  
3914          // Consume any additions in the other block as a conflict to attempt
3915          // to pull in the remaining context after this
3916          if (change[0] === '+') {
3917            conflicted = true;
3918  
3919            while (change[0] === '+') {
3920              changes.push(change);
3921              change = state.lines[++state.index];
3922            }
3923          }
3924  
3925          if (match.substr(1) === change.substr(1)) {
3926            changes.push(change);
3927            state.index++;
3928          } else {
3929            conflicted = true;
3930          }
3931        }
3932  
3933        if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
3934          conflicted = true;
3935        }
3936  
3937        if (conflicted) {
3938          return changes;
3939        }
3940  
3941        while (matchIndex < matchChanges.length) {
3942          merged.push(matchChanges[matchIndex++]);
3943        }
3944  
3945        return {
3946          merged: merged,
3947          changes: changes
3948        };
3949      }
3950  
3951  	function allRemoves(changes) {
3952        return changes.reduce(function (prev, change) {
3953          return prev && change[0] === '-';
3954        }, true);
3955      }
3956  	function skipRemoveSuperset(state, removeChanges, delta) {
3957        for (var i = 0; i < delta; i++) {
3958          var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
3959          if (state.lines[state.index + i] !== ' ' + changeContent) {
3960            return false;
3961          }
3962        }
3963  
3964        state.index += delta;
3965        return true;
3966      }
3967  
3968  	function calcOldNewLineCount(lines) {
3969        var oldLines = 0;
3970        var newLines = 0;
3971  
3972        lines.forEach(function (line) {
3973          if (typeof line !== 'string') {
3974            var myCount = calcOldNewLineCount(line.mine);
3975            var theirCount = calcOldNewLineCount(line.theirs);
3976  
3977            if (oldLines !== undefined) {
3978              if (myCount.oldLines === theirCount.oldLines) {
3979                oldLines += myCount.oldLines;
3980              } else {
3981                oldLines = undefined;
3982              }
3983            }
3984  
3985            if (newLines !== undefined) {
3986              if (myCount.newLines === theirCount.newLines) {
3987                newLines += myCount.newLines;
3988              } else {
3989                newLines = undefined;
3990              }
3991            }
3992          } else {
3993            if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
3994              newLines++;
3995            }
3996            if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
3997              oldLines++;
3998            }
3999          }
4000        });
4001  
4002        return { oldLines: oldLines, newLines: newLines };
4003      }
4004      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwibWVyZ2UiLCJodW5rIiwiY2FsY09sZE5ld0xpbmVDb3VudCIsImxpbmVzIiwib2xkTGluZXMiLCJuZXdMaW5lcyIsInVuZGVmaW5lZCIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwiRXJyb3IiLCJwYXRjaCIsImNvbmZsaWN0IiwiY2hlY2siLCJvZmZzZXQiLCJtaW5lTGluZXMiLCJ0aGVpck9mZnNldCIsInRoZWlyTGluZXMiLCJ0aGVpciIsImluc2VydExlYWRpbmciLCJ0aGVpckN1cnJlbnQiLCJtdXR1YWxDaGFuZ2UiLCJjb2xsZWN0Q2hhbmdlIiwicmVtb3ZhbCIsImluc2VydFRyYWlsaW5nIiwibXlDaGFuZ2VzIiwidGhlaXJDaGFuZ2VzIiwiYWxsUmVtb3ZlcyIsInNraXBSZW1vdmVTdXBlcnNldCIsInN3YXAiLCJjb2xsZWN0Q29udGV4dCIsIm1lcmdlZCIsImluc2VydCIsImxpbmUiLCJzdGF0ZSIsIm9wZXJhdGlvbiIsIm1hdGNoQ2hhbmdlcyIsImNoYW5nZXMiLCJtYXRjaEluZGV4IiwiY29udGV4dENoYW5nZXMiLCJjb25mbGljdGVkIiwiY2hhbmdlIiwibWF0Y2giLCJzdWJzdHIiLCJyZWR1Y2UiLCJwcmV2IiwicmVtb3ZlQ2hhbmdlcyIsImRlbHRhIiwiaSIsImNoYW5nZUNvbnRlbnQiLCJmb3JFYWNoIiwibXlDb3VudCIsInRoZWlyQ291bnQiXSwibWFwcGluZ3MiOiI7OztnQ0FLZ0JBLGEsR0FBQUEsYTt5REFnQkFDLEssR0FBQUEsSzs7QUFyQmhCOztBQUNBOztBQUVBOzs7O3VCQUVPLFNBQVNELGFBQVQsQ0FBdUJFLElBQXZCLEVBQTZCO0FBQUEsNkVBQ0xDLG9CQUFvQkQsS0FBS0UsS0FBekIsQ0FESztBQUFBLE1BQzNCQyxRQUQyQix3QkFDM0JBLFFBRDJCO0FBQUEsTUFDakJDLFFBRGlCLHdCQUNqQkEsUUFEaUI7O0FBR2xDLE1BQUlELGFBQWFFLFNBQWpCLEVBQTRCO0FBQzFCTCxTQUFLRyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9ILEtBQUtHLFFBQVo7QUFDRDs7QUFFRCxNQUFJQyxhQUFhQyxTQUFqQixFQUE0QjtBQUMxQkwsU0FBS0ksUUFBTCxHQUFnQkEsUUFBaEI7QUFDRCxHQUZELE1BRU87QUFDTCxXQUFPSixLQUFLSSxRQUFaO0FBQ0Q7QUFDRjs7QUFFTSxTQUFTTCxLQUFULENBQWVPLElBQWYsRUFBcUJDLE1BQXJCLEVBQTZCQyxJQUE3QixFQUFtQztBQUN4Q0YsU0FBT0csVUFBVUgsSUFBVixFQUFnQkUsSUFBaEIsQ0FBUDtBQUNBRCxXQUFTRSxVQUFVRixNQUFWLEVBQWtCQyxJQUFsQixDQUFUOztBQUVBLE1BQUlFLE1BQU0sRUFBVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFJSixLQUFLSyxLQUFMLElBQWNKLE9BQU9JLEtBQXpCLEVBQWdDO0FBQzlCRCxRQUFJQyxLQUFKLEdBQVlMLEtBQUtLLEtBQUwsSUFBY0osT0FBT0ksS0FBakM7QUFDRDs7QUFFRCxNQUFJTCxLQUFLTSxXQUFMLElBQW9CTCxPQUFPSyxXQUEvQixFQUE0QztBQUMxQyxRQUFJLENBQUNDLGdCQUFnQlAsSUFBaEIsQ0FBTCxF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Q0Q7QUFDRjs7QUFFRCxVQUFJRCxhQUFhQyxTQUFqQixFQUE0QjtBQUMxQixZQUFJMEUsUUFBUTNFLFFBQVIsS0FBcUI0RSxXQUFXNUUsUUFBcEMsRUFBOEM7QUFDNUNBLHNCQUFZMkUsUUFBUTNFLFFBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xBLHFCQUFXQyxTQUFYO0FBQ0Q7QUFDRjtBQUNGLEtBbkJELE1BbUJPO0FBQ0wsVUFBSUQsYUFBYUMsU0FBYixLQUEyQndELEtBQUssQ0FBTCxNQUFZLEdBQVosSUFBbUJBLEtBQUssQ0FBTCxNQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEV6RDtBQUNEO0FBQ0QsVUFBSUQsYUFBYUUsU0FBYixLQUEyQndELEtBQUssQ0FBTCxNQUFZLEdBQVosSUFBbUJBLEtBQUssQ0FBTCxNQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEUxRDtBQUNEO0FBQ0Y7QUFDRixHQTVCRDs7QUE4QkEsU0FBTyxFQUFDQSxrQkFBRCxFQUFXQyxrQkFBWCxFQUFQO0FBQ0QiLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N0cnVjdHVyZWRQYXRjaH0gZnJvbSAnLi9jcmVhdGUnO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhcnNlJztcblxuaW1wb3J0IHthcnJheUVxdWFsLCBhcnJheVN0YXJ0c1dpdGh9IGZyb20gJy4uL3V0aWwvYXJyYXknO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY0xpbmVDb3VudChodW5rKSB7XG4gIGNvbnN0IHtvbGRMaW5lcywgbmV3TGluZXN9ID0gY2FsY09sZE5ld0xpbmVDb3VudChodW5rLmxpbmVzKTtcblxuICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsub2xkTGluZXMgPSBvbGRMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaHVuay5uZXdMaW5lcyA9IG5ld0xpbmVzO1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBodW5rLm5ld0xpbmVzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShtaW5lLCB0aGVpcnMsIGJhc2UpIHtcbiAgbWluZSA9IGxvYWRQYXRjaChtaW5lLCBiYXNlKTtcbiAgdGhlaXJzID0gbG9hZFBhdGNoKHRoZWlycywgYmFzZSk7XG5cbiAgbGV0IHJldCA9IHt9O1xuXG4gIC8vIEZvciBpbmRleCB3ZSBqdXN0IGxldCBpdCBwYXNzIHRocm91Z2ggYXMgaXQgZG9lc24ndCBoYXZlIGFueSBuZWNlc3NhcnkgbWVhbmluZy5cbiAgLy8gTGVhdmluZyBzYW5pdHkgY2hlY2tzIG9uIHRoaXMgdG8gdGhlIEFQSSBjb25zdW1lciB0aGF0IG1heSBrbm93IG1vcmUgYWJvdXQgdGhlXG4gIC8vIG1lYW5pbmcgaW4gdGhlaXIgb3duIGNvbnRleHQuXG4gIGlmIChtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleCkge1xuICAgIHJldC5pbmRleCA9IG1pbmUuaW5kZXggfHwgdGhlaXJzLmluZGV4O1xuICB9XG5cbiAgaWYgKG1pbmUubmV3RmlsZU5hbWUgfHwgdGhlaXJzLm5ld0ZpbGVOYW1lKSB7XG4gICAgaWYgKCFmaWxlTmFtZUNoYW5nZWQobWluZSkpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gb3VycywgdXNlIHRoZWlycyAoYW5kIG91cnMgaWYgdGhlaXJzIGRvZXMgbm90IGV4aXN0KVxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gdGhlaXJzLm9sZEZpbGVOYW1lIHx8IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSB0aGVpcnMubmV3RmlsZU5hbWUgfHwgbWluZS5uZXdGaWxlTmFtZTtcbiAgICAgIHJldC5vbGRIZWFkZXIgPSB0aGVpcnMub2xkSGVhZGVyIHx8IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHRoZWlycy5uZXdIZWFkZXIgfHwgbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIGlmICghZmlsZU5hbWVDaGFuZ2VkKHRoZWlycykpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gdGhlaXJzLCB1c2Ugb3Vyc1xuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gbWluZS5vbGRGaWxlTmFtZTtcbiAgICAgIHJldC5uZXdGaWxlTmFtZSA9IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gbWluZS5vbGRIZWFkZXI7XG4gICAgICByZXQubmV3SGVhZGVyID0gbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJvdGggY2hhbmdlZC4uLiBmaWd1cmUgaXQgb3V0XG4gICAgICByZXQub2xkRmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUub2xkRmlsZU5hbWUsIHRoZWlycy5vbGRGaWxlTmFtZSk7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUubmV3RmlsZU5hbWUsIHRoZWlycy5uZXdGaWxlTmFtZSk7XG4gICAgICByZXQub2xkSGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEhlYWRlciwgdGhlaXJzLm9sZEhlYWRlcik7XG4gICAgICByZXQubmV3SGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0hlYWRlciwgdGhlaXJzLm5ld0hlYWRlcik7XG4gICAgfVxuICB9XG5cbiAgcmV0Lmh1bmtzID0gW107XG5cbiAgbGV0IG1pbmVJbmRleCA9IDAsXG4gICAgICB0aGVpcnNJbmRleCA9IDAsXG4gICAgICBtaW5lT2Zmc2V0ID0gMCxcbiAgICAgIHRoZWlyc09mZnNldCA9IDA7XG5cbiAgd2hpbGUgKG1pbmVJbmRleCA8IG1pbmUuaHVua3MubGVuZ3RoIHx8IHRoZWlyc0luZGV4IDwgdGhlaXJzLmh1bmtzLmxlbmd0aCkge1xuICAgIGxldCBtaW5lQ3VycmVudCA9IG1pbmUuaHVua3NbbWluZUluZGV4XSB8fCB7b2xkU3RhcnQ6IEluZmluaXR5fSxcbiAgICAgICAgdGhlaXJzQ3VycmVudCA9IHRoZWlycy5odW5rc1t0aGVpcnNJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX07XG5cbiAgICBpZiAoaHVua0JlZm9yZShtaW5lQ3VycmVudCwgdGhlaXJzQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsobWluZUN1cnJlbnQsIG1pbmVPZmZzZXQpKTtcbiAgICAgIG1pbmVJbmRleCsrO1xuICAgICAgdGhlaXJzT2Zmc2V0ICs9IG1pbmVDdXJyZW50Lm5ld0xpbmVzIC0gbWluZUN1cnJlbnQub2xkTGluZXM7XG4gICAgfSBlbHNlIGlmIChodW5rQmVmb3JlKHRoZWlyc0N1cnJlbnQsIG1pbmVDdXJyZW50KSkge1xuICAgICAgLy8gVGhpcyBwYXRjaCBkb2VzIG5vdCBvdmVybGFwIHdpdGggYW55IG9mIHRoZSBvdGhlcnMsIHlheS5cbiAgICAgIHJldC5odW5rcy5wdXNoKGNsb25lSHVuayh0aGVpcnNDdXJyZW50LCB0aGVpcnNPZmZzZXQpKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lT2Zmc2V0ICs9IHRoZWlyc0N1cnJlbnQubmV3TGluZXMgLSB0aGVpcnNDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdmVybGFwLCBtZXJnZSBhcyBiZXN0IHdlIGNhblxuICAgICAgbGV0IG1lcmdlZEh1bmsgPSB7XG4gICAgICAgIG9sZFN0YXJ0OiBNYXRoLm1pbihtaW5lQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCksXG4gICAgICAgIG9sZExpbmVzOiAwLFxuICAgICAgICBuZXdTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQubmV3U3RhcnQgKyBtaW5lT2Zmc2V0LCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0ICsgdGhlaXJzT2Zmc2V0KSxcbiAgICAgICAgbmV3TGluZXM6IDAsXG4gICAgICAgIGxpbmVzOiBbXVxuICAgICAgfTtcbiAgICAgIG1lcmdlTGluZXMobWVyZ2VkSHVuaywgbWluZUN1cnJlbnQub2xkU3RhcnQsIG1pbmVDdXJyZW50LmxpbmVzLCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0LCB0aGVpcnNDdXJyZW50LmxpbmVzKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lSW5kZXgrKztcblxuICAgICAgcmV0Lmh1bmtzLnB1c2gobWVyZ2VkSHVuayk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gbG9hZFBhdGNoKHBhcmFtLCBiYXNlKSB7XG4gIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKC9eQEAvbS50ZXN0KHBhcmFtKSB8fCAoL15JbmRleDovbS50ZXN0KHBhcmFtKSkpIHtcbiAgICAgIHJldHVybiBwYXJzZVBhdGNoKHBhcmFtKVswXTtcbiAgICB9XG5cbiAgICBpZiAoIWJhc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBwcm92aWRlIGEgYmFzZSByZWZlcmVuY2Ugb3IgcGFzcyBpbiBhIHBhdGNoJyk7XG4gICAgfVxuICAgIHJldHVybiBzdHJ1Y3R1cmVkUGF0Y2godW5kZWZpbmVkLCB1bmRlZmluZWQsIGJhc2UsIHBhcmFtKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbTtcbn1cblxuZnVuY3Rpb24gZmlsZU5hbWVDaGFuZ2VkKHBhdGNoKSB7XG4gIHJldHVybiBwYXRjaC5uZXdGaWxlTmFtZSAmJiBwYXRjaC5uZXdGaWxlTmFtZSAhPT0gcGF0Y2gub2xkRmlsZU5hbWU7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdEZpZWxkKGluZGV4LCBtaW5lLCB0aGVpcnMpIHtcbiAgaWYgKG1pbmUgPT09IHRoZWlycykge1xuICAgIHJldHVybiBtaW5lO1xuICB9IGVsc2Uge1xuICAgIGluZGV4LmNvbmZsaWN0ID0gdHJ1ZTtcbiAgICByZXR1cm4ge21pbmUsIHRoZWlyc307XG4gIH1cbn1cblxuZnVuY3Rpb24gaHVua0JlZm9yZSh0ZXN0LCBjaGVjaykge1xuICByZXR1cm4gdGVzdC5vbGRTdGFydCA8IGNoZWNrLm9sZFN0YXJ0XG4gICAgJiYgKHRlc3Qub2xkU3RhcnQgKyB0ZXN0Lm9sZExpbmVzKSA8IGNoZWNrLm9sZFN0YXJ0O1xufVxuXG5mdW5jdGlvbiBjbG9uZUh1bmsoaHVuaywgb2Zmc2V0KSB7XG4gIHJldHVybiB7XG4gICAgb2xkU3RhcnQ6IGh1bmsub2xkU3RhcnQsIG9sZExpbmVzOiBodW5rLm9sZExpbmVzLFxuICAgIG5ld1N0YXJ0OiBodW5rLm5ld1N0YXJ0ICsgb2Zmc2V0LCBuZXdMaW5lczogaHVuay5uZXdMaW5lcyxcbiAgICBsaW5lczogaHVuay5saW5lc1xuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZUxpbmVzKGh1bmssIG1pbmVPZmZzZXQsIG1pbmVMaW5lcywgdGhlaXJPZmZzZXQsIHRoZWlyTGluZXMpIHtcbiAgLy8gVGhpcyB3aWxsIGdlbmVyYWxseSByZXN1bHQgaW4gYSBjb25mbGljdGVkIGh1bmssIGJ1dCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgdGhlIGNvbnRleHRcbiAgLy8gaXMgdGhlIG9ubHkgb3ZlcmxhcCB3aGVyZSB3ZSBjYW4gc3VjY2Vzc2Z1bGx5IG1lcmdlIHRoZSBjb250ZW50IGhlcmUuXG4gIGxldCBtaW5lID0ge29mZnNldDogbWluZU9mZnNldCwgbGluZXM6IG1pbmVMaW5lcywgaW5kZXg6IDB9LFxuICAgICAgdGhlaXIgPSB7b2Zmc2V0OiB0aGVpck9mZnNldCwgbGluZXM6IHRoZWlyTGluZXMsIGluZGV4OiAwfTtcblxuICAvLyBIYW5kbGUgYW55IGxlYWRpbmcgY29udGVudFxuICBpbnNlcnRMZWFkaW5nKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgaW5zZXJ0TGVhZGluZyhodW5rLCB0aGVpciwgbWluZSk7XG5cbiAgLy8gTm93IGluIHRoZSBvdmVybGFwIGNvbnRlbnQuIFNjYW4gdGhyb3VnaCBhbmQgc2VsZWN0IHRoZSBiZXN0IGNoYW5nZXMgZnJvbSBlYWNoLlxuICB3aGlsZSAobWluZS5pbmRleCA8IG1pbmUubGluZXMubGVuZ3RoICYmIHRoZWlyLmluZGV4IDwgdGhlaXIubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IG1pbmVDdXJyZW50ID0gbWluZS5saW5lc1ttaW5lLmluZGV4XSxcbiAgICAgICAgdGhlaXJDdXJyZW50ID0gdGhlaXIubGluZXNbdGhlaXIuaW5kZXhdO1xuXG4gICAgaWYgKChtaW5lQ3VycmVudFswXSA9PT0gJy0nIHx8IG1pbmVDdXJyZW50WzBdID09PSAnKycpXG4gICAgICAgICYmICh0aGVpckN1cnJlbnRbMF0gPT09ICctJyB8fCB0aGVpckN1cnJlbnRbMF0gPT09ICcrJykpIHtcbiAgICAgIC8vIEJvdGggbW9kaWZpZWQgLi4uXG4gICAgICBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnRbMF0gPT09ICcrJyAmJiB0aGVpckN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gTWluZSBpbnNlcnRlZFxuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBjb2xsZWN0Q2hhbmdlKG1pbmUpKTtcbiAgICB9IGVsc2UgaWYgKHRoZWlyQ3VycmVudFswXSA9PT0gJysnICYmIG1pbmVDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIFRoZWlycyBpbnNlcnRlZFxuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBjb2xsZWN0Q2hhbmdlKHRoZWlyKSk7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJy0nICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIHJlbW92ZWQgb3IgZWRpdGVkXG4gICAgICByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgICB9IGVsc2UgaWYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nICYmIG1pbmVDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIFRoZWlyIHJlbW92ZWQgb3IgZWRpdGVkXG4gICAgICByZW1vdmFsKGh1bmssIHRoZWlyLCBtaW5lLCB0cnVlKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50ID09PSB0aGVpckN1cnJlbnQpIHtcbiAgICAgIC8vIENvbnRleHQgaWRlbnRpdHlcbiAgICAgIGh1bmsubGluZXMucHVzaChtaW5lQ3VycmVudCk7XG4gICAgICBtaW5lLmluZGV4Kys7XG4gICAgICB0aGVpci5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb250ZXh0IG1pc21hdGNoXG4gICAgICBjb25mbGljdChodW5rLCBjb2xsZWN0Q2hhbmdlKG1pbmUpLCBjb2xsZWN0Q2hhbmdlKHRoZWlyKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gTm93IHB1c2ggYW55dGhpbmcgdGhhdCBtYXkgYmUgcmVtYWluaW5nXG4gIGluc2VydFRyYWlsaW5nKGh1bmssIG1pbmUpO1xuICBpbnNlcnRUcmFpbGluZyhodW5rLCB0aGVpcik7XG5cbiAgY2FsY0xpbmVDb3VudChodW5rKTtcbn1cblxuZnVuY3Rpb24gbXV0dWFsQ2hhbmdlKGh1bmssIG1pbmUsIHRoZWlyKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENoYW5nZSh0aGVpcik7XG5cbiAgaWYgKGFsbFJlbW92ZXMobXlDaGFuZ2VzKSAmJiBhbGxSZW1vdmVzKHRoZWlyQ2hhbmdlcykpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHJlbW92ZSBjaGFuZ2VzIHRoYXQgYXJlIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlclxuICAgIGlmIChhcnJheVN0YXJ0c1dpdGgobXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpXG4gICAgICAgICYmIHNraXBSZW1vdmVTdXBlcnNldCh0aGVpciwgbXlDaGFuZ2VzLCBteUNoYW5nZXMubGVuZ3RoIC0gdGhlaXJDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gbXlDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGFycmF5U3RhcnRzV2l0aCh0aGVpckNoYW5nZXMsIG15Q2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KG1pbmUsIHRoZWlyQ2hhbmdlcywgdGhlaXJDaGFuZ2VzLmxlbmd0aCAtIG15Q2hhbmdlcy5sZW5ndGgpKSB7XG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIHRoZWlyQ2hhbmdlcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9IGVsc2UgaWYgKGFycmF5RXF1YWwobXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbmZsaWN0KGh1bmssIG15Q2hhbmdlcywgdGhlaXJDaGFuZ2VzKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZhbChodW5rLCBtaW5lLCB0aGVpciwgc3dhcCkge1xuICBsZXQgbXlDaGFuZ2VzID0gY29sbGVjdENoYW5nZShtaW5lKSxcbiAgICAgIHRoZWlyQ2hhbmdlcyA9IGNvbGxlY3RDb250ZXh0KHRoZWlyLCBteUNoYW5nZXMpO1xuICBpZiAodGhlaXJDaGFuZ2VzLm1lcmdlZCkge1xuICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzLm1lcmdlZCk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmxpY3QoaHVuaywgc3dhcCA/IHRoZWlyQ2hhbmdlcyA6IG15Q2hhbmdlcywgc3dhcCA/IG15Q2hhbmdlcyA6IHRoZWlyQ2hhbmdlcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uZmxpY3QoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgaHVuay5jb25mbGljdCA9IHRydWU7XG4gIGh1bmsubGluZXMucHVzaCh7XG4gICAgY29uZmxpY3Q6IHRydWUsXG4gICAgbWluZTogbWluZSxcbiAgICB0aGVpcnM6IHRoZWlyXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRMZWFkaW5nKGh1bmssIGluc2VydCwgdGhlaXIpIHtcbiAgd2hpbGUgKGluc2VydC5vZmZzZXQgPCB0aGVpci5vZmZzZXQgJiYgaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gICAgaW5zZXJ0Lm9mZnNldCsrO1xuICB9XG59XG5mdW5jdGlvbiBpbnNlcnRUcmFpbGluZyhodW5rLCBpbnNlcnQpIHtcbiAgd2hpbGUgKGluc2VydC5pbmRleCA8IGluc2VydC5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbGluZSA9IGluc2VydC5saW5lc1tpbnNlcnQuaW5kZXgrK107XG4gICAgaHVuay5saW5lcy5wdXNoKGxpbmUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RDaGFuZ2Uoc3RhdGUpIHtcbiAgbGV0IHJldCA9IFtdLFxuICAgICAgb3BlcmF0aW9uID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdWzBdO1xuICB3aGlsZSAoc3RhdGUuaW5kZXggPCBzdGF0ZS5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbGluZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XTtcblxuICAgIC8vIEdyb3VwIGFkZGl0aW9ucyB0aGF0IGFyZSBpbW1lZGlhdGVseSBhZnRlciBzdWJ0cmFjdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgb25lIFwiYXRvbWljXCIgbW9kaWZ5IGNoYW5nZS5cbiAgICBpZiAob3BlcmF0aW9uID09PSAnLScgJiYgbGluZVswXSA9PT0gJysnKSB7XG4gICAgICBvcGVyYXRpb24gPSAnKyc7XG4gICAgfVxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gbGluZVswXSkge1xuICAgICAgcmV0LnB1c2gobGluZSk7XG4gICAgICBzdGF0ZS5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gY29sbGVjdENvbnRleHQoc3RhdGUsIG1hdGNoQ2hhbmdlcykge1xuICBsZXQgY2hhbmdlcyA9IFtdLFxuICAgICAgbWVyZ2VkID0gW10sXG4gICAgICBtYXRjaEluZGV4ID0gMCxcbiAgICAgIGNvbnRleHRDaGFuZ2VzID0gZmFsc2UsXG4gICAgICBjb25mbGljdGVkID0gZmFsc2U7XG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aFxuICAgICAgICAmJiBzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBjaGFuZ2UgPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF0sXG4gICAgICAgIG1hdGNoID0gbWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdO1xuXG4gICAgLy8gT25jZSB3ZSd2ZSBoaXQgb3VyIGFkZCwgdGhlbiB3ZSBhcmUgZG9uZVxuICAgIGlmIChtYXRjaFswXSA9PT0gJysnKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb250ZXh0Q2hhbmdlcyA9IGNvbnRleHRDaGFuZ2VzIHx8IGNoYW5nZVswXSAhPT0gJyAnO1xuXG4gICAgbWVyZ2VkLnB1c2gobWF0Y2gpO1xuICAgIG1hdGNoSW5kZXgrKztcblxuICAgIC8vIENvbnN1bWUgYW55IGFkZGl0aW9ucyBpbiB0aGUgb3RoZXIgYmxvY2sgYXMgYSBjb25mbGljdCB0byBhdHRlbXB0XG4gICAgLy8gdG8gcHVsbCBpbiB0aGUgcmVtYWluaW5nIGNvbnRleHQgYWZ0ZXIgdGhpc1xuICAgIGlmIChjaGFuZ2VbMF0gPT09ICcrJykge1xuICAgICAgY29uZmxpY3RlZCA9IHRydWU7XG5cbiAgICAgIHdoaWxlIChjaGFuZ2VbMF0gPT09ICcrJykge1xuICAgICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgICAgY2hhbmdlID0gc3RhdGUubGluZXNbKytzdGF0ZS5pbmRleF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLnN1YnN0cigxKSA9PT0gY2hhbmdlLnN1YnN0cigxKSkge1xuICAgICAgY2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICBzdGF0ZS5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4XSB8fCAnJylbMF0gPT09ICcrJ1xuICAgICAgJiYgY29udGV4dENoYW5nZXMpIHtcbiAgICBjb25mbGljdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChjb25mbGljdGVkKSB7XG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cblxuICB3aGlsZSAobWF0Y2hJbmRleCA8IG1hdGNoQ2hhbmdlcy5sZW5ndGgpIHtcbiAgICBtZXJnZWQucHVzaChtYXRjaENoYW5nZXNbbWF0Y2hJbmRleCsrXSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lcmdlZCxcbiAgICBjaGFuZ2VzXG4gIH07XG59XG5cbmZ1bmN0aW9uIGFsbFJlbW92ZXMoY2hhbmdlcykge1xuICByZXR1cm4gY2hhbmdlcy5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgY2hhbmdlKSB7XG4gICAgcmV0dXJuIHByZXYgJiYgY2hhbmdlWzBdID09PSAnLSc7XG4gIH0sIHRydWUpO1xufVxuZnVuY3Rpb24gc2tpcFJlbW92ZVN1cGVyc2V0KHN0YXRlLCByZW1vdmVDaGFuZ2VzLCBkZWx0YSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRlbHRhOyBpKyspIHtcbiAgICBsZXQgY2hhbmdlQ29udGVudCA9IHJlbW92ZUNoYW5nZXNbcmVtb3ZlQ2hhbmdlcy5sZW5ndGggLSBkZWx0YSArIGldLnN1YnN0cigxKTtcbiAgICBpZiAoc3RhdGUubGluZXNbc3RhdGUuaW5kZXggKyBpXSAhPT0gJyAnICsgY2hhbmdlQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmluZGV4ICs9IGRlbHRhO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lcykge1xuICBsZXQgb2xkTGluZXMgPSAwO1xuICBsZXQgbmV3TGluZXMgPSAwO1xuXG4gIGxpbmVzLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgIGlmICh0eXBlb2YgbGluZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGxldCBteUNvdW50ID0gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lLm1pbmUpO1xuICAgICAgbGV0IHRoZWlyQ291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUudGhlaXJzKTtcblxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQub2xkTGluZXMgPT09IHRoZWlyQ291bnQub2xkTGluZXMpIHtcbiAgICAgICAgICBvbGRMaW5lcyArPSBteUNvdW50Lm9sZExpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9sZExpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChteUNvdW50Lm5ld0xpbmVzID09PSB0aGVpckNvdW50Lm5ld0xpbmVzKSB7XG4gICAgICAgICAgbmV3TGluZXMgKz0gbXlDb3VudC5uZXdMaW5lcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdMaW5lcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCAmJiAobGluZVswXSA9PT0gJysnIHx8IGxpbmVbMF0gPT09ICcgJykpIHtcbiAgICAgICAgbmV3TGluZXMrKztcbiAgICAgIH1cbiAgICAgIGlmIChvbGRMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnLScgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBvbGRMaW5lcysrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtvbGRMaW5lcywgbmV3TGluZXN9O1xufVxuIl19
4005  
4006  
4007  /***/ }),
4008  /* 14 */
4009  /***/ (function(module, exports, __webpack_require__) {
4010  
4011      /*istanbul ignore start*/'use strict';
4012  
4013      exports.__esModule = true;
4014      exports. /*istanbul ignore end*/structuredPatch = structuredPatch;
4015      /*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = createTwoFilesPatch;
4016      /*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = createPatch;
4017  
4018      var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
4019  
4020      /*istanbul ignore start*/function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
4021  
4022      /*istanbul ignore end*/function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
4023        if (!options) {
4024          options = {};
4025        }
4026        if (typeof options.context === 'undefined') {
4027          options.context = 4;
4028        }
4029  
4030        var diff = /*istanbul ignore start*/(0, _line.diffLines) /*istanbul ignore end*/(oldStr, newStr, options);
4031        diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier
4032  
4033  	  function contextLines(lines) {
4034          return lines.map(function (entry) {
4035            return ' ' + entry;
4036          });
4037        }
4038  
4039        var hunks = [];
4040        var oldRangeStart = 0,
4041            newRangeStart = 0,
4042            curRange = [],
4043            oldLine = 1,
4044            newLine = 1;
4045  
4046        /*istanbul ignore start*/var _loop = function _loop( /*istanbul ignore end*/i) {
4047          var current = diff[i],
4048              lines = current.lines || current.value.replace(/\n$/, '').split('\n');
4049          current.lines = lines;
4050  
4051          if (current.added || current.removed) {
4052            /*istanbul ignore start*/var _curRange;
4053  
4054            /*istanbul ignore end*/ // If we have previous context, start with that
4055            if (!oldRangeStart) {
4056              var prev = diff[i - 1];
4057              oldRangeStart = oldLine;
4058              newRangeStart = newLine;
4059  
4060              if (prev) {
4061                curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
4062                oldRangeStart -= curRange.length;
4063                newRangeStart -= curRange.length;
4064              }
4065            }
4066  
4067            // Output our changes
4068            /*istanbul ignore start*/(_curRange = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/lines.map(function (entry) {
4069              return (current.added ? '+' : '-') + entry;
4070            })));
4071  
4072            // Track the updated file position
4073            if (current.added) {
4074              newLine += lines.length;
4075            } else {
4076              oldLine += lines.length;
4077            }
4078          } else {
4079            // Identical context lines. Track line changes
4080            if (oldRangeStart) {
4081              // Close out any changes that have been output (or join overlapping)
4082              if (lines.length <= options.context * 2 && i < diff.length - 2) {
4083                /*istanbul ignore start*/var _curRange2;
4084  
4085                /*istanbul ignore end*/ // Overlapping
4086                /*istanbul ignore start*/(_curRange2 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines)));
4087              } else {
4088                /*istanbul ignore start*/var _curRange3;
4089  
4090                /*istanbul ignore end*/ // end the range and output
4091                var contextSize = Math.min(lines.length, options.context);
4092                /*istanbul ignore start*/(_curRange3 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines.slice(0, contextSize))));
4093  
4094                var hunk = {
4095                  oldStart: oldRangeStart,
4096                  oldLines: oldLine - oldRangeStart + contextSize,
4097                  newStart: newRangeStart,
4098                  newLines: newLine - newRangeStart + contextSize,
4099                  lines: curRange
4100                };
4101                if (i >= diff.length - 2 && lines.length <= options.context) {
4102                  // EOF is inside this hunk
4103                  var oldEOFNewline = /\n$/.test(oldStr);
4104                  var newEOFNewline = /\n$/.test(newStr);
4105                  if (lines.length == 0 && !oldEOFNewline) {
4106                    // special case: old has no eol and no trailing context; no-nl can end up before adds
4107                    curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
4108                  } else if (!oldEOFNewline || !newEOFNewline) {
4109                    curRange.push('\\ No newline at end of file');
4110                  }
4111                }
4112                hunks.push(hunk);
4113  
4114                oldRangeStart = 0;
4115                newRangeStart = 0;
4116                curRange = [];
4117              }
4118            }
4119            oldLine += lines.length;
4120            newLine += lines.length;
4121          }
4122        };
4123  
4124        for (var i = 0; i < diff.length; i++) {
4125          /*istanbul ignore start*/_loop( /*istanbul ignore end*/i);
4126        }
4127  
4128        return {
4129          oldFileName: oldFileName, newFileName: newFileName,
4130          oldHeader: oldHeader, newHeader: newHeader,
4131          hunks: hunks
4132        };
4133      }
4134  
4135  	function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
4136        var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
4137  
4138        var ret = [];
4139        if (oldFileName == newFileName) {
4140          ret.push('Index: ' + oldFileName);
4141        }
4142        ret.push('===================================================================');
4143        ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
4144        ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
4145  
4146        for (var i = 0; i < diff.hunks.length; i++) {
4147          var hunk = diff.hunks[i];
4148          ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
4149          ret.push.apply(ret, hunk.lines);
4150        }
4151  
4152        return ret.join('\n') + '\n';
4153      }
4154  
4155  	function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
4156        return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
4157      }
4158      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwiY3JlYXRlVHdvRmlsZXNQYXRjaCIsImNyZWF0ZVBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwic3BsaWNlIiwicmV0IiwiYXBwbHkiLCJqb2luIiwiZmlsZU5hbWUiXSwibWFwcGluZ3MiOiI7OztnQ0FFZ0JBLGUsR0FBQUEsZTt5REFpR0FDLG1CLEdBQUFBLG1CO3lEQXdCQUMsVyxHQUFBQSxXOztBQTNIaEI7Ozs7dUJBRU8sU0FBU0YsZUFBVCxDQUF5QkcsV0FBekIsRUFBc0NDLFdBQXRDLEVBQW1EQyxNQUFuRCxFQUEyREMsTUFBM0QsRUFBbUVDLFNBQW5FLEVBQThFQyxTQUE5RSxFQUF5RkMsT0FBekYsRUFBa0c7QUFDdkcsTUFBSSxDQUFDQSxPQUFMLEVBQWM7QUFDWkEsY0FBVSxFQUFWO0FBQ0Q7QUFDRCxNQUFJLE9BQU9BLFFBQVFDLE9BQWYsS0FBMkIsV0FBL0IsRUFBNEM7QUFDMUNELFlBQVFDLE9BQVIsR0FBa0IsQ0FBbEI7QUFDRDs7QUFFRCxN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QUEvQyxFQUEwREMsU0FBMUQsRUFBcUVDLE9BQXJFLEVBQThFO0FBQ25GLFNBQU9SLG9CQUFvQitDLFFBQXBCLEVBQThCQSxRQUE5QixFQUF3QzNDLE1BQXhDLEVBQWdEQyxNQUFoRCxFQUF3REMsU0FBeEQsRUFBbUVDLFNBQW5FLEVBQThFQyxPQUE5RSxDQUFQO0FBQ0QiLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgZGlmZi5wdXNoKHt2YWx1ZTogJycsIGxpbmVzOiBbXX0pOyAgIC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgvXFxuJC8udGVzdChvbGRTdHIpKTtcbiAgICAgICAgICAgIGxldCBuZXdFT0ZOZXdsaW5lID0gKC9cXG4kLy50ZXN0KG5ld1N0cikpO1xuICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA9PSAwICYmICFvbGRFT0ZOZXdsaW5lKSB7XG4gICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogb2xkIGhhcyBubyBlb2wgYW5kIG5vIHRyYWlsaW5nIGNvbnRleHQ7IG5vLW5sIGNhbiBlbmQgdXAgYmVmb3JlIGFkZHNcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9sZEVPRk5ld2xpbmUgfHwgIW5ld0VPRk5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgY3VyUmFuZ2UucHVzaCgnXFxcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGh1bmtzLnB1c2goaHVuayk7XG5cbiAgICAgICAgICBvbGRSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBjdXJSYW5nZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIG5ld0xpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb2xkRmlsZU5hbWU6IG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZTogbmV3RmlsZU5hbWUsXG4gICAgb2xkSGVhZGVyOiBvbGRIZWFkZXIsIG5ld0hlYWRlcjogbmV3SGVhZGVyLFxuICAgIGh1bmtzOiBodW5rc1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICBjb25zdCBkaWZmID0gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcblxuICBjb25zdCByZXQgPSBbXTtcbiAgaWYgKG9sZEZpbGVOYW1lID09IG5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgb2xkRmlsZU5hbWUpO1xuICB9XG4gIHJldC5wdXNoKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Jyk7XG4gIHJldC5wdXNoKCctLS0gJyArIGRpZmYub2xkRmlsZU5hbWUgKyAodHlwZW9mIGRpZmYub2xkSGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm9sZEhlYWRlcikpO1xuICByZXQucHVzaCgnKysrICcgKyBkaWZmLm5ld0ZpbGVOYW1lICsgKHR5cGVvZiBkaWZmLm5ld0hlYWRlciA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6ICdcXHQnICsgZGlmZi5uZXdIZWFkZXIpKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmYuaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBodW5rID0gZGlmZi5odW5rc1tpXTtcbiAgICByZXQucHVzaChcbiAgICAgICdAQCAtJyArIGh1bmsub2xkU3RhcnQgKyAnLCcgKyBodW5rLm9sZExpbmVzXG4gICAgICArICcgKycgKyBodW5rLm5ld1N0YXJ0ICsgJywnICsgaHVuay5uZXdMaW5lc1xuICAgICAgKyAnIEBAJ1xuICAgICk7XG4gICAgcmV0LnB1c2guYXBwbHkocmV0LCBodW5rLmxpbmVzKTtcbiAgfVxuXG4gIHJldHVybiByZXQuam9pbignXFxuJykgKyAnXFxuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdGNoKGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNyZWF0ZVR3b0ZpbGVzUGF0Y2goZmlsZU5hbWUsIGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpO1xufVxuIl19
4159  
4160  
4161  /***/ }),
4162  /* 15 */
4163  /***/ (function(module, exports) {
4164  
4165      /*istanbul ignore start*/"use strict";
4166  
4167      exports.__esModule = true;
4168      exports. /*istanbul ignore end*/arrayEqual = arrayEqual;
4169      /*istanbul ignore start*/exports. /*istanbul ignore end*/arrayStartsWith = arrayStartsWith;
4170  	function arrayEqual(a, b) {
4171        if (a.length !== b.length) {
4172          return false;
4173        }
4174  
4175        return arrayStartsWith(a, b);
4176      }
4177  
4178  	function arrayStartsWith(array, start) {
4179        if (start.length > array.length) {
4180          return false;
4181        }
4182  
4183        for (var i = 0; i < start.length; i++) {
4184          if (start[i] !== array[i]) {
4185            return false;
4186          }
4187        }
4188  
4189        return true;
4190      }
4191      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhcnJheVN0YXJ0c1dpdGgiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Z0NBQWdCQSxVLEdBQUFBLFU7eURBUUFDLGUsR0FBQUEsZTtBQVJULFNBQVNELFVBQVQsQ0FBb0JFLENBQXBCLEVBQXVCQyxDQUF2QixFQUEwQjtBQUMvQixNQUFJRCxFQUFFRSxNQUFGLEtBQWFELEVBQUVDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9ILGdCQUFnQkMsQ0FBaEIsRUFBbUJDLENBQW5CLENBQVA7QUFDRDs7QUFFTSxTQUFTRixlQUFULENBQXlCSSxLQUF6QixFQUFnQ0MsS0FBaEMsRUFBdUM7QUFDNUMsTUFBSUEsTUFBTUYsTUFBTixHQUFlQyxNQUFNRCxNQUF6QixFQUFpQztBQUMvQixXQUFPLEtBQVA7QUFDRDs7QUFFRCxPQUFLLElBQUlHLElBQUksQ0FBYixFQUFnQkEsSUFBSUQsTUFBTUYsTUFBMUIsRUFBa0NHLEdBQWxDLEVBQXVDO0FBQ3JDLFFBQUlELE1BQU1DLENBQU4sTUFBYUYsTUFBTUUsQ0FBTixDQUFqQixFQUEyQjtBQUN6QixhQUFPLEtBQVA7QUFDRDtBQUNGOztBQUVELFNBQU8sSUFBUDtBQUNEIiwiZmlsZSI6ImFycmF5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGFycmF5RXF1YWwoYSwgYikge1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5U3RhcnRzV2l0aChhLCBiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5U3RhcnRzV2l0aChhcnJheSwgc3RhcnQpIHtcbiAgaWYgKHN0YXJ0Lmxlbmd0aCA+IGFycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhcnQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3RhcnRbaV0gIT09IGFycmF5W2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
4192  
4193  
4194  /***/ }),
4195  /* 16 */
4196  /***/ (function(module, exports) {
4197  
4198      /*istanbul ignore start*/"use strict";
4199  
4200      exports.__esModule = true;
4201      exports. /*istanbul ignore end*/convertChangesToDMP = convertChangesToDMP;
4202      // See: http://code.google.com/p/google-diff-match-patch/wiki/API
4203  	function convertChangesToDMP(changes) {
4204        var ret = [],
4205            change = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,
4206            operation = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
4207        for (var i = 0; i < changes.length; i++) {
4208          change = changes[i];
4209          if (change.added) {
4210            operation = 1;
4211          } else if (change.removed) {
4212            operation = -1;
4213          } else {
4214            operation = 0;
4215          }
4216  
4217          ret.push([operation, change.value]);
4218        }
4219        return ret;
4220      }
4221      //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7OztnQ0FDZ0JBLG1CLEdBQUFBLG1CO0FBRGhCO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLE1BQU0sRUFBVjtBQUFBLE1BQ0lDLHdDQURKO0FBQUEsTUFFSUMsMkNBRko7QUFHQSxPQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUosUUFBUUssTUFBNUIsRUFBb0NELEdBQXBDLEVBQXlDO0FBQ3ZDRixhQUFTRixRQUFRSSxDQUFSLENBQVQ7QUFDQSxRQUFJRixPQUFPSSxLQUFYLEVBQWtCO0FBQ2hCSCxrQkFBWSxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE9BQU9LLE9BQVgsRUFBb0I7QUFDekJKLGtCQUFZLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxrQkFBWSxDQUFaO0FBQ0Q7O0FBRURGLFFBQUlPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE9BQU9PLEtBQW5CLENBQVQ7QUFDRDtBQUNELFNBQU9SLEdBQVA7QUFDRCIsImZpbGUiOiJkbXAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTZWU6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtZGlmZi1tYXRjaC1wYXRjaC93aWtpL0FQSVxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRDaGFuZ2VzVG9ETVAoY2hhbmdlcykge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBjaGFuZ2UsXG4gICAgICBvcGVyYXRpb247XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgIGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgb3BlcmF0aW9uID0gMTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3BlcmF0aW9uID0gMDtcbiAgICB9XG5cbiAgICByZXQucHVzaChbb3BlcmF0aW9uLCBjaGFuZ2UudmFsdWVdKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19
4222  
4223  
4224  /***/ }),
4225  /* 17 */
4226  /***/ (function(module, exports) {
4227  
4228      /*istanbul ignore start*/'use strict';
4229  
4230      exports.__esModule = true;
4231      exports. /*istanbul ignore end*/convertChangesToXML = convertChangesToXML;
4232  	function convertChangesToXML(changes) {
4233        var ret = [];
4234        for (var i = 0; i < changes.length; i++) {
4235          var change = changes[i];
4236          if (change.added) {
4237            ret.push('<ins>');
4238          } else if (change.removed) {
4239            ret.push('<del>');
4240          }
4241  
4242          ret.push(escapeHTML(change.value));
4243  
4244          if (change.added) {
4245            ret.push('</ins>');
4246          } else if (change.removed) {
4247            ret.push('</del>');
4248          }
4249        }
4250        return ret.join('');
4251      }
4252  
4253  	function escapeHTML(s) {
4254        var n = s;
4255        n = n.replace(/&/g, '&amp;');
4256        n = n.replace(/</g, '&lt;');
4257        n = n.replace(/>/g, '&gt;');
4258        n = n.replace(/"/g, '&quot;');
4259  
4260        return n;
4261      }
4262      
4263  
4264  /***/ })
4265  /******/ ])
4266  });
4267  ;
4268  
4269  /***/ }),
4270  
4271  /***/ 218:
4272  /***/ (function(module, exports) {
4273  
4274  var traverse = module.exports = function (obj) {
4275      return new Traverse(obj);
4276  };
4277  
4278  function Traverse (obj) {
4279      this.value = obj;
4280  }
4281  
4282  Traverse.prototype.get = function (ps) {
4283      var node = this.value;
4284      for (var i = 0; i < ps.length; i ++) {
4285          var key = ps[i];
4286          if (!node || !hasOwnProperty.call(node, key)) {
4287              node = undefined;
4288              break;
4289          }
4290          node = node[key];
4291      }
4292      return node;
4293  };
4294  
4295  Traverse.prototype.has = function (ps) {
4296      var node = this.value;
4297      for (var i = 0; i < ps.length; i ++) {
4298          var key = ps[i];
4299          if (!node || !hasOwnProperty.call(node, key)) {
4300              return false;
4301          }
4302          node = node[key];
4303      }
4304      return true;
4305  };
4306  
4307  Traverse.prototype.set = function (ps, value) {
4308      var node = this.value;
4309      for (var i = 0; i < ps.length - 1; i ++) {
4310          var key = ps[i];
4311          if (!hasOwnProperty.call(node, key)) node[key] = {};
4312          node = node[key];
4313      }
4314      node[ps[i]] = value;
4315      return value;
4316  };
4317  
4318  Traverse.prototype.map = function (cb) {
4319      return walk(this.value, cb, true);
4320  };
4321  
4322  Traverse.prototype.forEach = function (cb) {
4323      this.value = walk(this.value, cb, false);
4324      return this.value;
4325  };
4326  
4327  Traverse.prototype.reduce = function (cb, init) {
4328      var skip = arguments.length === 1;
4329      var acc = skip ? this.value : init;
4330      this.forEach(function (x) {
4331          if (!this.isRoot || !skip) {
4332              acc = cb.call(this, acc, x);
4333          }
4334      });
4335      return acc;
4336  };
4337  
4338  Traverse.prototype.paths = function () {
4339      var acc = [];
4340      this.forEach(function (x) {
4341          acc.push(this.path); 
4342      });
4343      return acc;
4344  };
4345  
4346  Traverse.prototype.nodes = function () {
4347      var acc = [];
4348      this.forEach(function (x) {
4349          acc.push(this.node);
4350      });
4351      return acc;
4352  };
4353  
4354  Traverse.prototype.clone = function () {
4355      var parents = [], nodes = [];
4356      
4357      return (function clone (src) {
4358          for (var i = 0; i < parents.length; i++) {
4359              if (parents[i] === src) {
4360                  return nodes[i];
4361              }
4362          }
4363          
4364          if (typeof src === 'object' && src !== null) {
4365              var dst = copy(src);
4366              
4367              parents.push(src);
4368              nodes.push(dst);
4369              
4370              forEach(objectKeys(src), function (key) {
4371                  dst[key] = clone(src[key]);
4372              });
4373              
4374              parents.pop();
4375              nodes.pop();
4376              return dst;
4377          }
4378          else {
4379              return src;
4380          }
4381      })(this.value);
4382  };
4383  
4384  function walk (root, cb, immutable) {
4385      var path = [];
4386      var parents = [];
4387      var alive = true;
4388      
4389      return (function walker (node_) {
4390          var node = immutable ? copy(node_) : node_;
4391          var modifiers = {};
4392          
4393          var keepGoing = true;
4394          
4395          var state = {
4396              node : node,
4397              node_ : node_,
4398              path : [].concat(path),
4399              parent : parents[parents.length - 1],
4400              parents : parents,
4401              key : path.slice(-1)[0],
4402              isRoot : path.length === 0,
4403              level : path.length,
4404              circular : null,
4405              update : function (x, stopHere) {
4406                  if (!state.isRoot) {
4407                      state.parent.node[state.key] = x;
4408                  }
4409                  state.node = x;
4410                  if (stopHere) keepGoing = false;
4411              },
4412              'delete' : function (stopHere) {
4413                  delete state.parent.node[state.key];
4414                  if (stopHere) keepGoing = false;
4415              },
4416              remove : function (stopHere) {
4417                  if (isArray(state.parent.node)) {
4418                      state.parent.node.splice(state.key, 1);
4419                  }
4420                  else {
4421                      delete state.parent.node[state.key];
4422                  }
4423                  if (stopHere) keepGoing = false;
4424              },
4425              keys : null,
4426              before : function (f) { modifiers.before = f },
4427              after : function (f) { modifiers.after = f },
4428              pre : function (f) { modifiers.pre = f },
4429              post : function (f) { modifiers.post = f },
4430              stop : function () { alive = false },
4431              block : function () { keepGoing = false }
4432          };
4433          
4434          if (!alive) return state;
4435          
4436          function updateState() {
4437              if (typeof state.node === 'object' && state.node !== null) {
4438                  if (!state.keys || state.node_ !== state.node) {
4439                      state.keys = objectKeys(state.node)
4440                  }
4441                  
4442                  state.isLeaf = state.keys.length == 0;
4443                  
4444                  for (var i = 0; i < parents.length; i++) {
4445                      if (parents[i].node_ === node_) {
4446                          state.circular = parents[i];
4447                          break;
4448                      }
4449                  }
4450              }
4451              else {
4452                  state.isLeaf = true;
4453                  state.keys = null;
4454              }
4455              
4456              state.notLeaf = !state.isLeaf;
4457              state.notRoot = !state.isRoot;
4458          }
4459          
4460          updateState();
4461          
4462          // use return values to update if defined
4463          var ret = cb.call(state, state.node);
4464          if (ret !== undefined && state.update) state.update(ret);
4465          
4466          if (modifiers.before) modifiers.before.call(state, state.node);
4467          
4468          if (!keepGoing) return state;
4469          
4470          if (typeof state.node == 'object'
4471          && state.node !== null && !state.circular) {
4472              parents.push(state);
4473              
4474              updateState();
4475              
4476              forEach(state.keys, function (key, i) {
4477                  path.push(key);
4478                  
4479                  if (modifiers.pre) modifiers.pre.call(state, state.node[key], key);
4480                  
4481                  var child = walker(state.node[key]);
4482                  if (immutable && hasOwnProperty.call(state.node, key)) {
4483                      state.node[key] = child.node;
4484                  }
4485                  
4486                  child.isLast = i == state.keys.length - 1;
4487                  child.isFirst = i == 0;
4488                  
4489                  if (modifiers.post) modifiers.post.call(state, child);
4490                  
4491                  path.pop();
4492              });
4493              parents.pop();
4494          }
4495          
4496          if (modifiers.after) modifiers.after.call(state, state.node);
4497          
4498          return state;
4499      })(root).node;
4500  }
4501  
4502  function copy (src) {
4503      if (typeof src === 'object' && src !== null) {
4504          var dst;
4505          
4506          if (isArray(src)) {
4507              dst = [];
4508          }
4509          else if (isDate(src)) {
4510              dst = new Date(src.getTime ? src.getTime() : src);
4511          }
4512          else if (isRegExp(src)) {
4513              dst = new RegExp(src);
4514          }
4515          else if (isError(src)) {
4516              dst = { message: src.message };
4517          }
4518          else if (isBoolean(src)) {
4519              dst = new Boolean(src);
4520          }
4521          else if (isNumber(src)) {
4522              dst = new Number(src);
4523          }
4524          else if (isString(src)) {
4525              dst = new String(src);
4526          }
4527          else if (Object.create && Object.getPrototypeOf) {
4528              dst = Object.create(Object.getPrototypeOf(src));
4529          }
4530          else if (src.constructor === Object) {
4531              dst = {};
4532          }
4533          else {
4534              var proto =
4535                  (src.constructor && src.constructor.prototype)
4536                  || src.__proto__
4537                  || {}
4538              ;
4539              var T = function () {};
4540              T.prototype = proto;
4541              dst = new T;
4542          }
4543          
4544          forEach(objectKeys(src), function (key) {
4545              dst[key] = src[key];
4546          });
4547          return dst;
4548      }
4549      else return src;
4550  }
4551  
4552  var objectKeys = Object.keys || function keys (obj) {
4553      var res = [];
4554      for (var key in obj) res.push(key)
4555      return res;
4556  };
4557  
4558  function toS (obj) { return Object.prototype.toString.call(obj) }
4559  function isDate (obj) { return toS(obj) === '[object Date]' }
4560  function isRegExp (obj) { return toS(obj) === '[object RegExp]' }
4561  function isError (obj) { return toS(obj) === '[object Error]' }
4562  function isBoolean (obj) { return toS(obj) === '[object Boolean]' }
4563  function isNumber (obj) { return toS(obj) === '[object Number]' }
4564  function isString (obj) { return toS(obj) === '[object String]' }
4565  
4566  var isArray = Array.isArray || function isArray (xs) {
4567      return Object.prototype.toString.call(xs) === '[object Array]';
4568  };
4569  
4570  var forEach = function (xs, fn) {
4571      if (xs.forEach) return xs.forEach(fn)
4572      else for (var i = 0; i < xs.length; i++) {
4573          fn(xs[i], i, xs);
4574      }
4575  };
4576  
4577  forEach(objectKeys(Traverse.prototype), function (key) {
4578      traverse[key] = function (obj) {
4579          var args = [].slice.call(arguments, 1);
4580          var t = new Traverse(obj);
4581          return t[key].apply(t, args);
4582      };
4583  });
4584  
4585  var hasOwnProperty = Object.hasOwnProperty || function (obj, key) {
4586      return key in obj;
4587  };
4588  
4589  
4590  /***/ }),
4591  
4592  /***/ 22:
4593  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4594  
4595  "use strict";
4596  
4597  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
4598  var arrayWithHoles = __webpack_require__(35);
4599  
4600  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
4601  function _iterableToArrayLimit(arr, i) {
4602    if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
4603      return;
4604    }
4605  
4606    var _arr = [];
4607    var _n = true;
4608    var _d = false;
4609    var _e = undefined;
4610  
4611    try {
4612      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
4613        _arr.push(_s.value);
4614  
4615        if (i && _arr.length === i) break;
4616      }
4617    } catch (err) {
4618      _d = true;
4619      _e = err;
4620    } finally {
4621      try {
4622        if (!_n && _i["return"] != null) _i["return"]();
4623      } finally {
4624        if (_d) throw _e;
4625      }
4626    }
4627  
4628    return _arr;
4629  }
4630  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
4631  var nonIterableRest = __webpack_require__(36);
4632  
4633  // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js
4634  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _slicedToArray; });
4635  
4636  
4637  
4638  function _slicedToArray(arr, i) {
4639    return Object(arrayWithHoles["a" /* default */])(arr) || _iterableToArrayLimit(arr, i) || Object(nonIterableRest["a" /* default */])();
4640  }
4641  
4642  /***/ }),
4643  
4644  /***/ 23:
4645  /***/ (function(module, exports) {
4646  
4647  (function() { module.exports = this["regeneratorRuntime"]; }());
4648  
4649  /***/ }),
4650  
4651  /***/ 24:
4652  /***/ (function(module, exports) {
4653  
4654  (function() { module.exports = this["wp"]["richText"]; }());
4655  
4656  /***/ }),
4657  
4658  /***/ 25:
4659  /***/ (function(module, exports) {
4660  
4661  (function() { module.exports = this["wp"]["url"]; }());
4662  
4663  /***/ }),
4664  
4665  /***/ 27:
4666  /***/ (function(module, exports) {
4667  
4668  (function() { module.exports = this["wp"]["dom"]; }());
4669  
4670  /***/ }),
4671  
4672  /***/ 28:
4673  /***/ (function(module, exports, __webpack_require__) {
4674  
4675  /**
4676   * Copyright (c) 2013-present, Facebook, Inc.
4677   *
4678   * This source code is licensed under the MIT license found in the
4679   * LICENSE file in the root directory of this source tree.
4680   */
4681  
4682  if (false) { var throwOnDirectAccess, ReactIs; } else {
4683    // By explicitly using `prop-types` you are opting into new production behavior.
4684    // http://fb.me/prop-types-in-prod
4685    module.exports = __webpack_require__(89)();
4686  }
4687  
4688  
4689  /***/ }),
4690  
4691  /***/ 29:
4692  /***/ (function(module, exports) {
4693  
4694  (function() { module.exports = this["wp"]["hooks"]; }());
4695  
4696  /***/ }),
4697  
4698  /***/ 3:
4699  /***/ (function(module, exports) {
4700  
4701  (function() { module.exports = this["wp"]["components"]; }());
4702  
4703  /***/ }),
4704  
4705  /***/ 31:
4706  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4707  
4708  "use strict";
4709  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _iterableToArray; });
4710  function _iterableToArray(iter) {
4711    if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
4712  }
4713  
4714  /***/ }),
4715  
4716  /***/ 32:
4717  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4718  
4719  "use strict";
4720  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _typeof; });
4721  function _typeof(obj) {
4722    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
4723      _typeof = function _typeof(obj) {
4724        return typeof obj;
4725      };
4726    } else {
4727      _typeof = function _typeof(obj) {
4728        return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
4729      };
4730    }
4731  
4732    return _typeof(obj);
4733  }
4734  
4735  /***/ }),
4736  
4737  /***/ 33:
4738  /***/ (function(module, exports) {
4739  
4740  (function() { module.exports = this["wp"]["deprecated"]; }());
4741  
4742  /***/ }),
4743  
4744  /***/ 34:
4745  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4746  
4747  "use strict";
4748  
4749  
4750  var LEAF_KEY, hasWeakMap;
4751  
4752  /**
4753   * Arbitrary value used as key for referencing cache object in WeakMap tree.
4754   *
4755   * @type {Object}
4756   */
4757  LEAF_KEY = {};
4758  
4759  /**
4760   * Whether environment supports WeakMap.
4761   *
4762   * @type {boolean}
4763   */
4764  hasWeakMap = typeof WeakMap !== 'undefined';
4765  
4766  /**
4767   * Returns the first argument as the sole entry in an array.
4768   *
4769   * @param {*} value Value to return.
4770   *
4771   * @return {Array} Value returned as entry in array.
4772   */
4773  function arrayOf( value ) {
4774      return [ value ];
4775  }
4776  
4777  /**
4778   * Returns true if the value passed is object-like, or false otherwise. A value
4779   * is object-like if it can support property assignment, e.g. object or array.
4780   *
4781   * @param {*} value Value to test.
4782   *
4783   * @return {boolean} Whether value is object-like.
4784   */
4785  function isObjectLike( value ) {
4786      return !! value && 'object' === typeof value;
4787  }
4788  
4789  /**
4790   * Creates and returns a new cache object.
4791   *
4792   * @return {Object} Cache object.
4793   */
4794  function createCache() {
4795      var cache = {
4796          clear: function() {
4797              cache.head = null;
4798          },
4799      };
4800  
4801      return cache;
4802  }
4803  
4804  /**
4805   * Returns true if entries within the two arrays are strictly equal by
4806   * reference from a starting index.
4807   *
4808   * @param {Array}  a         First array.
4809   * @param {Array}  b         Second array.
4810   * @param {number} fromIndex Index from which to start comparison.
4811   *
4812   * @return {boolean} Whether arrays are shallowly equal.
4813   */
4814  function isShallowEqual( a, b, fromIndex ) {
4815      var i;
4816  
4817      if ( a.length !== b.length ) {
4818          return false;
4819      }
4820  
4821      for ( i = fromIndex; i < a.length; i++ ) {
4822          if ( a[ i ] !== b[ i ] ) {
4823              return false;
4824          }
4825      }
4826  
4827      return true;
4828  }
4829  
4830  /**
4831   * Returns a memoized selector function. The getDependants function argument is
4832   * called before the memoized selector and is expected to return an immutable
4833   * reference or array of references on which the selector depends for computing
4834   * its own return value. The memoize cache is preserved only as long as those
4835   * dependant references remain the same. If getDependants returns a different
4836   * reference(s), the cache is cleared and the selector value regenerated.
4837   *
4838   * @param {Function} selector      Selector function.
4839   * @param {Function} getDependants Dependant getter returning an immutable
4840   *                                 reference or array of reference used in
4841   *                                 cache bust consideration.
4842   *
4843   * @return {Function} Memoized selector.
4844   */
4845  /* harmony default export */ __webpack_exports__["a"] = (function( selector, getDependants ) {
4846      var rootCache, getCache;
4847  
4848      // Use object source as dependant if getter not provided
4849      if ( ! getDependants ) {
4850          getDependants = arrayOf;
4851      }
4852  
4853      /**
4854       * Returns the root cache. If WeakMap is supported, this is assigned to the
4855       * root WeakMap cache set, otherwise it is a shared instance of the default
4856       * cache object.
4857       *
4858       * @return {(WeakMap|Object)} Root cache object.
4859       */
4860  	function getRootCache() {
4861          return rootCache;
4862      }
4863  
4864      /**
4865       * Returns the cache for a given dependants array. When possible, a WeakMap
4866       * will be used to create a unique cache for each set of dependants. This
4867       * is feasible due to the nature of WeakMap in allowing garbage collection
4868       * to occur on entries where the key object is no longer referenced. Since
4869       * WeakMap requires the key to be an object, this is only possible when the
4870       * dependant is object-like. The root cache is created as a hierarchy where
4871       * each top-level key is the first entry in a dependants set, the value a
4872       * WeakMap where each key is the next dependant, and so on. This continues
4873       * so long as the dependants are object-like. If no dependants are object-
4874       * like, then the cache is shared across all invocations.
4875       *
4876       * @see isObjectLike
4877       *
4878       * @param {Array} dependants Selector dependants.
4879       *
4880       * @return {Object} Cache object.
4881       */
4882  	function getWeakMapCache( dependants ) {
4883          var caches = rootCache,
4884              isUniqueByDependants = true,
4885              i, dependant, map, cache;
4886  
4887          for ( i = 0; i < dependants.length; i++ ) {
4888              dependant = dependants[ i ];
4889  
4890              // Can only compose WeakMap from object-like key.
4891              if ( ! isObjectLike( dependant ) ) {
4892                  isUniqueByDependants = false;
4893                  break;
4894              }
4895  
4896              // Does current segment of cache already have a WeakMap?
4897              if ( caches.has( dependant ) ) {
4898                  // Traverse into nested WeakMap.
4899                  caches = caches.get( dependant );
4900              } else {
4901                  // Create, set, and traverse into a new one.
4902                  map = new WeakMap();
4903                  caches.set( dependant, map );
4904                  caches = map;
4905              }
4906          }
4907  
4908          // We use an arbitrary (but consistent) object as key for the last item
4909          // in the WeakMap to serve as our running cache.
4910          if ( ! caches.has( LEAF_KEY ) ) {
4911              cache = createCache();
4912              cache.isUniqueByDependants = isUniqueByDependants;
4913              caches.set( LEAF_KEY, cache );
4914          }
4915  
4916          return caches.get( LEAF_KEY );
4917      }
4918  
4919      // Assign cache handler by availability of WeakMap
4920      getCache = hasWeakMap ? getWeakMapCache : getRootCache;
4921  
4922      /**
4923       * Resets root memoization cache.
4924       */
4925  	function clear() {
4926          rootCache = hasWeakMap ? new WeakMap() : createCache();
4927      }
4928  
4929      // eslint-disable-next-line jsdoc/check-param-names
4930      /**
4931       * The augmented selector call, considering first whether dependants have
4932       * changed before passing it to underlying memoize function.
4933       *
4934       * @param {Object} source    Source object for derivation.
4935       * @param {...*}   extraArgs Additional arguments to pass to selector.
4936       *
4937       * @return {*} Selector result.
4938       */
4939  	function callSelector( /* source, ...extraArgs */ ) {
4940          var len = arguments.length,
4941              cache, node, i, args, dependants;
4942  
4943          // Create copy of arguments (avoid leaking deoptimization).
4944          args = new Array( len );
4945          for ( i = 0; i < len; i++ ) {
4946              args[ i ] = arguments[ i ];
4947          }
4948  
4949          dependants = getDependants.apply( null, args );
4950          cache = getCache( dependants );
4951  
4952          // If not guaranteed uniqueness by dependants (primitive type or lack
4953          // of WeakMap support), shallow compare against last dependants and, if
4954          // references have changed, destroy cache to recalculate result.
4955          if ( ! cache.isUniqueByDependants ) {
4956              if ( cache.lastDependants && ! isShallowEqual( dependants, cache.lastDependants, 0 ) ) {
4957                  cache.clear();
4958              }
4959  
4960              cache.lastDependants = dependants;
4961          }
4962  
4963          node = cache.head;
4964          while ( node ) {
4965              // Check whether node arguments match arguments
4966              if ( ! isShallowEqual( node.args, args, 1 ) ) {
4967                  node = node.next;
4968                  continue;
4969              }
4970  
4971              // At this point we can assume we've found a match
4972  
4973              // Surface matched node to head if not already
4974              if ( node !== cache.head ) {
4975                  // Adjust siblings to point to each other.
4976                  node.prev.next = node.next;
4977                  if ( node.next ) {
4978                      node.next.prev = node.prev;
4979                  }
4980  
4981                  node.next = cache.head;
4982                  node.prev = null;
4983                  cache.head.prev = node;
4984                  cache.head = node;
4985              }
4986  
4987              // Return immediately
4988              return node.val;
4989          }
4990  
4991          // No cached value found. Continue to insertion phase:
4992  
4993          node = {
4994              // Generate the result from original function
4995              val: selector.apply( null, args ),
4996          };
4997  
4998          // Avoid including the source object in the cache.
4999          args[ 0 ] = null;
5000          node.args = args;
5001  
5002          // Don't need to check whether node is already head, since it would
5003          // have been returned above already if it was
5004  
5005          // Shift existing head down list
5006          if ( cache.head ) {
5007              cache.head.prev = node;
5008              node.next = cache.head;
5009          }
5010  
5011          cache.head = node;
5012  
5013          return node.val;
5014      }
5015  
5016      callSelector.getDependants = getDependants;
5017      callSelector.clear = clear;
5018      clear();
5019  
5020      return callSelector;
5021  });
5022  
5023  
5024  /***/ }),
5025  
5026  /***/ 35:
5027  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5028  
5029  "use strict";
5030  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _arrayWithHoles; });
5031  function _arrayWithHoles(arr) {
5032    if (Array.isArray(arr)) return arr;
5033  }
5034  
5035  /***/ }),
5036  
5037  /***/ 36:
5038  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5039  
5040  "use strict";
5041  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _nonIterableRest; });
5042  function _nonIterableRest() {
5043    throw new TypeError("Invalid attempt to destructure non-iterable instance");
5044  }
5045  
5046  /***/ }),
5047  
5048  /***/ 363:
5049  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5050  
5051  "use strict";
5052  __webpack_require__.r(__webpack_exports__);
5053  var actions_namespaceObject = {};
5054  __webpack_require__.r(actions_namespaceObject);
5055  __webpack_require__.d(actions_namespaceObject, "resetBlocks", function() { return actions_resetBlocks; });
5056  __webpack_require__.d(actions_namespaceObject, "resetSelection", function() { return actions_resetSelection; });
5057  __webpack_require__.d(actions_namespaceObject, "receiveBlocks", function() { return receiveBlocks; });
5058  __webpack_require__.d(actions_namespaceObject, "updateBlockAttributes", function() { return actions_updateBlockAttributes; });
5059  __webpack_require__.d(actions_namespaceObject, "updateBlock", function() { return actions_updateBlock; });
5060  __webpack_require__.d(actions_namespaceObject, "selectBlock", function() { return actions_selectBlock; });
5061  __webpack_require__.d(actions_namespaceObject, "selectPreviousBlock", function() { return selectPreviousBlock; });
5062  __webpack_require__.d(actions_namespaceObject, "selectNextBlock", function() { return selectNextBlock; });
5063  __webpack_require__.d(actions_namespaceObject, "startMultiSelect", function() { return actions_startMultiSelect; });
5064  __webpack_require__.d(actions_namespaceObject, "stopMultiSelect", function() { return actions_stopMultiSelect; });
5065  __webpack_require__.d(actions_namespaceObject, "multiSelect", function() { return actions_multiSelect; });
5066  __webpack_require__.d(actions_namespaceObject, "clearSelectedBlock", function() { return actions_clearSelectedBlock; });
5067  __webpack_require__.d(actions_namespaceObject, "toggleSelection", function() { return actions_toggleSelection; });
5068  __webpack_require__.d(actions_namespaceObject, "replaceBlocks", function() { return actions_replaceBlocks; });
5069  __webpack_require__.d(actions_namespaceObject, "replaceBlock", function() { return replaceBlock; });
5070  __webpack_require__.d(actions_namespaceObject, "moveBlocksDown", function() { return actions_moveBlocksDown; });
5071  __webpack_require__.d(actions_namespaceObject, "moveBlocksUp", function() { return actions_moveBlocksUp; });
5072  __webpack_require__.d(actions_namespaceObject, "moveBlockToPosition", function() { return moveBlockToPosition; });
5073  __webpack_require__.d(actions_namespaceObject, "insertBlock", function() { return actions_insertBlock; });
5074  __webpack_require__.d(actions_namespaceObject, "insertBlocks", function() { return actions_insertBlocks; });
5075  __webpack_require__.d(actions_namespaceObject, "showInsertionPoint", function() { return actions_showInsertionPoint; });
5076  __webpack_require__.d(actions_namespaceObject, "hideInsertionPoint", function() { return actions_hideInsertionPoint; });
5077  __webpack_require__.d(actions_namespaceObject, "setTemplateValidity", function() { return setTemplateValidity; });
5078  __webpack_require__.d(actions_namespaceObject, "synchronizeTemplate", function() { return synchronizeTemplate; });
5079  __webpack_require__.d(actions_namespaceObject, "mergeBlocks", function() { return actions_mergeBlocks; });
5080  __webpack_require__.d(actions_namespaceObject, "removeBlocks", function() { return actions_removeBlocks; });
5081  __webpack_require__.d(actions_namespaceObject, "removeBlock", function() { return actions_removeBlock; });
5082  __webpack_require__.d(actions_namespaceObject, "replaceInnerBlocks", function() { return actions_replaceInnerBlocks; });
5083  __webpack_require__.d(actions_namespaceObject, "toggleBlockMode", function() { return toggleBlockMode; });
5084  __webpack_require__.d(actions_namespaceObject, "startTyping", function() { return startTyping; });
5085  __webpack_require__.d(actions_namespaceObject, "stopTyping", function() { return stopTyping; });
5086  __webpack_require__.d(actions_namespaceObject, "startDraggingBlocks", function() { return actions_startDraggingBlocks; });
5087  __webpack_require__.d(actions_namespaceObject, "stopDraggingBlocks", function() { return actions_stopDraggingBlocks; });
5088  __webpack_require__.d(actions_namespaceObject, "enterFormattedText", function() { return enterFormattedText; });
5089  __webpack_require__.d(actions_namespaceObject, "exitFormattedText", function() { return exitFormattedText; });
5090  __webpack_require__.d(actions_namespaceObject, "selectionChange", function() { return selectionChange; });
5091  __webpack_require__.d(actions_namespaceObject, "insertDefaultBlock", function() { return actions_insertDefaultBlock; });
5092  __webpack_require__.d(actions_namespaceObject, "updateBlockListSettings", function() { return updateBlockListSettings; });
5093  __webpack_require__.d(actions_namespaceObject, "updateSettings", function() { return actions_updateSettings; });
5094  __webpack_require__.d(actions_namespaceObject, "__unstableSaveReusableBlock", function() { return __unstableSaveReusableBlock; });
5095  __webpack_require__.d(actions_namespaceObject, "__unstableMarkLastChangeAsPersistent", function() { return actions_unstableMarkLastChangeAsPersistent; });
5096  __webpack_require__.d(actions_namespaceObject, "__unstableMarkAutomaticChange", function() { return __unstableMarkAutomaticChange; });
5097  __webpack_require__.d(actions_namespaceObject, "setNavigationMode", function() { return actions_setNavigationMode; });
5098  __webpack_require__.d(actions_namespaceObject, "duplicateBlocks", function() { return actions_duplicateBlocks; });
5099  __webpack_require__.d(actions_namespaceObject, "insertBeforeBlock", function() { return actions_insertBeforeBlock; });
5100  __webpack_require__.d(actions_namespaceObject, "insertAfterBlock", function() { return actions_insertAfterBlock; });
5101  var selectors_namespaceObject = {};
5102  __webpack_require__.r(selectors_namespaceObject);
5103  __webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_HIGH", function() { return INSERTER_UTILITY_HIGH; });
5104  __webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_MEDIUM", function() { return INSERTER_UTILITY_MEDIUM; });
5105  __webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_LOW", function() { return INSERTER_UTILITY_LOW; });
5106  __webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_NONE", function() { return INSERTER_UTILITY_NONE; });
5107  __webpack_require__.d(selectors_namespaceObject, "getBlockName", function() { return selectors_getBlockName; });
5108  __webpack_require__.d(selectors_namespaceObject, "isBlockValid", function() { return selectors_isBlockValid; });
5109  __webpack_require__.d(selectors_namespaceObject, "getBlockAttributes", function() { return getBlockAttributes; });
5110  __webpack_require__.d(selectors_namespaceObject, "getBlock", function() { return selectors_getBlock; });
5111  __webpack_require__.d(selectors_namespaceObject, "__unstableGetBlockWithoutInnerBlocks", function() { return selectors_unstableGetBlockWithoutInnerBlocks; });
5112  __webpack_require__.d(selectors_namespaceObject, "getBlocks", function() { return selectors_getBlocks; });
5113  __webpack_require__.d(selectors_namespaceObject, "getClientIdsOfDescendants", function() { return selectors_getClientIdsOfDescendants; });
5114  __webpack_require__.d(selectors_namespaceObject, "getClientIdsWithDescendants", function() { return getClientIdsWithDescendants; });
5115  __webpack_require__.d(selectors_namespaceObject, "getGlobalBlockCount", function() { return getGlobalBlockCount; });
5116  __webpack_require__.d(selectors_namespaceObject, "getBlocksByClientId", function() { return selectors_getBlocksByClientId; });
5117  __webpack_require__.d(selectors_namespaceObject, "getBlockCount", function() { return selectors_getBlockCount; });
5118  __webpack_require__.d(selectors_namespaceObject, "getSelectionStart", function() { return selectors_getSelectionStart; });
5119  __webpack_require__.d(selectors_namespaceObject, "getSelectionEnd", function() { return selectors_getSelectionEnd; });
5120  __webpack_require__.d(selectors_namespaceObject, "getBlockSelectionStart", function() { return getBlockSelectionStart; });
5121  __webpack_require__.d(selectors_namespaceObject, "getBlockSelectionEnd", function() { return getBlockSelectionEnd; });
5122  __webpack_require__.d(selectors_namespaceObject, "getSelectedBlockCount", function() { return selectors_getSelectedBlockCount; });
5123  __webpack_require__.d(selectors_namespaceObject, "hasSelectedBlock", function() { return hasSelectedBlock; });
5124  __webpack_require__.d(selectors_namespaceObject, "getSelectedBlockClientId", function() { return selectors_getSelectedBlockClientId; });
5125  __webpack_require__.d(selectors_namespaceObject, "getSelectedBlock", function() { return selectors_getSelectedBlock; });
5126  __webpack_require__.d(selectors_namespaceObject, "getBlockRootClientId", function() { return selectors_getBlockRootClientId; });
5127  __webpack_require__.d(selectors_namespaceObject, "getBlockParents", function() { return selectors_getBlockParents; });
5128  __webpack_require__.d(selectors_namespaceObject, "getBlockHierarchyRootClientId", function() { return getBlockHierarchyRootClientId; });
5129  __webpack_require__.d(selectors_namespaceObject, "getLowestCommonAncestorWithSelectedBlock", function() { return getLowestCommonAncestorWithSelectedBlock; });
5130  __webpack_require__.d(selectors_namespaceObject, "getAdjacentBlockClientId", function() { return getAdjacentBlockClientId; });
5131  __webpack_require__.d(selectors_namespaceObject, "getPreviousBlockClientId", function() { return getPreviousBlockClientId; });
5132  __webpack_require__.d(selectors_namespaceObject, "getNextBlockClientId", function() { return getNextBlockClientId; });
5133  __webpack_require__.d(selectors_namespaceObject, "getSelectedBlocksInitialCaretPosition", function() { return selectors_getSelectedBlocksInitialCaretPosition; });
5134  __webpack_require__.d(selectors_namespaceObject, "getSelectedBlockClientIds", function() { return selectors_getSelectedBlockClientIds; });
5135  __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlockClientIds", function() { return getMultiSelectedBlockClientIds; });
5136  __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocks", function() { return getMultiSelectedBlocks; });
5137  __webpack_require__.d(selectors_namespaceObject, "getFirstMultiSelectedBlockClientId", function() { return getFirstMultiSelectedBlockClientId; });
5138  __webpack_require__.d(selectors_namespaceObject, "getLastMultiSelectedBlockClientId", function() { return getLastMultiSelectedBlockClientId; });
5139  __webpack_require__.d(selectors_namespaceObject, "isFirstMultiSelectedBlock", function() { return selectors_isFirstMultiSelectedBlock; });
5140  __webpack_require__.d(selectors_namespaceObject, "isBlockMultiSelected", function() { return selectors_isBlockMultiSelected; });
5141  __webpack_require__.d(selectors_namespaceObject, "isAncestorMultiSelected", function() { return selectors_isAncestorMultiSelected; });
5142  __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocksStartClientId", function() { return getMultiSelectedBlocksStartClientId; });
5143  __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocksEndClientId", function() { return getMultiSelectedBlocksEndClientId; });
5144  __webpack_require__.d(selectors_namespaceObject, "getBlockOrder", function() { return selectors_getBlockOrder; });
5145  __webpack_require__.d(selectors_namespaceObject, "getBlockIndex", function() { return selectors_getBlockIndex; });
5146  __webpack_require__.d(selectors_namespaceObject, "isBlockSelected", function() { return selectors_isBlockSelected; });
5147  __webpack_require__.d(selectors_namespaceObject, "hasSelectedInnerBlock", function() { return selectors_hasSelectedInnerBlock; });
5148  __webpack_require__.d(selectors_namespaceObject, "isBlockWithinSelection", function() { return isBlockWithinSelection; });
5149  __webpack_require__.d(selectors_namespaceObject, "hasMultiSelection", function() { return selectors_hasMultiSelection; });
5150  __webpack_require__.d(selectors_namespaceObject, "isMultiSelecting", function() { return selectors_isMultiSelecting; });
5151  __webpack_require__.d(selectors_namespaceObject, "isSelectionEnabled", function() { return selectors_isSelectionEnabled; });
5152  __webpack_require__.d(selectors_namespaceObject, "getBlockMode", function() { return selectors_getBlockMode; });
5153  __webpack_require__.d(selectors_namespaceObject, "isTyping", function() { return selectors_isTyping; });
5154  __webpack_require__.d(selectors_namespaceObject, "isDraggingBlocks", function() { return selectors_isDraggingBlocks; });
5155  __webpack_require__.d(selectors_namespaceObject, "isCaretWithinFormattedText", function() { return selectors_isCaretWithinFormattedText; });
5156  __webpack_require__.d(selectors_namespaceObject, "getBlockInsertionPoint", function() { return getBlockInsertionPoint; });
5157  __webpack_require__.d(selectors_namespaceObject, "isBlockInsertionPointVisible", function() { return isBlockInsertionPointVisible; });
5158  __webpack_require__.d(selectors_namespaceObject, "isValidTemplate", function() { return isValidTemplate; });
5159  __webpack_require__.d(selectors_namespaceObject, "getTemplate", function() { return getTemplate; });
5160  __webpack_require__.d(selectors_namespaceObject, "getTemplateLock", function() { return selectors_getTemplateLock; });
5161  __webpack_require__.d(selectors_namespaceObject, "canInsertBlockType", function() { return selectors_canInsertBlockType; });
5162  __webpack_require__.d(selectors_namespaceObject, "getInserterItems", function() { return selectors_getInserterItems; });
5163  __webpack_require__.d(selectors_namespaceObject, "hasInserterItems", function() { return selectors_hasInserterItems; });
5164  __webpack_require__.d(selectors_namespaceObject, "__experimentalGetAllowedBlocks", function() { return selectors_experimentalGetAllowedBlocks; });
5165  __webpack_require__.d(selectors_namespaceObject, "getBlockListSettings", function() { return selectors_getBlockListSettings; });
5166  __webpack_require__.d(selectors_namespaceObject, "getSettings", function() { return selectors_getSettings; });
5167  __webpack_require__.d(selectors_namespaceObject, "isLastBlockChangePersistent", function() { return selectors_isLastBlockChangePersistent; });
5168  __webpack_require__.d(selectors_namespaceObject, "__experimentalGetBlockListSettingsForBlocks", function() { return selectors_experimentalGetBlockListSettingsForBlocks; });
5169  __webpack_require__.d(selectors_namespaceObject, "__experimentalGetParsedReusableBlock", function() { return __experimentalGetParsedReusableBlock; });
5170  __webpack_require__.d(selectors_namespaceObject, "__unstableIsLastBlockChangeIgnored", function() { return selectors_unstableIsLastBlockChangeIgnored; });
5171  __webpack_require__.d(selectors_namespaceObject, "__experimentalGetLastBlockAttributeChanges", function() { return __experimentalGetLastBlockAttributeChanges; });
5172  __webpack_require__.d(selectors_namespaceObject, "isNavigationMode", function() { return selectors_isNavigationMode; });
5173  __webpack_require__.d(selectors_namespaceObject, "didAutomaticChange", function() { return selectors_didAutomaticChange; });
5174  
5175  // EXTERNAL MODULE: external {"this":["wp","blocks"]}
5176  var external_this_wp_blocks_ = __webpack_require__(11);
5177  
5178  // EXTERNAL MODULE: external {"this":["wp","richText"]}
5179  var external_this_wp_richText_ = __webpack_require__(24);
5180  
5181  // EXTERNAL MODULE: external {"this":["wp","viewport"]}
5182  var external_this_wp_viewport_ = __webpack_require__(51);
5183  
5184  // EXTERNAL MODULE: external {"this":["wp","keyboardShortcuts"]}
5185  var external_this_wp_keyboardShortcuts_ = __webpack_require__(43);
5186  
5187  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread.js
5188  var objectSpread = __webpack_require__(6);
5189  
5190  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
5191  var esm_extends = __webpack_require__(12);
5192  
5193  // EXTERNAL MODULE: external {"this":["wp","element"]}
5194  var external_this_wp_element_ = __webpack_require__(0);
5195  
5196  // EXTERNAL MODULE: ./node_modules/classnames/index.js
5197  var classnames = __webpack_require__(10);
5198  var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
5199  
5200  // EXTERNAL MODULE: external {"this":"lodash"}
5201  var external_this_lodash_ = __webpack_require__(2);
5202  
5203  // EXTERNAL MODULE: external {"this":["wp","compose"]}
5204  var external_this_wp_compose_ = __webpack_require__(8);
5205  
5206  // EXTERNAL MODULE: external {"this":["wp","hooks"]}
5207  var external_this_wp_hooks_ = __webpack_require__(29);
5208  
5209  // EXTERNAL MODULE: external {"this":["wp","data"]}
5210  var external_this_wp_data_ = __webpack_require__(4);
5211  
5212  // EXTERNAL MODULE: ./node_modules/tinycolor2/tinycolor.js
5213  var tinycolor = __webpack_require__(49);
5214  var tinycolor_default = /*#__PURE__*/__webpack_require__.n(tinycolor);
5215  
5216  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors/utils.js
5217  /**
5218   * External dependencies
5219   */
5220  
5221  
5222  /**
5223   * Provided an array of color objects as set by the theme or by the editor defaults,
5224   * and the values of the defined color or custom color returns a color object describing the color.
5225   *
5226   * @param {Array}   colors       Array of color objects as set by the theme or by the editor defaults.
5227   * @param {?string} definedColor A string containing the color slug.
5228   * @param {?string} customColor  A string containing the customColor value.
5229   *
5230   * @return {?Object} If definedColor is passed and the name is found in colors,
5231   *                   the color object exactly as set by the theme or editor defaults is returned.
5232   *                   Otherwise, an object that just sets the color is defined.
5233   */
5234  
5235  var utils_getColorObjectByAttributeValues = function getColorObjectByAttributeValues(colors, definedColor, customColor) {
5236    if (definedColor) {
5237      var colorObj = Object(external_this_lodash_["find"])(colors, {
5238        slug: definedColor
5239      });
5240  
5241      if (colorObj) {
5242        return colorObj;
5243      }
5244    }
5245  
5246    return {
5247      color: customColor
5248    };
5249  };
5250  /**
5251   * Provided an array of color objects as set by the theme or by the editor defaults, and a color value returns the color object matching that value or undefined.
5252   *
5253   * @param {Array}   colors      Array of color objects as set by the theme or by the editor defaults.
5254   * @param {?string} colorValue  A string containing the color value.
5255   *
5256   * @return {?Object} Color object included in the colors array whose color property equals colorValue.
5257   *                   Returns undefined if no color object matches this requirement.
5258   */
5259  
5260  var utils_getColorObjectByColorValue = function getColorObjectByColorValue(colors, colorValue) {
5261    return Object(external_this_lodash_["find"])(colors, {
5262      color: colorValue
5263    });
5264  };
5265  /**
5266   * Returns a class based on the context a color is being used and its slug.
5267   *
5268   * @param {string} colorContextName Context/place where color is being used e.g: background, text etc...
5269   * @param {string} colorSlug        Slug of the color.
5270   *
5271   * @return {?string} String with the class corresponding to the color in the provided context.
5272   *                   Returns undefined if either colorContextName or colorSlug are not provided.
5273   */
5274  
5275  function getColorClassName(colorContextName, colorSlug) {
5276    if (!colorContextName || !colorSlug) {
5277      return undefined;
5278    }
5279  
5280    return "has-".concat(Object(external_this_lodash_["kebabCase"])(colorSlug), "-").concat(colorContextName);
5281  }
5282  /**
5283   * Given an array of color objects and a color value returns the color value of the most readable color in the array.
5284   *
5285   * @param {Array}   colors     Array of color objects as set by the theme or by the editor defaults.
5286   * @param {?string} colorValue A string containing the color value.
5287   *
5288   * @return {string} String with the color value of the most readable color.
5289   */
5290  
5291  function utils_getMostReadableColor(colors, colorValue) {
5292    return tinycolor_default.a.mostReadable(colorValue, Object(external_this_lodash_["map"])(colors, 'color')).toHexString();
5293  }
5294  
5295  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
5296  var classCallCheck = __webpack_require__(14);
5297  
5298  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
5299  var createClass = __webpack_require__(13);
5300  
5301  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
5302  var possibleConstructorReturn = __webpack_require__(15);
5303  
5304  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
5305  var getPrototypeOf = __webpack_require__(16);
5306  
5307  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
5308  var assertThisInitialized = __webpack_require__(7);
5309  
5310  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js + 1 modules
5311  var inherits = __webpack_require__(17);
5312  
5313  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
5314  var defineProperty = __webpack_require__(9);
5315  
5316  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors/with-colors.js
5317  
5318  
5319  
5320  
5321  
5322  
5323  
5324  
5325  
5326  
5327  
5328  /**
5329   * External dependencies
5330   */
5331  
5332  /**
5333   * WordPress dependencies
5334   */
5335  
5336  
5337  
5338  
5339  /**
5340   * Internal dependencies
5341   */
5342  
5343  
5344  var DEFAULT_COLORS = [];
5345  /**
5346   * Higher order component factory for injecting the `colorsArray` argument as
5347   * the colors prop in the `withCustomColors` HOC.
5348   *
5349   * @param {Array} colorsArray An array of color objects.
5350   *
5351   * @return {Function} The higher order component.
5352   */
5353  
5354  var with_colors_withCustomColorPalette = function withCustomColorPalette(colorsArray) {
5355    return Object(external_this_wp_compose_["createHigherOrderComponent"])(function (WrappedComponent) {
5356      return function (props) {
5357        return Object(external_this_wp_element_["createElement"])(WrappedComponent, Object(esm_extends["a" /* default */])({}, props, {
5358          colors: colorsArray
5359        }));
5360      };
5361    }, 'withCustomColorPalette');
5362  };
5363  /**
5364   * Higher order component factory for injecting the editor colors as the
5365   * `colors` prop in the `withColors` HOC.
5366   *
5367   * @return {Function} The higher order component.
5368   */
5369  
5370  
5371  var with_colors_withEditorColorPalette = function withEditorColorPalette() {
5372    return Object(external_this_wp_data_["withSelect"])(function (select) {
5373      var settings = select('core/block-editor').getSettings();
5374      return {
5375        colors: Object(external_this_lodash_["get"])(settings, ['colors'], DEFAULT_COLORS)
5376      };
5377    });
5378  };
5379  /**
5380   * Helper function used with `createHigherOrderComponent` to create
5381   * higher order components for managing color logic.
5382   *
5383   * @param {Array}    colorTypes       An array of color types (e.g. 'backgroundColor, borderColor).
5384   * @param {Function} withColorPalette A HOC for injecting the 'colors' prop into the WrappedComponent.
5385   *
5386   * @return {WPComponent} The component that can be used as a HOC.
5387   */
5388  
5389  
5390  function createColorHOC(colorTypes, withColorPalette) {
5391    var colorMap = Object(external_this_lodash_["reduce"])(colorTypes, function (colorObject, colorType) {
5392      return Object(objectSpread["a" /* default */])({}, colorObject, Object(external_this_lodash_["isString"])(colorType) ? Object(defineProperty["a" /* default */])({}, colorType, Object(external_this_lodash_["kebabCase"])(colorType)) : colorType);
5393    }, {});
5394    return Object(external_this_wp_compose_["compose"])([withColorPalette, function (WrappedComponent) {
5395      return (
5396        /*#__PURE__*/
5397        function (_Component) {
5398          Object(inherits["a" /* default */])(_class, _Component);
5399  
5400          function _class(props) {
5401            var _this;
5402  
5403            Object(classCallCheck["a" /* default */])(this, _class);
5404  
5405            _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(_class).call(this, props));
5406            _this.setters = _this.createSetters();
5407            _this.colorUtils = {
5408              getMostReadableColor: _this.getMostReadableColor.bind(Object(assertThisInitialized["a" /* default */])(_this))
5409            };
5410            _this.state = {};
5411            return _this;
5412          }
5413  
5414          Object(createClass["a" /* default */])(_class, [{
5415            key: "getMostReadableColor",
5416            value: function getMostReadableColor(colorValue) {
5417              var colors = this.props.colors;
5418              return utils_getMostReadableColor(colors, colorValue);
5419            }
5420          }, {
5421            key: "createSetters",
5422            value: function createSetters() {
5423              var _this2 = this;
5424  
5425              return Object(external_this_lodash_["reduce"])(colorMap, function (settersAccumulator, colorContext, colorAttributeName) {
5426                var upperFirstColorAttributeName = Object(external_this_lodash_["upperFirst"])(colorAttributeName);
5427                var customColorAttributeName = "custom".concat(upperFirstColorAttributeName);
5428                settersAccumulator["set".concat(upperFirstColorAttributeName)] = _this2.createSetColor(colorAttributeName, customColorAttributeName);
5429                return settersAccumulator;
5430              }, {});
5431            }
5432          }, {
5433            key: "createSetColor",
5434            value: function createSetColor(colorAttributeName, customColorAttributeName) {
5435              var _this3 = this;
5436  
5437              return function (colorValue) {
5438                var _this3$props$setAttri;
5439  
5440                var colorObject = utils_getColorObjectByColorValue(_this3.props.colors, colorValue);
5441  
5442                _this3.props.setAttributes((_this3$props$setAttri = {}, Object(defineProperty["a" /* default */])(_this3$props$setAttri, colorAttributeName, colorObject && colorObject.slug ? colorObject.slug : undefined), Object(defineProperty["a" /* default */])(_this3$props$setAttri, customColorAttributeName, colorObject && colorObject.slug ? undefined : colorValue), _this3$props$setAttri));
5443              };
5444            }
5445          }, {
5446            key: "render",
5447            value: function render() {
5448              return Object(external_this_wp_element_["createElement"])(WrappedComponent, Object(objectSpread["a" /* default */])({}, this.props, {
5449                colors: undefined
5450              }, this.state, this.setters, {
5451                colorUtils: this.colorUtils
5452              }));
5453            }
5454          }], [{
5455            key: "getDerivedStateFromProps",
5456            value: function getDerivedStateFromProps(_ref2, previousState) {
5457              var attributes = _ref2.attributes,
5458                  colors = _ref2.colors;
5459              return Object(external_this_lodash_["reduce"])(colorMap, function (newState, colorContext, colorAttributeName) {
5460                var colorObject = utils_getColorObjectByAttributeValues(colors, attributes[colorAttributeName], attributes["custom".concat(Object(external_this_lodash_["upperFirst"])(colorAttributeName))]);
5461                var previousColorObject = previousState[colorAttributeName];
5462                var previousColor = Object(external_this_lodash_["get"])(previousColorObject, ['color']);
5463                /**
5464                 * The "and previousColorObject" condition checks that a previous color object was already computed.
5465                 * At the start previousColorObject and colorValue are both equal to undefined
5466                 * bus as previousColorObject does not exist we should compute the object.
5467                 */
5468  
5469                if (previousColor === colorObject.color && previousColorObject) {
5470                  newState[colorAttributeName] = previousColorObject;
5471                } else {
5472                  newState[colorAttributeName] = Object(objectSpread["a" /* default */])({}, colorObject, {
5473                    class: getColorClassName(colorContext, colorObject.slug)
5474                  });
5475                }
5476  
5477                return newState;
5478              }, {});
5479            }
5480          }]);
5481  
5482          return _class;
5483        }(external_this_wp_element_["Component"])
5484      );
5485    }]);
5486  }
5487  /**
5488   * A higher-order component factory for creating a 'withCustomColors' HOC, which handles color logic
5489   * for class generation color value, retrieval and color attribute setting.
5490   *
5491   * Use this higher-order component to work with a custom set of colors.
5492   *
5493   * @example
5494   *
5495   * ```jsx
5496   * const CUSTOM_COLORS = [ { name: 'Red', slug: 'red', color: '#ff0000' }, { name: 'Blue', slug: 'blue', color: '#0000ff' } ];
5497   * const withCustomColors = createCustomColorsHOC( CUSTOM_COLORS );
5498   * // ...
5499   * export default compose(
5500   *     withCustomColors( 'backgroundColor', 'borderColor' ),
5501   *     MyColorfulComponent,
5502   * );
5503   * ```
5504   *
5505   * @param {Array} colorsArray The array of color objects (name, slug, color, etc... ).
5506   *
5507   * @return {Function} Higher-order component.
5508   */
5509  
5510  
5511  function createCustomColorsHOC(colorsArray) {
5512    return function () {
5513      var withColorPalette = with_colors_withCustomColorPalette(colorsArray);
5514  
5515      for (var _len = arguments.length, colorTypes = new Array(_len), _key = 0; _key < _len; _key++) {
5516        colorTypes[_key] = arguments[_key];
5517      }
5518  
5519      return Object(external_this_wp_compose_["createHigherOrderComponent"])(createColorHOC(colorTypes, withColorPalette), 'withCustomColors');
5520    };
5521  }
5522  /**
5523   * A higher-order component, which handles color logic for class generation color value, retrieval and color attribute setting.
5524   *
5525   * For use with the default editor/theme color palette.
5526   *
5527   * @example
5528   *
5529   * ```jsx
5530   * export default compose(
5531   *     withColors( 'backgroundColor', { textColor: 'color' } ),
5532   *     MyColorfulComponent,
5533   * );
5534   * ```
5535   *
5536   * @param {...(Object|string)} colorTypes The arguments can be strings or objects. If the argument is an object,
5537   *                                        it should contain the color attribute name as key and the color context as value.
5538   *                                        If the argument is a string the value should be the color attribute name,
5539   *                                        the color context is computed by applying a kebab case transform to the value.
5540   *                                        Color context represents the context/place where the color is going to be used.
5541   *                                        The class name of the color is generated using 'has' followed by the color name
5542   *                                        and ending with the color context all in kebab case e.g: has-green-background-color.
5543   *
5544   * @return {Function} Higher-order component.
5545   */
5546  
5547  function withColors() {
5548    var withColorPalette = with_colors_withEditorColorPalette();
5549  
5550    for (var _len2 = arguments.length, colorTypes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
5551      colorTypes[_key2] = arguments[_key2];
5552    }
5553  
5554    return Object(external_this_wp_compose_["createHigherOrderComponent"])(createColorHOC(colorTypes, withColorPalette), 'withColors');
5555  }
5556  
5557  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 2 modules
5558  var toConsumableArray = __webpack_require__(18);
5559  
5560  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
5561  var objectWithoutProperties = __webpack_require__(20);
5562  
5563  // EXTERNAL MODULE: ./node_modules/memize/index.js
5564  var memize = __webpack_require__(42);
5565  var memize_default = /*#__PURE__*/__webpack_require__.n(memize);
5566  
5567  // EXTERNAL MODULE: external {"this":["wp","i18n"]}
5568  var external_this_wp_i18n_ = __webpack_require__(1);
5569  
5570  // EXTERNAL MODULE: external {"this":["wp","components"]}
5571  var external_this_wp_components_ = __webpack_require__(3);
5572  
5573  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules
5574  var slicedToArray = __webpack_require__(22);
5575  
5576  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-edit/edit.js
5577  
5578  
5579  
5580  /**
5581   * External dependencies
5582   */
5583  
5584  /**
5585   * WordPress dependencies
5586   */
5587  
5588  
5589  
5590  var edit_Edit = function Edit(props) {
5591    var _props$attributes = props.attributes,
5592        attributes = _props$attributes === void 0 ? {} : _props$attributes,
5593        name = props.name;
5594    var blockType = Object(external_this_wp_blocks_["getBlockType"])(name);
5595  
5596    if (!blockType) {
5597      return null;
5598    } // Generate a class name for the block's editable form
5599  
5600  
5601    var generatedClassName = Object(external_this_wp_blocks_["hasBlockSupport"])(blockType, 'className', true) ? Object(external_this_wp_blocks_["getBlockDefaultClassName"])(name) : null;
5602    var className = classnames_default()(generatedClassName, attributes.className); // `edit` and `save` are functions or components describing the markup
5603    // with which a block is displayed. If `blockType` is valid, assign
5604    // them preferentially as the render value for the block.
5605  
5606    var Component = blockType.edit || blockType.save;
5607    return Object(external_this_wp_element_["createElement"])(Component, Object(esm_extends["a" /* default */])({}, props, {
5608      className: className
5609    }));
5610  };
5611  /* harmony default export */ var edit = (Object(external_this_wp_components_["withFilters"])('editor.BlockEdit')(edit_Edit));
5612  
5613  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-edit/context.js
5614  
5615  
5616  
5617  /**
5618   * External dependencies
5619   */
5620  
5621  /**
5622   * WordPress dependencies
5623   */
5624  
5625  
5626  
5627  var Context = Object(external_this_wp_element_["createContext"])({
5628    name: '',
5629    isSelected: false,
5630    focusedElement: null,
5631    setFocusedElement: external_this_lodash_["noop"],
5632    clientId: null
5633  });
5634  var Provider = Context.Provider,
5635      Consumer = Context.Consumer;
5636  
5637  /**
5638   * A hook that returns the block edit context.
5639   *
5640   * @return {Object} Block edit context
5641   */
5642  
5643  function useBlockEditContext() {
5644    return Object(external_this_wp_element_["useContext"])(Context);
5645  }
5646  /**
5647   * A Higher Order Component used to inject BlockEdit context to the
5648   * wrapped component.
5649   *
5650   * @param {Function} mapContextToProps Function called on every context change,
5651   *                                     expected to return object of props to
5652   *                                     merge with the component's own props.
5653   *
5654   * @return {WPComponent} Enhanced component with injected context as props.
5655   */
5656  
5657  var context_withBlockEditContext = function withBlockEditContext(mapContextToProps) {
5658    return Object(external_this_wp_compose_["createHigherOrderComponent"])(function (OriginalComponent) {
5659      return function (props) {
5660        return Object(external_this_wp_element_["createElement"])(Consumer, null, function (context) {
5661          return Object(external_this_wp_element_["createElement"])(OriginalComponent, Object(esm_extends["a" /* default */])({}, props, mapContextToProps(context, props)));
5662        });
5663      };
5664    }, 'withBlockEditContext');
5665  };
5666  /**
5667   * A Higher Order Component used to render conditionally the wrapped
5668   * component only when the BlockEdit has selected state set.
5669   *
5670   * @param {WPComponent} OriginalComponent Component to wrap.
5671   *
5672   * @return {WPComponent} Component which renders only when the BlockEdit is selected.
5673   */
5674  
5675  var ifBlockEditSelected = Object(external_this_wp_compose_["createHigherOrderComponent"])(function (OriginalComponent) {
5676    return function (props) {
5677      return Object(external_this_wp_element_["createElement"])(Consumer, null, function (_ref) {
5678        var isSelected = _ref.isSelected;
5679        return isSelected && Object(external_this_wp_element_["createElement"])(OriginalComponent, props);
5680      });
5681    };
5682  }, 'ifBlockEditSelected');
5683  
5684  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-edit/index.js
5685  
5686  
5687  
5688  
5689  
5690  
5691  
5692  
5693  /**
5694   * External dependencies
5695   */
5696  
5697  /**
5698   * WordPress dependencies
5699   */
5700  
5701  
5702  /**
5703   * Internal dependencies
5704   */
5705  
5706  
5707  
5708  
5709  var block_edit_BlockEdit =
5710  /*#__PURE__*/
5711  function (_Component) {
5712    Object(inherits["a" /* default */])(BlockEdit, _Component);
5713  
5714    function BlockEdit() {
5715      var _this;
5716  
5717      Object(classCallCheck["a" /* default */])(this, BlockEdit);
5718  
5719      _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockEdit).apply(this, arguments)); // It is important to return the same object if props haven't changed
5720      // to avoid  unnecessary rerenders.
5721      // See https://reactjs.org/docs/context.html#caveats.
5722  
5723      _this.propsToContext = memize_default()(_this.propsToContext.bind(Object(assertThisInitialized["a" /* default */])(_this)), {
5724        maxSize: 1
5725      });
5726      return _this;
5727    }
5728  
5729    Object(createClass["a" /* default */])(BlockEdit, [{
5730      key: "propsToContext",
5731      value: function propsToContext(name, isSelected, clientId, onFocus, onCaretVerticalPositionChange) {
5732        return {
5733          name: name,
5734          isSelected: isSelected,
5735          clientId: clientId,
5736          onFocus: onFocus,
5737          onCaretVerticalPositionChange: onCaretVerticalPositionChange
5738        };
5739      }
5740    }, {
5741      key: "render",
5742      value: function render() {
5743        var _this$props = this.props,
5744            name = _this$props.name,
5745            isSelected = _this$props.isSelected,
5746            clientId = _this$props.clientId,
5747            onFocus = _this$props.onFocus,
5748            onCaretVerticalPositionChange = _this$props.onCaretVerticalPositionChange;
5749        var value = this.propsToContext(name, isSelected, clientId, onFocus, onCaretVerticalPositionChange);
5750        return Object(external_this_wp_element_["createElement"])(Provider, {
5751          value: value
5752        }, Object(external_this_wp_element_["createElement"])(edit, this.props));
5753      }
5754    }]);
5755  
5756    return BlockEdit;
5757  }(external_this_wp_element_["Component"]);
5758  
5759  /* harmony default export */ var block_edit = (block_edit_BlockEdit);
5760  
5761  
5762  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/gradients/index.js
5763  
5764  
5765  /**
5766   * External dependencies
5767   */
5768  
5769  /**
5770   * WordPress dependencies
5771   */
5772  
5773  
5774  
5775  /**
5776   * Internal dependencies
5777   */
5778  
5779  
5780  function __experimentalGetGradientClass(gradientSlug) {
5781    if (!gradientSlug) {
5782      return undefined;
5783    }
5784  
5785    return "has-".concat(gradientSlug, "-gradient-background");
5786  }
5787  
5788  function getGradientValueBySlug(gradients, slug) {
5789    var gradient = Object(external_this_lodash_["find"])(gradients, ['slug', slug]);
5790    return gradient && gradient.gradient;
5791  }
5792  
5793  function __experimentalGetGradientObjectByGradientValue(gradients, value) {
5794    var gradient = Object(external_this_lodash_["find"])(gradients, ['gradient', value]);
5795    return gradient;
5796  }
5797  
5798  function getGradientSlugByValue(gradients, value) {
5799    var gradient = __experimentalGetGradientObjectByGradientValue(gradients, value);
5800  
5801    return gradient && gradient.slug;
5802  }
5803  
5804  function __experimentalUseGradient() {
5805    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
5806        _ref$gradientAttribut = _ref.gradientAttribute,
5807        gradientAttribute = _ref$gradientAttribut === void 0 ? 'gradient' : _ref$gradientAttribut,
5808        _ref$customGradientAt = _ref.customGradientAttribute,
5809        customGradientAttribute = _ref$customGradientAt === void 0 ? 'customGradient' : _ref$customGradientAt;
5810  
5811    var _useBlockEditContext = useBlockEditContext(),
5812        clientId = _useBlockEditContext.clientId;
5813  
5814    var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) {
5815      var _select = select('core/block-editor'),
5816          getBlockAttributes = _select.getBlockAttributes,
5817          getSettings = _select.getSettings;
5818  
5819      var attributes = getBlockAttributes(clientId);
5820      return {
5821        gradient: attributes[gradientAttribute],
5822        customGradient: attributes[customGradientAttribute],
5823        gradients: getSettings().gradients
5824      };
5825    }, [clientId, gradientAttribute, customGradientAttribute]),
5826        gradients = _useSelect.gradients,
5827        gradient = _useSelect.gradient,
5828        customGradient = _useSelect.customGradient;
5829  
5830    var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/block-editor'),
5831        updateBlockAttributes = _useDispatch.updateBlockAttributes;
5832  
5833    var setGradient = Object(external_this_wp_element_["useCallback"])(function (newGradientValue) {
5834      var _updateBlockAttribute2;
5835  
5836      var slug = getGradientSlugByValue(gradients, newGradientValue);
5837  
5838      if (slug) {
5839        var _updateBlockAttribute;
5840  
5841        updateBlockAttributes(clientId, (_updateBlockAttribute = {}, Object(defineProperty["a" /* default */])(_updateBlockAttribute, gradientAttribute, slug), Object(defineProperty["a" /* default */])(_updateBlockAttribute, customGradientAttribute, undefined), _updateBlockAttribute));
5842        return;
5843      }
5844  
5845      updateBlockAttributes(clientId, (_updateBlockAttribute2 = {}, Object(defineProperty["a" /* default */])(_updateBlockAttribute2, gradientAttribute, undefined), Object(defineProperty["a" /* default */])(_updateBlockAttribute2, customGradientAttribute, newGradientValue), _updateBlockAttribute2));
5846    }, [gradients, clientId, updateBlockAttributes]);
5847  
5848    var gradientClass = __experimentalGetGradientClass(gradient);
5849  
5850    var gradientValue;
5851  
5852    if (gradient) {
5853      gradientValue = getGradientValueBySlug(gradients, gradient);
5854    } else {
5855      gradientValue = customGradient;
5856    }
5857  
5858    return {
5859      gradientClass: gradientClass,
5860      gradientValue: gradientValue,
5861      setGradient: setGradient
5862    };
5863  }
5864  
5865  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors-gradients/control.js
5866  
5867  
5868  
5869  
5870  
5871  /**
5872   * External dependencies
5873   */
5874  
5875  
5876  /**
5877   * WordPress dependencies
5878   */
5879  
5880  
5881  
5882  
5883  
5884  /**
5885   * Internal dependencies
5886   */
5887  
5888  
5889   // translators: first %s: the color name or value (e.g. red or #ff0000)
5890  
5891  var colorIndicatorAriaLabel = Object(external_this_wp_i18n_["__"])('(Color: %s)'); // translators: first %s: the gradient name or value (e.g. red to green or linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)
5892  
5893  
5894  var gradientIndicatorAriaLabel = Object(external_this_wp_i18n_["__"])('(Gradient: %s)');
5895  
5896  var colorsAndGradientKeys = ['colors', 'disableCustomColors', 'gradients', 'disableCustomGradients'];
5897  
5898  function VisualLabel(_ref) {
5899    var colors = _ref.colors,
5900        gradients = _ref.gradients,
5901        label = _ref.label,
5902        currentTab = _ref.currentTab,
5903        colorValue = _ref.colorValue,
5904        gradientValue = _ref.gradientValue;
5905    var value, ariaLabel;
5906  
5907    if (currentTab === 'color') {
5908      if (colorValue) {
5909        value = colorValue;
5910        var colorObject = utils_getColorObjectByColorValue(colors, value);
5911        var colorName = colorObject && colorObject.name;
5912        ariaLabel = Object(external_this_wp_i18n_["sprintf"])(colorIndicatorAriaLabel, colorName || value);
5913      }
5914    } else if (currentTab === 'gradient' && gradientValue) {
5915      value = gradientValue;
5916  
5917      var gradientObject = __experimentalGetGradientObjectByGradientValue(gradients, value);
5918  
5919      var gradientName = gradientObject && gradientObject.name;
5920      ariaLabel = Object(external_this_wp_i18n_["sprintf"])(gradientIndicatorAriaLabel, gradientName || value);
5921    }
5922  
5923    return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, label, !!value && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ColorIndicator"], {
5924      colorValue: value,
5925      "aria-label": ariaLabel
5926    }));
5927  }
5928  
5929  function ColorGradientControlInner(_ref2) {
5930    var colors = _ref2.colors,
5931        gradients = _ref2.gradients,
5932        disableCustomColors = _ref2.disableCustomColors,
5933        disableCustomGradients = _ref2.disableCustomGradients,
5934        className = _ref2.className,
5935        label = _ref2.label,
5936        onColorChange = _ref2.onColorChange,
5937        onGradientChange = _ref2.onGradientChange,
5938        colorValue = _ref2.colorValue,
5939        gradientValue = _ref2.gradientValue;
5940    var canChooseAColor = onColorChange && (!Object(external_this_lodash_["isEmpty"])(colors) || !disableCustomColors);
5941    var canChooseAGradient = onGradientChange && (!Object(external_this_lodash_["isEmpty"])(gradients) || !disableCustomGradients);
5942  
5943    var _useState = Object(external_this_wp_element_["useState"])(gradientValue ? 'gradient' : !!canChooseAColor && 'color'),
5944        _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2),
5945        currentTab = _useState2[0],
5946        setCurrentTab = _useState2[1];
5947  
5948    if (!canChooseAColor && !canChooseAGradient) {
5949      return null;
5950    }
5951  
5952    return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["BaseControl"], {
5953      className: classnames_default()('block-editor-color-gradient-control', className)
5954    }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["BaseControl"].VisualLabel, null, Object(external_this_wp_element_["createElement"])(VisualLabel, {
5955      currentTab: currentTab,
5956      label: label,
5957      colorValue: colorValue,
5958      gradientValue: gradientValue
5959    })), canChooseAColor && canChooseAGradient && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ButtonGroup"], {
5960      className: "block-editor-color-gradient-control__button-tabs"
5961    }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
5962      isLarge: true,
5963      isPrimary: currentTab === 'color',
5964      isSecondary: currentTab !== 'color',
5965      onClick: function onClick() {
5966        return setCurrentTab('color');
5967      }
5968    }, Object(external_this_wp_i18n_["__"])('Solid Color')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
5969      isLarge: true,
5970      isPrimary: currentTab === 'gradient',
5971      isSecondary: currentTab !== 'gradient',
5972      onClick: function onClick() {
5973        return setCurrentTab('gradient');
5974      }
5975    }, Object(external_this_wp_i18n_["__"])('Gradient'))), currentTab === 'color' && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ColorPalette"], Object(esm_extends["a" /* default */])({
5976      value: colorValue,
5977      onChange: canChooseAGradient ? function (newColor) {
5978        onColorChange(newColor);
5979        onGradientChange();
5980      } : onColorChange
5981    }, {
5982      colors: colors,
5983      disableCustomColors: disableCustomColors
5984    })), currentTab === 'gradient' && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["__experimentalGradientPicker"], Object(esm_extends["a" /* default */])({
5985      value: gradientValue,
5986      onChange: canChooseAColor ? function (newGradient) {
5987        onGradientChange(newGradient);
5988        onColorChange();
5989      } : onGradientChange
5990    }, {
5991      gradients: gradients,
5992      disableCustomGradients: disableCustomGradients
5993    })));
5994  }
5995  
5996  function ColorGradientControlSelect(props) {
5997    var colorGradientSettings = Object(external_this_wp_data_["useSelect"])(function (select) {
5998      var settings = select('core/block-editor').getSettings();
5999      return Object(external_this_lodash_["pick"])(settings, colorsAndGradientKeys);
6000    });
6001    return Object(external_this_wp_element_["createElement"])(ColorGradientControlInner, Object(objectSpread["a" /* default */])({}, colorGradientSettings, props));
6002  }
6003  
6004  function ColorGradientControl(props) {
6005    if (Object(external_this_lodash_["every"])(colorsAndGradientKeys, function (key) {
6006      return props.hasOwnProperty(key);
6007    })) {
6008      return Object(external_this_wp_element_["createElement"])(ColorGradientControlInner, props);
6009    }
6010  
6011    return Object(external_this_wp_element_["createElement"])(ColorGradientControlSelect, props);
6012  }
6013  
6014  /* harmony default export */ var colors_gradients_control = (ColorGradientControl);
6015  
6016  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors-gradients/panel-color-gradient-settings.js
6017  
6018  
6019  
6020  
6021  
6022  /**
6023   * External dependencies
6024   */
6025  
6026  
6027  /**
6028   * WordPress dependencies
6029   */
6030  
6031  
6032  
6033  
6034  /**
6035   * Internal dependencies
6036   */
6037  
6038  
6039  
6040   // translators: first %s: The type of color or gradient (e.g. background, overlay...), second %s: the color name or value (e.g. red or #ff0000)
6041  
6042  var panel_color_gradient_settings_colorIndicatorAriaLabel = Object(external_this_wp_i18n_["__"])('(%s: color %s)'); // translators: first %s: The type of color or gradient (e.g. background, overlay...), second %s: the color name or value (e.g. red or #ff0000)
6043  
6044  
6045  var panel_color_gradient_settings_gradientIndicatorAriaLabel = Object(external_this_wp_i18n_["__"])('(%s: gradient %s)');
6046  
6047  var panel_color_gradient_settings_colorsAndGradientKeys = ['colors', 'disableCustomColors', 'gradients', 'disableCustomGradients'];
6048  
6049  var panel_color_gradient_settings_Indicators = function Indicators(_ref) {
6050    var colors = _ref.colors,
6051        gradients = _ref.gradients,
6052        settings = _ref.settings;
6053    return settings.map(function (_ref2, index) {
6054      var colorValue = _ref2.colorValue,
6055          gradientValue = _ref2.gradientValue,
6056          label = _ref2.label,
6057          availableColors = _ref2.colors,
6058          availableGradients = _ref2.gradients;
6059  
6060      if (!colorValue && !gradientValue) {
6061        return null;
6062      }
6063  
6064      var ariaLabel;
6065  
6066      if (colorValue) {
6067        var colorObject = utils_getColorObjectByColorValue(availableColors || colors, colorValue);
6068        ariaLabel = Object(external_this_wp_i18n_["sprintf"])(panel_color_gradient_settings_colorIndicatorAriaLabel, label.toLowerCase(), colorObject && colorObject.name || colorValue);
6069      } else {
6070        var gradientObject = __experimentalGetGradientObjectByGradientValue(availableGradients || gradients, colorValue);
6071  
6072        ariaLabel = Object(external_this_wp_i18n_["sprintf"])(panel_color_gradient_settings_gradientIndicatorAriaLabel, label.toLowerCase(), gradientObject && gradientObject.name || gradientValue);
6073      }
6074  
6075      return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ColorIndicator"], {
6076        key: index,
6077        colorValue: colorValue || gradientValue,
6078        "aria-label": ariaLabel
6079      });
6080    });
6081  };
6082  
6083  var panel_color_gradient_settings_PanelColorGradientSettingsInner = function PanelColorGradientSettingsInner(_ref3) {
6084    var className = _ref3.className,
6085        colors = _ref3.colors,
6086        gradients = _ref3.gradients,
6087        disableCustomColors = _ref3.disableCustomColors,
6088        disableCustomGradients = _ref3.disableCustomGradients,
6089        children = _ref3.children,
6090        settings = _ref3.settings,
6091        title = _ref3.title,
6092        props = Object(objectWithoutProperties["a" /* default */])(_ref3, ["className", "colors", "gradients", "disableCustomColors", "disableCustomGradients", "children", "settings", "title"]);
6093  
6094    if (Object(external_this_lodash_["isEmpty"])(colors) && Object(external_this_lodash_["isEmpty"])(gradients) && disableCustomColors && disableCustomGradients && Object(external_this_lodash_["every"])(settings, function (setting) {
6095      return Object(external_this_lodash_["isEmpty"])(setting.colors) && Object(external_this_lodash_["isEmpty"])(setting.gradients) && (setting.disableCustomColors === undefined || setting.disableCustomColors) && (setting.disableCustomGradients === undefined || setting.disableCustomGradients);
6096    })) {
6097      return null;
6098    }
6099  
6100    var titleElement = Object(external_this_wp_element_["createElement"])("span", {
6101      className: "block-editor-panel-color-gradient-settings__panel-title"
6102    }, title, Object(external_this_wp_element_["createElement"])(panel_color_gradient_settings_Indicators, {
6103      colors: colors,
6104      gradients: gradients,
6105      settings: settings
6106    }));
6107    return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], Object(esm_extends["a" /* default */])({
6108      className: classnames_default()('block-editor-panel-color-gradient-settings', className),
6109      title: titleElement
6110    }, props), settings.map(function (setting, index) {
6111      return Object(external_this_wp_element_["createElement"])(colors_gradients_control, Object(esm_extends["a" /* default */])({
6112        key: index
6113      }, Object(objectSpread["a" /* default */])({
6114        colors: colors,
6115        gradients: gradients,
6116        disableCustomColors: disableCustomColors,
6117        disableCustomGradients: disableCustomGradients
6118      }, setting)));
6119    }), children);
6120  };
6121  
6122  var panel_color_gradient_settings_PanelColorGradientSettingsSelect = function PanelColorGradientSettingsSelect(props) {
6123    var colorGradientSettings = Object(external_this_wp_data_["useSelect"])(function (select) {
6124      var settings = select('core/block-editor').getSettings();
6125      return Object(external_this_lodash_["pick"])(settings, panel_color_gradient_settings_colorsAndGradientKeys);
6126    });
6127    return Object(external_this_wp_element_["createElement"])(panel_color_gradient_settings_PanelColorGradientSettingsInner, Object(objectSpread["a" /* default */])({}, colorGradientSettings, props));
6128  };
6129  
6130  var panel_color_gradient_settings_PanelColorGradientSettings = function PanelColorGradientSettings(props) {
6131    if (Object(external_this_lodash_["every"])(panel_color_gradient_settings_colorsAndGradientKeys, function (key) {
6132      return props.hasOwnProperty(key);
6133    })) {
6134      return Object(external_this_wp_element_["createElement"])(panel_color_gradient_settings_PanelColorGradientSettingsInner, props);
6135    }
6136  
6137    return Object(external_this_wp_element_["createElement"])(panel_color_gradient_settings_PanelColorGradientSettingsSelect, props);
6138  };
6139  
6140  /* harmony default export */ var panel_color_gradient_settings = (panel_color_gradient_settings_PanelColorGradientSettings);
6141  
6142  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/panel-color-settings/index.js
6143  
6144  
6145  
6146  
6147  
6148  /**
6149   * Internal dependencies
6150   */
6151  
6152  
6153  var panel_color_settings_PanelColorSettings = function PanelColorSettings(_ref) {
6154    var colorSettings = _ref.colorSettings,
6155        props = Object(objectWithoutProperties["a" /* default */])(_ref, ["colorSettings"]);
6156  
6157    var settings = colorSettings.map(function (_ref2) {
6158      var value = _ref2.value,
6159          onChange = _ref2.onChange,
6160          otherSettings = Object(objectWithoutProperties["a" /* default */])(_ref2, ["value", "onChange"]);
6161  
6162      return Object(objectSpread["a" /* default */])({}, otherSettings, {
6163        colorValue: value,
6164        onColorChange: onChange
6165      });
6166    });
6167    return Object(external_this_wp_element_["createElement"])(panel_color_gradient_settings, Object(esm_extends["a" /* default */])({
6168      settings: settings,
6169      gradients: [],
6170      disableCustomGradients: true
6171    }, props));
6172  };
6173  
6174  /* harmony default export */ var panel_color_settings = (panel_color_settings_PanelColorSettings);
6175  
6176  // EXTERNAL MODULE: external {"this":["wp","a11y"]}
6177  var external_this_wp_a11y_ = __webpack_require__(45);
6178  
6179  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/contrast-checker/index.js
6180  
6181  
6182  /**
6183   * External dependencies
6184   */
6185  
6186  /**
6187   * WordPress dependencies
6188   */
6189  
6190  
6191  
6192  
6193  
6194  
6195  function ContrastCheckerMessage(_ref) {
6196    var tinyBackgroundColor = _ref.tinyBackgroundColor,
6197        tinyTextColor = _ref.tinyTextColor,
6198        backgroundColor = _ref.backgroundColor,
6199        textColor = _ref.textColor;
6200    var msg = tinyBackgroundColor.getBrightness() < tinyTextColor.getBrightness() ? Object(external_this_wp_i18n_["__"])('This color combination may be hard for people to read. Try using a darker background color and/or a brighter text color.') : Object(external_this_wp_i18n_["__"])('This color combination may be hard for people to read. Try using a brighter background color and/or a darker text color.');
6201    Object(external_this_wp_element_["useEffect"])(function () {
6202      Object(external_this_wp_a11y_["speak"])(Object(external_this_wp_i18n_["__"])('This color combination may be hard for people to read.'));
6203    }, [backgroundColor, textColor]);
6204    return Object(external_this_wp_element_["createElement"])("div", {
6205      className: "block-editor-contrast-checker"
6206    }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Notice"], {
6207      status: "warning",
6208      isDismissible: false
6209    }, msg));
6210  }
6211  
6212  function ContrastChecker(_ref2) {
6213    var backgroundColor = _ref2.backgroundColor,
6214        fallbackBackgroundColor = _ref2.fallbackBackgroundColor,
6215        fallbackTextColor = _ref2.fallbackTextColor,
6216        fontSize = _ref2.fontSize,
6217        isLargeText = _ref2.isLargeText,
6218        textColor = _ref2.textColor;
6219  
6220    if (!(backgroundColor || fallbackBackgroundColor) || !(textColor || fallbackTextColor)) {
6221      return null;
6222    }
6223  
6224    var tinyBackgroundColor = tinycolor_default()(backgroundColor || fallbackBackgroundColor);
6225    var tinyTextColor = tinycolor_default()(textColor || fallbackTextColor);
6226    var hasTransparency = tinyBackgroundColor.getAlpha() !== 1 || tinyTextColor.getAlpha() !== 1;
6227  
6228    if (hasTransparency || tinycolor_default.a.isReadable(tinyBackgroundColor, tinyTextColor, {
6229      level: 'AA',
6230      size: isLargeText || isLargeText !== false && fontSize >= 24 ? 'large' : 'small'
6231    })) {
6232      return null;
6233    }
6234  
6235    return Object(external_this_wp_element_["createElement"])(ContrastCheckerMessage, {
6236      backgroundColor: backgroundColor,
6237      textColor: textColor,
6238      tinyBackgroundColor: tinyBackgroundColor,
6239      tinyTextColor: tinyTextColor
6240    });
6241  }
6242  
6243  /* harmony default export */ var contrast_checker = (ContrastChecker);
6244  
6245  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inspector-controls/index.js
6246  /**
6247   * WordPress dependencies
6248   */
6249  
6250  /**
6251   * Internal dependencies
6252   */
6253  
6254  
6255  
6256  var _createSlotFill = Object(external_this_wp_components_["createSlotFill"])('InspectorControls'),
6257      Fill = _createSlotFill.Fill,
6258      Slot = _createSlotFill.Slot;
6259  
6260  var InspectorControls = ifBlockEditSelected(Fill);
6261  InspectorControls.Slot = Slot;
6262  /**
6263   * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/inspector-controls/README.md
6264   */
6265  
6266  /* harmony default export */ var inspector_controls = (InspectorControls);
6267  
6268  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors/use-colors.js
6269  
6270  
6271  
6272  
6273  
6274  
6275  
6276  /**
6277   * External dependencies
6278   */
6279  
6280  
6281  
6282  /**
6283   * WordPress dependencies
6284   */
6285  
6286  
6287  
6288  
6289  
6290  /**
6291   * Internal dependencies
6292   */
6293  
6294  
6295  
6296  
6297  
6298  /**
6299   * Browser dependencies
6300   */
6301  
6302  var _window = window,
6303      getComputedStyle = _window.getComputedStyle,
6304      Node = _window.Node;
6305  var use_colors_DEFAULT_COLORS = [];
6306  
6307  var resolveContrastCheckerColor = function resolveContrastCheckerColor(color, colorSettings, detectedColor) {
6308    if (typeof color === 'function') {
6309      return color(colorSettings);
6310    } else if (color === true) {
6311      return detectedColor;
6312    }
6313  
6314    return color;
6315  };
6316  
6317  var use_colors_ColorPanel = function ColorPanel(_ref) {
6318    var title = _ref.title,
6319        colorSettings = _ref.colorSettings,
6320        colorPanelProps = _ref.colorPanelProps,
6321        contrastCheckers = _ref.contrastCheckers,
6322        detectedBackgroundColorRef = _ref.detectedBackgroundColorRef,
6323        detectedColorRef = _ref.detectedColorRef,
6324        panelChildren = _ref.panelChildren;
6325    return Object(external_this_wp_element_["createElement"])(panel_color_settings, Object(esm_extends["a" /* default */])({
6326      title: title,
6327      initialOpen: false,
6328      colorSettings: Object.values(colorSettings)
6329    }, colorPanelProps), contrastCheckers && (Array.isArray(contrastCheckers) ? contrastCheckers.map(function (_ref2) {
6330      var backgroundColor = _ref2.backgroundColor,
6331          textColor = _ref2.textColor,
6332          rest = Object(objectWithoutProperties["a" /* default */])(_ref2, ["backgroundColor", "textColor"]);
6333  
6334      backgroundColor = resolveContrastCheckerColor(backgroundColor, colorSettings, detectedBackgroundColorRef.current);
6335      textColor = resolveContrastCheckerColor(textColor, colorSettings, detectedColorRef.current);
6336      return Object(external_this_wp_element_["createElement"])(contrast_checker, Object(esm_extends["a" /* default */])({
6337        key: "".concat(backgroundColor, "-").concat(textColor),
6338        backgroundColor: backgroundColor,
6339        textColor: textColor
6340      }, rest));
6341    }) : Object(external_this_lodash_["map"])(colorSettings, function (_ref3) {
6342      var value = _ref3.value;
6343      var backgroundColor = contrastCheckers.backgroundColor,
6344          textColor = contrastCheckers.textColor;
6345      backgroundColor = resolveContrastCheckerColor(backgroundColor || value, colorSettings, detectedBackgroundColorRef.current);
6346      textColor = resolveContrastCheckerColor(textColor || value, colorSettings, detectedColorRef.current);
6347      return Object(external_this_wp_element_["createElement"])(contrast_checker, Object(esm_extends["a" /* default */])({}, contrastCheckers, {
6348        key: "".concat(backgroundColor, "-").concat(textColor),
6349        backgroundColor: backgroundColor,
6350        textColor: textColor
6351      }));
6352    })), typeof panelChildren === 'function' ? panelChildren(colorSettings) : panelChildren);
6353  };
6354  
6355  var use_colors_InspectorControlsColorPanel = function InspectorControlsColorPanel(props) {
6356    return Object(external_this_wp_element_["createElement"])(inspector_controls, null, Object(external_this_wp_element_["createElement"])(use_colors_ColorPanel, props));
6357  };
6358  
6359  function __experimentalUseColors(colorConfigs) {
6360    var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
6361      panelTitle: Object(external_this_wp_i18n_["__"])('Color Settings')
6362    },
6363        _ref4$panelTitle = _ref4.panelTitle,
6364        panelTitle = _ref4$panelTitle === void 0 ? Object(external_this_wp_i18n_["__"])('Color Settings') : _ref4$panelTitle,
6365        colorPanelProps = _ref4.colorPanelProps,
6366        contrastCheckers = _ref4.contrastCheckers,
6367        panelChildren = _ref4.panelChildren;
6368  
6369    var deps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
6370  
6371    var _useBlockEditContext = useBlockEditContext(),
6372        clientId = _useBlockEditContext.clientId;
6373  
6374    var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) {
6375      var _select = select('core/block-editor'),
6376          getBlockAttributes = _select.getBlockAttributes,
6377          getSettings = _select.getSettings;
6378  
6379      var colors = getSettings().colors;
6380      return {
6381        attributes: getBlockAttributes(clientId),
6382        settingsColors: !colors || colors === true ? use_colors_DEFAULT_COLORS : colors
6383      };
6384    }, [clientId]),
6385        attributes = _useSelect.attributes,
6386        settingsColors = _useSelect.settingsColors;
6387  
6388    var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/block-editor'),
6389        updateBlockAttributes = _useDispatch.updateBlockAttributes;
6390  
6391    var setAttributes = Object(external_this_wp_element_["useCallback"])(function (newAttributes) {
6392      return updateBlockAttributes(clientId, newAttributes);
6393    }, [updateBlockAttributes, clientId]);
6394    var createComponent = Object(external_this_wp_element_["useMemo"])(function () {
6395      return memize_default()(function (name, property, className, color, colorValue, customColor) {
6396        return function (_ref5) {
6397          var children = _ref5.children,
6398              _ref5$className = _ref5.className,
6399              componentClassName = _ref5$className === void 0 ? '' : _ref5$className,
6400              _ref5$style = _ref5.style,
6401              componentStyle = _ref5$style === void 0 ? {} : _ref5$style;
6402          return (// Clone children, setting the style property from the color configuration,
6403            // if not already set explicitly through props.
6404            external_this_wp_element_["Children"].map(children, function (child) {
6405              var _classnames;
6406  
6407              var colorStyle = {};
6408  
6409              if (color) {
6410                colorStyle = Object(defineProperty["a" /* default */])({}, property, colorValue);
6411              } else if (customColor) {
6412                colorStyle = Object(defineProperty["a" /* default */])({}, property, customColor);
6413              }
6414  
6415              return Object(external_this_wp_element_["cloneElement"])(child, {
6416                className: classnames_default()(componentClassName, child.props.className, (_classnames = {}, Object(defineProperty["a" /* default */])(_classnames, "has-".concat(Object(external_this_lodash_["kebabCase"])(color), "-").concat(Object(external_this_lodash_["kebabCase"])(property)), color), Object(defineProperty["a" /* default */])(_classnames, className || "has-".concat(Object(external_this_lodash_["kebabCase"])(name)), color || customColor), _classnames)),
6417                style: Object(objectSpread["a" /* default */])({}, colorStyle, componentStyle, child.props.style || {})
6418              });
6419            })
6420          );
6421        };
6422      }, {
6423        maxSize: colorConfigs.length
6424      });
6425    }, [colorConfigs.length]);
6426    var createSetColor = Object(external_this_wp_element_["useMemo"])(function () {
6427      return memize_default()(function (name, colors) {
6428        return function (newColor) {
6429          var color = colors.find(function (_color) {
6430            return _color.color === newColor;
6431          });
6432          setAttributes(Object(defineProperty["a" /* default */])({}, color ? Object(external_this_lodash_["camelCase"])("custom ".concat(name)) : name, undefined));
6433          setAttributes(Object(defineProperty["a" /* default */])({}, color ? name : Object(external_this_lodash_["camelCase"])("custom ".concat(name)), color ? color.slug : newColor));
6434        };
6435      }, {
6436        maxSize: colorConfigs.length
6437      });
6438    }, [setAttributes, colorConfigs.length]);
6439    var detectedBackgroundColorRef = Object(external_this_wp_element_["useRef"])();
6440    var detectedColorRef = Object(external_this_wp_element_["useRef"])();
6441    var ColorDetector = Object(external_this_wp_element_["useMemo"])(function () {
6442      if (!contrastCheckers) {
6443        return undefined;
6444      }
6445  
6446      var needsBackgroundColor = false;
6447      var needsColor = false;
6448      var _iteratorNormalCompletion = true;
6449      var _didIteratorError = false;
6450      var _iteratorError = undefined;
6451  
6452      try {
6453        for (var _iterator = Object(external_this_lodash_["castArray"])(contrastCheckers)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
6454          var _ref8 = _step.value;
6455          var backgroundColor = _ref8.backgroundColor,
6456              textColor = _ref8.textColor;
6457  
6458          if (!needsBackgroundColor) {
6459            needsBackgroundColor = backgroundColor === true;
6460          }
6461  
6462          if (!needsColor) {
6463            needsColor = textColor === true;
6464          }
6465  
6466          if (needsBackgroundColor && needsColor) {
6467            break;
6468          }
6469        }
6470      } catch (err) {
6471        _didIteratorError = true;
6472        _iteratorError = err;
6473      } finally {
6474        try {
6475          if (!_iteratorNormalCompletion && _iterator.return != null) {
6476            _iterator.return();
6477          }
6478        } finally {
6479          if (_didIteratorError) {
6480            throw _iteratorError;
6481          }
6482        }
6483      }
6484  
6485      return (needsBackgroundColor || needsColor) && Object(external_this_wp_components_["withFallbackStyles"])(function (node, _ref7) {
6486        var querySelector = _ref7.querySelector,
6487            _ref7$backgroundColor = _ref7.backgroundColorSelector,
6488            backgroundColorSelector = _ref7$backgroundColor === void 0 ? querySelector : _ref7$backgroundColor,
6489            _ref7$textColorSelect = _ref7.textColorSelector,
6490            textColorSelector = _ref7$textColorSelect === void 0 ? querySelector : _ref7$textColorSelect;
6491        var backgroundColorNode = node;
6492        var textColorNode = node;
6493  
6494        if (backgroundColorSelector) {
6495          backgroundColorNode = node.parentNode.querySelector(backgroundColorSelector);
6496        }
6497  
6498        if (textColorSelector) {
6499          textColorNode = node.parentNode.querySelector(textColorSelector);
6500        }
6501  
6502        var backgroundColor;
6503        var color = getComputedStyle(textColorNode).color;
6504  
6505        if (needsBackgroundColor) {
6506          backgroundColor = getComputedStyle(backgroundColorNode).backgroundColor;
6507  
6508          while (backgroundColor === 'rgba(0, 0, 0, 0)' && backgroundColorNode.parentNode && backgroundColorNode.parentNode === Node.ELEMENT_NODE) {
6509            backgroundColorNode = backgroundColorNode.parentNode;
6510            backgroundColor = getComputedStyle(backgroundColorNode).backgroundColor;
6511          }
6512        }
6513  
6514        detectedBackgroundColorRef.current = backgroundColor;
6515        detectedColorRef.current = color;
6516        return {
6517          backgroundColor: backgroundColor,
6518          color: color
6519        };
6520      })(function () {
6521        return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null);
6522      });
6523    }, [colorConfigs.reduce(function (acc, colorConfig) {
6524      return "".concat(acc, " | ").concat(attributes[colorConfig.name], " | ").concat(attributes[Object(external_this_lodash_["camelCase"])("custom ".concat(colorConfig.name))]);
6525    }, '')].concat(Object(toConsumableArray["a" /* default */])(deps)));
6526    return Object(external_this_wp_element_["useMemo"])(function () {
6527      var colorSettings = {};
6528      var components = colorConfigs.reduce(function (acc, colorConfig) {
6529        if (typeof colorConfig === 'string') {
6530          colorConfig = {
6531            name: colorConfig
6532          };
6533        }
6534  
6535        var _colorConfig$color = Object(objectSpread["a" /* default */])({}, colorConfig, {
6536          color: attributes[colorConfig.name]
6537        }),
6538            name = _colorConfig$color.name,
6539            _colorConfig$color$pr = _colorConfig$color.property,
6540            property = _colorConfig$color$pr === void 0 ? name : _colorConfig$color$pr,
6541            className = _colorConfig$color.className,
6542            _colorConfig$color$pa = _colorConfig$color.panelLabel,
6543            panelLabel = _colorConfig$color$pa === void 0 ? Object(external_this_lodash_["startCase"])(name) : _colorConfig$color$pa,
6544            _colorConfig$color$co = _colorConfig$color.componentName,
6545            componentName = _colorConfig$color$co === void 0 ? panelLabel.replace(/\s/g, '') : _colorConfig$color$co,
6546            _colorConfig$color$co2 = _colorConfig$color.color,
6547            color = _colorConfig$color$co2 === void 0 ? colorConfig.color : _colorConfig$color$co2,
6548            _colorConfig$color$co3 = _colorConfig$color.colors,
6549            colors = _colorConfig$color$co3 === void 0 ? settingsColors : _colorConfig$color$co3;
6550  
6551        var customColor = attributes[Object(external_this_lodash_["camelCase"])("custom ".concat(name))]; // We memoize the non-primitives to avoid unnecessary updates
6552        // when they are used as props for other components.
6553  
6554        var _color = customColor ? undefined : colors.find(function (__color) {
6555          return __color.slug === color;
6556        });
6557  
6558        acc[componentName] = createComponent(name, property, className, color, _color && _color.color, customColor);
6559        acc[componentName].displayName = componentName;
6560        acc[componentName].color = customColor ? customColor : _color && _color.color;
6561        acc[componentName].slug = color;
6562        acc[componentName].setColor = createSetColor(name, colors);
6563        colorSettings[componentName] = {
6564          value: _color ? _color.color : attributes[Object(external_this_lodash_["camelCase"])("custom ".concat(name))],
6565          onChange: acc[componentName].setColor,
6566          label: panelLabel,
6567          colors: colors
6568        }; // These settings will be spread over the `colors` in
6569        // `colorPanelProps`, so we need to unset the key here,
6570        // if not set to an actual value, to avoid overwriting
6571        // an actual value in `colorPanelProps`.
6572  
6573        if (!colors) {
6574          delete colorSettings[componentName].colors;
6575        }
6576  
6577        return acc;
6578      }, {});
6579      var wrappedColorPanelProps = {
6580        title: panelTitle,
6581        colorSettings: colorSettings,
6582        colorPanelProps: colorPanelProps,
6583        contrastCheckers: contrastCheckers,
6584        detectedBackgroundColorRef: detectedBackgroundColorRef,
6585        detectedColorRef: detectedColorRef,
6586        panelChildren: panelChildren
6587      };
6588      return Object(objectSpread["a" /* default */])({}, components, {
6589        ColorPanel: Object(external_this_wp_element_["createElement"])(use_colors_ColorPanel, wrappedColorPanelProps),
6590        InspectorControlsColorPanel: Object(external_this_wp_element_["createElement"])(use_colors_InspectorControlsColorPanel, wrappedColorPanelProps),
6591        ColorDetector: ColorDetector
6592      });
6593    }, [attributes, setAttributes].concat(Object(toConsumableArray["a" /* default */])(deps)));
6594  }
6595  
6596  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors/index.js
6597  
6598  
6599  
6600  
6601  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/font-sizes/utils.js
6602  /**
6603   * External dependencies
6604   */
6605  
6606  /**
6607   *  Returns the font size object based on an array of named font sizes and the namedFontSize and customFontSize values.
6608   *     If namedFontSize is undefined or not found in fontSizes an object with just the size value based on customFontSize is returned.
6609   *
6610   * @param {Array}   fontSizes               Array of font size objects containing at least the "name" and "size" values as properties.
6611   * @param {?string} fontSizeAttribute       Content of the font size attribute (slug).
6612   * @param {?number} customFontSizeAttribute Contents of the custom font size attribute (value).
6613   *
6614   * @return {?string} If fontSizeAttribute is set and an equal slug is found in fontSizes it returns the font size object for that slug.
6615   *                      Otherwise, an object with just the size value based on customFontSize is returned.
6616   */
6617  
6618  var utils_getFontSize = function getFontSize(fontSizes, fontSizeAttribute, customFontSizeAttribute) {
6619    if (fontSizeAttribute) {
6620      var fontSizeObject = Object(external_this_lodash_["find"])(fontSizes, {
6621        slug: fontSizeAttribute
6622      });
6623  
6624      if (fontSizeObject) {
6625        return fontSizeObject;
6626      }
6627    }
6628  
6629    return {
6630      size: customFontSizeAttribute
6631    };
6632  };
6633  /**
6634   * Returns a class based on fontSizeName.
6635   *
6636   * @param {string} fontSizeSlug    Slug of the fontSize.
6637   *
6638   * @return {string} String with the class corresponding to the fontSize passed.
6639   *                  The class is generated by appending 'has-' followed by fontSizeSlug in kebabCase and ending with '-font-size'.
6640   */
6641  
6642  function getFontSizeClass(fontSizeSlug) {
6643    if (!fontSizeSlug) {
6644      return;
6645    }
6646  
6647    return "has-".concat(Object(external_this_lodash_["kebabCase"])(fontSizeSlug), "-font-size");
6648  }
6649  
6650  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/font-sizes/font-size-picker.js
6651  /**
6652   * WordPress dependencies
6653   */
6654  
6655  
6656  /* harmony default export */ var font_size_picker = (Object(external_this_wp_data_["withSelect"])(function (select) {
6657    var _select$getSettings = select('core/block-editor').getSettings(),
6658        disableCustomFontSizes = _select$getSettings.disableCustomFontSizes,
6659        fontSizes = _select$getSettings.fontSizes;
6660  
6661    return {
6662      disableCustomFontSizes: disableCustomFontSizes,
6663      fontSizes: fontSizes
6664    };
6665  })(external_this_wp_components_["FontSizePicker"]));
6666  
6667  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/font-sizes/with-font-sizes.js
6668  
6669  
6670  
6671  
6672  
6673  
6674  
6675  
6676  
6677  /**
6678   * External dependencies
6679   */
6680  
6681  /**
6682   * WordPress dependencies
6683   */
6684  
6685  
6686  
6687  
6688  /**
6689   * Internal dependencies
6690   */
6691  
6692  
6693  /**
6694   * Higher-order component, which handles font size logic for class generation,
6695   * font size value retrieval, and font size change handling.
6696   *
6697   * @param {...(Object|string)} fontSizeNames The arguments should all be strings.
6698   *                                           Each string contains the font size
6699   *                                           attribute name e.g: 'fontSize'.
6700   *
6701   * @return {Function} Higher-order component.
6702   */
6703  
6704  /* harmony default export */ var with_font_sizes = (function () {
6705    for (var _len = arguments.length, fontSizeNames = new Array(_len), _key = 0; _key < _len; _key++) {
6706      fontSizeNames[_key] = arguments[_key];
6707    }
6708  
6709    /*
6710    * Computes an object whose key is the font size attribute name as passed in the array,
6711    * and the value is the custom font size attribute name.
6712    * Custom font size is automatically compted by appending custom followed by the font size attribute name in with the first letter capitalized.
6713    */
6714    var fontSizeAttributeNames = Object(external_this_lodash_["reduce"])(fontSizeNames, function (fontSizeAttributeNamesAccumulator, fontSizeAttributeName) {
6715      fontSizeAttributeNamesAccumulator[fontSizeAttributeName] = "custom".concat(Object(external_this_lodash_["upperFirst"])(fontSizeAttributeName));
6716      return fontSizeAttributeNamesAccumulator;
6717    }, {});
6718    return Object(external_this_wp_compose_["createHigherOrderComponent"])(Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) {
6719      var _select$getSettings = select('core/block-editor').getSettings(),
6720          fontSizes = _select$getSettings.fontSizes;
6721  
6722      return {
6723        fontSizes: fontSizes
6724      };
6725    }), function (WrappedComponent) {
6726      return (
6727        /*#__PURE__*/
6728        function (_Component) {
6729          Object(inherits["a" /* default */])(_class, _Component);
6730  
6731          function _class(props) {
6732            var _this;
6733  
6734            Object(classCallCheck["a" /* default */])(this, _class);
6735  
6736            _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(_class).call(this, props));
6737            _this.setters = _this.createSetters();
6738            _this.state = {};
6739            return _this;
6740          }
6741  
6742          Object(createClass["a" /* default */])(_class, [{
6743            key: "createSetters",
6744            value: function createSetters() {
6745              var _this2 = this;
6746  
6747              return Object(external_this_lodash_["reduce"])(fontSizeAttributeNames, function (settersAccumulator, customFontSizeAttributeName, fontSizeAttributeName) {
6748                var upperFirstFontSizeAttributeName = Object(external_this_lodash_["upperFirst"])(fontSizeAttributeName);
6749                settersAccumulator["set".concat(upperFirstFontSizeAttributeName)] = _this2.createSetFontSize(fontSizeAttributeName, customFontSizeAttributeName);
6750                return settersAccumulator;
6751              }, {});
6752            }
6753          }, {
6754            key: "createSetFontSize",
6755            value: function createSetFontSize(fontSizeAttributeName, customFontSizeAttributeName) {
6756              var _this3 = this;
6757  
6758              return function (fontSizeValue) {
6759                var _this3$props$setAttri;
6760  
6761                var fontSizeObject = Object(external_this_lodash_["find"])(_this3.props.fontSizes, {
6762                  size: Number(fontSizeValue)
6763                });
6764  
6765                _this3.props.setAttributes((_this3$props$setAttri = {}, Object(defineProperty["a" /* default */])(_this3$props$setAttri, fontSizeAttributeName, fontSizeObject && fontSizeObject.slug ? fontSizeObject.slug : undefined), Object(defineProperty["a" /* default */])(_this3$props$setAttri, customFontSizeAttributeName, fontSizeObject && fontSizeObject.slug ? undefined : fontSizeValue), _this3$props$setAttri));
6766              };
6767            }
6768          }, {
6769            key: "render",
6770            value: function render() {
6771              return Object(external_this_wp_element_["createElement"])(WrappedComponent, Object(objectSpread["a" /* default */])({}, this.props, {
6772                fontSizes: undefined
6773              }, this.state, this.setters));
6774            }
6775          }], [{
6776            key: "getDerivedStateFromProps",
6777            value: function getDerivedStateFromProps(_ref, previousState) {
6778              var attributes = _ref.attributes,
6779                  fontSizes = _ref.fontSizes;
6780  
6781              var didAttributesChange = function didAttributesChange(customFontSizeAttributeName, fontSizeAttributeName) {
6782                if (previousState[fontSizeAttributeName]) {
6783                  // if new font size is name compare with the previous slug
6784                  if (attributes[fontSizeAttributeName]) {
6785                    return attributes[fontSizeAttributeName] !== previousState[fontSizeAttributeName].slug;
6786                  } // if font size is not named, update when the font size value changes.
6787  
6788  
6789                  return previousState[fontSizeAttributeName].size !== attributes[customFontSizeAttributeName];
6790                } // in this case we need to build the font size object
6791  
6792  
6793                return true;
6794              };
6795  
6796              if (!Object(external_this_lodash_["some"])(fontSizeAttributeNames, didAttributesChange)) {
6797                return null;
6798              }
6799  
6800              var newState = Object(external_this_lodash_["reduce"])(Object(external_this_lodash_["pickBy"])(fontSizeAttributeNames, didAttributesChange), function (newStateAccumulator, customFontSizeAttributeName, fontSizeAttributeName) {
6801                var fontSizeAttributeValue = attributes[fontSizeAttributeName];
6802                var fontSizeObject = utils_getFontSize(fontSizes, fontSizeAttributeValue, attributes[customFontSizeAttributeName]);
6803                newStateAccumulator[fontSizeAttributeName] = Object(objectSpread["a" /* default */])({}, fontSizeObject, {
6804                  class: getFontSizeClass(fontSizeAttributeValue)
6805                });
6806                return newStateAccumulator;
6807              }, {});
6808              return Object(objectSpread["a" /* default */])({}, previousState, newState);
6809            }
6810          }]);
6811  
6812          return _class;
6813        }(external_this_wp_element_["Component"])
6814      );
6815    }]), 'withFontSizes');
6816  });
6817  
6818  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/font-sizes/index.js
6819  
6820  
6821  
6822  
6823  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/alignment-toolbar/index.js
6824  
6825  
6826  
6827  /**
6828   * External dependencies
6829   */
6830  
6831  /**
6832   * WordPress dependencies
6833   */
6834  
6835  
6836  
6837  var DEFAULT_ALIGNMENT_CONTROLS = [{
6838    icon: 'editor-alignleft',
6839    title: Object(external_this_wp_i18n_["__"])('Align text left'),
6840    align: 'left'
6841  }, {
6842    icon: 'editor-aligncenter',
6843    title: Object(external_this_wp_i18n_["__"])('Align text center'),
6844    align: 'center'
6845  }, {
6846    icon: 'editor-alignright',
6847    title: Object(external_this_wp_i18n_["__"])('Align text right'),
6848    align: 'right'
6849  }];
6850  function AlignmentToolbar(props) {
6851    var value = props.value,
6852        onChange = props.onChange,
6853        _props$alignmentContr = props.alignmentControls,
6854        alignmentControls = _props$alignmentContr === void 0 ? DEFAULT_ALIGNMENT_CONTROLS : _props$alignmentContr,
6855        _props$label = props.label,
6856        label = _props$label === void 0 ? Object(external_this_wp_i18n_["__"])('Change text alignment') : _props$label,
6857        _props$isCollapsed = props.isCollapsed,
6858        isCollapsed = _props$isCollapsed === void 0 ? true : _props$isCollapsed;
6859  
6860    function applyOrUnset(align) {
6861      return function () {
6862        return onChange(value === align ? undefined : align);
6863      };
6864    }
6865  
6866    var activeAlignment = Object(external_this_lodash_["find"])(alignmentControls, function (control) {
6867      return control.align === value;
6868    });
6869    return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], {
6870      isCollapsed: isCollapsed,
6871      icon: activeAlignment ? activeAlignment.icon : 'editor-alignleft',
6872      label: label,
6873      controls: alignmentControls.map(function (control) {
6874        var align = control.align;
6875        var isActive = value === align;
6876        return Object(objectSpread["a" /* default */])({}, control, {
6877          isActive: isActive,
6878          role: isCollapsed ? 'menuitemradio' : undefined,
6879          onClick: applyOrUnset(align)
6880        });
6881      })
6882    });
6883  }
6884  /* harmony default export */ var alignment_toolbar = (AlignmentToolbar);
6885  
6886  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/autocomplete/index.js
6887  
6888  
6889  
6890  /**
6891   * External dependencies
6892   */
6893  
6894  /**
6895   * WordPress dependencies
6896   */
6897  
6898  
6899  
6900  
6901  /**
6902   * Internal dependencies
6903   */
6904  
6905  
6906  /**
6907   * Wrap the default Autocomplete component with one that
6908   * supports a filter hook for customizing its list of autocompleters.
6909   *
6910   * This function is exported for unit test.
6911   *
6912   * @param  {Function} Autocomplete Original component.
6913   * @return {Function}              Wrapped component
6914   */
6915  
6916  function withFilteredAutocompleters(Autocomplete) {
6917    return function (props) {
6918      var _props$completers = props.completers,
6919          completers = _props$completers === void 0 ? [] : _props$completers;
6920  
6921      if (Object(external_this_wp_hooks_["hasFilter"])('editor.Autocomplete.completers')) {
6922        completers = Object(external_this_wp_hooks_["applyFilters"])('editor.Autocomplete.completers', // Provide copies so filters may directly modify them.
6923        completers.map(external_this_lodash_["clone"]), props.blockName);
6924      }
6925  
6926      return Object(external_this_wp_element_["createElement"])(Autocomplete, Object(esm_extends["a" /* default */])({}, props, {
6927        completers: completers
6928      }));
6929    };
6930  }
6931  /**
6932   * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/autocomplete/README.md
6933   */
6934  
6935  /* harmony default export */ var autocomplete = (Object(external_this_wp_compose_["compose"])([context_withBlockEditContext(function (_ref) {
6936    var name = _ref.name;
6937    return {
6938      blockName: name
6939    };
6940  }), withFilteredAutocompleters])(external_this_wp_components_["Autocomplete"]));
6941  
6942  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-alignment-toolbar/index.js
6943  
6944  
6945  
6946  /**
6947   * WordPress dependencies
6948   */
6949  
6950  
6951  
6952  
6953  /**
6954   * Internal dependencies
6955   */
6956  
6957  
6958  var BLOCK_ALIGNMENTS_CONTROLS = {
6959    left: {
6960      icon: 'align-left',
6961      title: Object(external_this_wp_i18n_["__"])('Align left')
6962    },
6963    center: {
6964      icon: 'align-center',
6965      title: Object(external_this_wp_i18n_["__"])('Align center')
6966    },
6967    right: {
6968      icon: 'align-right',
6969      title: Object(external_this_wp_i18n_["__"])('Align right')
6970    },
6971    wide: {
6972      icon: 'align-wide',
6973      title: Object(external_this_wp_i18n_["__"])('Wide width')
6974    },
6975    full: {
6976      icon: 'align-full-width',
6977      title: Object(external_this_wp_i18n_["__"])('Full width')
6978    }
6979  };
6980  var DEFAULT_CONTROLS = ['left', 'center', 'right', 'wide', 'full'];
6981  var DEFAULT_CONTROL = 'center';
6982  var WIDE_CONTROLS = ['wide', 'full'];
6983  function BlockAlignmentToolbar(_ref) {
6984    var value = _ref.value,
6985        onChange = _ref.onChange,
6986        _ref$controls = _ref.controls,
6987        controls = _ref$controls === void 0 ? DEFAULT_CONTROLS : _ref$controls,
6988        _ref$isCollapsed = _ref.isCollapsed,
6989        isCollapsed = _ref$isCollapsed === void 0 ? true : _ref$isCollapsed,
6990        _ref$wideControlsEnab = _ref.wideControlsEnabled,
6991        wideControlsEnabled = _ref$wideControlsEnab === void 0 ? false : _ref$wideControlsEnab;
6992  
6993    function applyOrUnset(align) {
6994      return function () {
6995        return onChange(value === align ? undefined : align);
6996      };
6997    }
6998  
6999    var enabledControls = wideControlsEnabled ? controls : controls.filter(function (control) {
7000      return WIDE_CONTROLS.indexOf(control) === -1;
7001    });
7002    var activeAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[value];
7003    var defaultAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[DEFAULT_CONTROL];
7004    return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], {
7005      isCollapsed: isCollapsed,
7006      icon: activeAlignmentControl ? activeAlignmentControl.icon : defaultAlignmentControl.icon,
7007      label: Object(external_this_wp_i18n_["__"])('Change alignment'),
7008      controls: enabledControls.map(function (control) {
7009        return Object(objectSpread["a" /* default */])({}, BLOCK_ALIGNMENTS_CONTROLS[control], {
7010          isActive: value === control,
7011          role: isCollapsed ? 'menuitemradio' : undefined,
7012          onClick: applyOrUnset(control)
7013        });
7014      })
7015    });
7016  }
7017  /* harmony default export */ var block_alignment_toolbar = (Object(external_this_wp_compose_["compose"])(context_withBlockEditContext(function (_ref2) {
7018    var clientId = _ref2.clientId;
7019    return {
7020      clientId: clientId
7021    };
7022  }), Object(external_this_wp_data_["withSelect"])(function (select) {
7023    var _select = select('core/block-editor'),
7024        getSettings = _select.getSettings;
7025  
7026    var settings = getSettings();
7027    return {
7028      wideControlsEnabled: settings.alignWide
7029    };
7030  }))(BlockAlignmentToolbar));
7031  
7032  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-title/index.js
7033  /**
7034   * WordPress dependencies
7035   */
7036  
7037  
7038  /**
7039   * Renders the block's configured title as a string, or empty if the title
7040   * cannot be determined.
7041   *
7042   * @example
7043   *
7044   * ```jsx
7045   * <BlockTitle clientId="afd1cb17-2c08-4e7a-91be-007ba7ddc3a1" />
7046   * ```
7047   *
7048   * @param {Object}  props
7049   * @param {?string} props.name Block name.
7050   *
7051   * @return {?string} Block title.
7052   */
7053  
7054  function BlockTitle(_ref) {
7055    var name = _ref.name;
7056  
7057    if (!name) {
7058      return null;
7059    }
7060  
7061    var blockType = Object(external_this_wp_blocks_["getBlockType"])(name);
7062  
7063    if (!blockType) {
7064      return null;
7065    }
7066  
7067    return blockType.title;
7068  }
7069  /* harmony default export */ var block_title = (Object(external_this_wp_data_["withSelect"])(function (select, ownProps) {
7070    var _select = select('core/block-editor'),
7071        getBlockName = _select.getBlockName;
7072  
7073    var clientId = ownProps.clientId;
7074    return {
7075      name: getBlockName(clientId)
7076    };
7077  })(BlockTitle));
7078  
7079  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-breadcrumb/index.js
7080  
7081  
7082  /**
7083   * WordPress dependencies
7084   */
7085  
7086  
7087  
7088  /**
7089   * Internal dependencies
7090   */
7091  
7092  
7093  /**
7094   * Block breadcrumb component, displaying the hierarchy of the current block selection as a breadcrumb.
7095   *
7096   * @return {WPElement} Block Breadcrumb.
7097   */
7098  
7099  var block_breadcrumb_BlockBreadcrumb = function BlockBreadcrumb() {
7100    var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/block-editor'),
7101        selectBlock = _useDispatch.selectBlock,
7102        clearSelectedBlock = _useDispatch.clearSelectedBlock;
7103  
7104    var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) {
7105      var _select = select('core/block-editor'),
7106          getSelectionStart = _select.getSelectionStart,
7107          getSelectedBlockClientId = _select.getSelectedBlockClientId,
7108          getBlockParents = _select.getBlockParents;
7109  
7110      var selectedBlockClientId = getSelectedBlockClientId();
7111      return {
7112        parents: getBlockParents(selectedBlockClientId),
7113        clientId: selectedBlockClientId,
7114        hasSelection: !!getSelectionStart().clientId
7115      };
7116    }, []),
7117        clientId = _useSelect.clientId,
7118        parents = _useSelect.parents,
7119        hasSelection = _useSelect.hasSelection;
7120    /*
7121     * Disable reason: The `list` ARIA role is redundant but
7122     * Safari+VoiceOver won't announce the list otherwise.
7123     */
7124  
7125    /* eslint-disable jsx-a11y/no-redundant-roles */
7126  
7127  
7128    return Object(external_this_wp_element_["createElement"])("ul", {
7129      className: "block-editor-block-breadcrumb",
7130      role: "list",
7131      "aria-label": Object(external_this_wp_i18n_["__"])('Block breadcrumb')
7132    }, Object(external_this_wp_element_["createElement"])("li", {
7133      className: !hasSelection ? 'block-editor-block-breadcrumb__current' : undefined,
7134      "aria-current": !hasSelection ? 'true' : undefined
7135    }, hasSelection && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
7136      className: "block-editor-block-breadcrumb__button",
7137      isTertiary: true,
7138      onClick: clearSelectedBlock
7139    }, Object(external_this_wp_i18n_["__"])('Document')), !hasSelection && Object(external_this_wp_i18n_["__"])('Document')), parents.map(function (parentClientId) {
7140      return Object(external_this_wp_element_["createElement"])("li", {
7141        key: parentClientId
7142      }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
7143        className: "block-editor-block-breadcrumb__button",
7144        isTertiary: true,
7145        onClick: function onClick() {
7146          return selectBlock(parentClientId);
7147        }
7148      }, Object(external_this_wp_element_["createElement"])(block_title, {
7149        clientId: parentClientId
7150      })));
7151    }), !!clientId && Object(external_this_wp_element_["createElement"])("li", {
7152      className: "block-editor-block-breadcrumb__current",
7153      "aria-current": "true"
7154    }, Object(external_this_wp_element_["createElement"])(block_title, {
7155      clientId: clientId
7156    })))
7157    /* eslint-enable jsx-a11y/no-redundant-roles */
7158    ;
7159  };
7160  
7161  /* harmony default export */ var block_breadcrumb = (block_breadcrumb_BlockBreadcrumb);
7162  
7163  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-controls/index.js
7164  
7165  
7166  /**
7167   * WordPress dependencies
7168   */
7169  
7170  /**
7171   * Internal dependencies
7172   */
7173  
7174  
7175  
7176  var block_controls_createSlotFill = Object(external_this_wp_components_["createSlotFill"])('BlockControls'),
7177      block_controls_Fill = block_controls_createSlotFill.Fill,
7178      block_controls_Slot = block_controls_createSlotFill.Slot;
7179  
7180  var block_controls_BlockControlsFill = function BlockControlsFill(_ref) {
7181    var controls = _ref.controls,
7182        children = _ref.children;
7183    return Object(external_this_wp_element_["createElement"])(block_controls_Fill, null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], {
7184      controls: controls
7185    }), children);
7186  };
7187  
7188  var BlockControls = ifBlockEditSelected(block_controls_BlockControlsFill);
7189  BlockControls.Slot = block_controls_Slot;
7190  /* harmony default export */ var block_controls = (BlockControls);
7191  
7192  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-format-controls/index.js
7193  /**
7194   * WordPress dependencies
7195   */
7196  
7197  /**
7198   * Internal dependencies
7199   */
7200  
7201  
7202  
7203  var block_format_controls_createSlotFill = Object(external_this_wp_components_["createSlotFill"])('BlockFormatControls'),
7204      block_format_controls_Fill = block_format_controls_createSlotFill.Fill,
7205      block_format_controls_Slot = block_format_controls_createSlotFill.Slot;
7206  
7207  var BlockFormatControls = ifBlockEditSelected(block_format_controls_Fill);
7208  BlockFormatControls.Slot = block_format_controls_Slot;
7209  /* harmony default export */ var block_format_controls = (BlockFormatControls);
7210  
7211  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-icon/index.js
7212  
7213  
7214  /**
7215   * External dependencies
7216   */
7217  
7218  
7219  /**
7220   * WordPress dependencies
7221   */
7222  
7223  
7224  function BlockIcon(_ref) {
7225    var icon = _ref.icon,
7226        _ref$showColors = _ref.showColors,
7227        showColors = _ref$showColors === void 0 ? false : _ref$showColors,
7228        className = _ref.className;
7229  
7230    if (Object(external_this_lodash_["get"])(icon, ['src']) === 'block-default') {
7231      icon = {
7232        src: Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
7233          xmlns: "http://www.w3.org/2000/svg",
7234          viewBox: "0 0 24 24"
7235        }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
7236          d: "M19 7h-1V5h-4v2h-4V5H6v2H5c-1.1 0-2 .9-2 2v10h18V9c0-1.1-.9-2-2-2zm0 10H5V9h14v8z"
7237        }))
7238      };
7239    }
7240  
7241    var renderedIcon = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Icon"], {
7242      icon: icon && icon.src ? icon.src : icon
7243    });
7244    var style = showColors ? {
7245      backgroundColor: icon && icon.background,
7246      color: icon && icon.foreground
7247    } : {};
7248    return Object(external_this_wp_element_["createElement"])("span", {
7249      style: style,
7250      className: classnames_default()('block-editor-block-icon', className, {
7251        'has-colors': showColors
7252      })
7253    }, renderedIcon);
7254  }
7255  
7256  // CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-drop-zone/index.js
7257  
7258  
7259  
7260  
7261  
7262  
7263  
7264  
7265  /**
7266   * External dependencies
7267   */
7268  
7269  /**
7270   * WordPress dependencies
7271   */
7272  
7273  
7274  
7275  
7276  
7277  
7278  
7279  var parseDropEvent = function parseDropEvent(event) {
7280    var result = {
7281      srcRootClientId: null,
7282      srcClientId: null,
7283      srcIndex: null,
7284      type: null
7285    };
7286  
7287    if (!event.dataTransfer) {
7288      return result;
7289    }
7290  
7291    try {
7292      result = Object.assign(result, JSON.parse(event.dataTransfer.getData('text')));
7293    } catch (err) {
7294      return result;
7295    }
7296  
7297    return result;
7298  };
7299  
7300  var block_drop_zone_BlockDropZone =
7301  /*#__PURE__*/
7302  function (_Component) {
7303    Object(inherits["a" /* default */])(BlockDropZone, _Component);
7304  
7305    function BlockDropZone() {
7306      var _this;
7307  
7308      Object(classCallCheck["a" /* default */])(this, BlockDropZone);
7309  
7310      _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockDropZone).apply(this, arguments));
7311      _this.onFilesDrop = _this.onFilesDrop.bind(Object(assertThisInitialized["a" /* default */])(_this));
7312      _this.onHTMLDrop = _this.onHTMLDrop.bind(Object(assertThisInitialized["a" /* default */])(_this));
7313      _this.onDrop = _this.onDrop.bind(Object(assertThisInitialized["a" /* default */])(_this));
7314      return _this;
7315    }
7316  
7317    Object(createClass["a" /* default */])(BlockDropZone, [{
7318      key: "getInsertIndex",
7319      value: function getInsertIndex(position) {
7320        var _this$props = this.props,
7321            clientId = _this$props.clientId,
7322            rootClientId = _this$props.rootClientId,
7323            getBlockIndex = _this$props.getBlockIndex;
7324  
7325        if (clientId !== undefined) {
7326          var index = getBlockIndex(clientId, rootClientId);
7327          return position && position.y === 'top' ? index : index + 1;
7328        }
7329      }
7330    }, {
7331      key: "onFilesDrop",
7332      value: function onFilesDrop(files, position) {
7333        if (!this.props.hasUploadPermissions) {
7334          return;
7335        }