{"version":3,"file":"scripts.bde6b5b91f2c794a.js","sources":["src/scripts/markerclusterer.js","node_modules/better-i18n-plugin/dist/better-i18n-plugin.min.js","node_modules/better-dom/dist/better-dom.min.js","node_modules/better-time-element/dist/better-time-element.min.js","node_modules/better-dateinput-polyfill/dist/better-dateinput-polyfill.min.js","node_modules/quill/dist/quill.core.js"],"sourceRoot":"webpack:///","sourcesContent":["/**\n * @name MarkerClusterer for Google Maps v3\n * @version version 1.0.1\n * @author Luke Mahe\n * @fileoverview\n * The library creates and manages per-zoom-level clusters for large amounts of\n * markers.\n * \n * This is a v3 implementation of the\n * v2 MarkerClusterer .\n */\n\n/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A Marker Clusterer that clusters markers.\n *\n * @param {google.maps.Map} map The Google map to attach to.\n * @param {Array.=} opt_markers Optional markers to add to\n * the cluster.\n * @param {Object=} opt_options support the following options:\n * 'gridSize': (number) The grid size of a cluster in pixels.\n * 'maxZoom': (number) The maximum zoom level that a marker can be part of a\n * cluster.\n * 'zoomOnClick': (boolean) Whether the default behaviour of clicking on a\n * cluster is to zoom into it.\n * 'averageCenter': (boolean) Whether the center of each cluster should be\n * the average of all markers in the cluster.\n * 'minimumClusterSize': (number) The minimum number of markers to be in a\n * cluster before the markers are hidden and a count\n * is shown.\n * 'styles': (object) An object that has style properties:\n * 'url': (string) The image url.\n * 'height': (number) The image height.\n * 'width': (number) The image width.\n * 'anchor': (Array) The anchor position of the label text.\n * 'textColor': (string) The text color.\n * 'textSize': (number) The text size.\n * 'backgroundPosition': (string) The position of the backgound x, y.\n * @constructor\n * @extends google.maps.OverlayView\n */\nfunction MarkerClusterer(map, opt_markers, opt_options) {\n // MarkerClusterer implements google.maps.OverlayView interface. We use the\n // extend function to extend MarkerClusterer with google.maps.OverlayView\n // because it might not always be available when the code is defined so we\n // look for it at the last possible moment. If it doesn't exist now then\n // there is no point going ahead :)\n this.extend(MarkerClusterer, google.maps.OverlayView);\n this.map_ = map;\n\n /**\n * @type {Array.}\n * @private\n */\n this.markers_ = [];\n\n /**\n * @type {Array.}\n */\n this.clusters_ = [];\n\n this.sizes = [53, 56, 66, 78, 90];\n\n /**\n * @private\n */\n this.styles_ = [];\n\n /**\n * @type {boolean}\n * @private\n */\n this.ready_ = false;\n\n var options = opt_options || {};\n\n /**\n * @type {number}\n * @private\n */\n this.gridSize_ = options['gridSize'] || 60;\n\n /**\n * @private\n */\n this.minClusterSize_ = options['minimumClusterSize'] || 2;\n\n /**\n * @type {?number}\n * @private\n */\n this.maxZoom_ = options['maxZoom'] || null;\n\n this.styles_ = options['styles'] || [];\n\n /**\n * @type {string}\n * @private\n */\n this.imagePath_ = options['imagePath'] || this.MARKER_CLUSTER_IMAGE_PATH_;\n\n /**\n * @type {string}\n * @private\n */\n this.imageExtension_ = options['imageExtension'] || this.MARKER_CLUSTER_IMAGE_EXTENSION_;\n\n /**\n * @type {boolean}\n * @private\n */\n this.zoomOnClick_ = true;\n\n if (options['zoomOnClick'] != undefined) {\n this.zoomOnClick_ = options['zoomOnClick'];\n }\n\n /**\n * @type {boolean}\n * @private\n */\n this.averageCenter_ = false;\n\n if (options['averageCenter'] != undefined) {\n this.averageCenter_ = options['averageCenter'];\n }\n\n this.setupStyles_();\n\n this.setMap(map);\n\n /**\n * @type {number}\n * @private\n */\n this.prevZoom_ = this.map_.getZoom();\n\n // Add the map event listeners\n var that = this;\n google.maps.event.addListener(this.map_, 'zoom_changed', function () {\n // Determines map type and prevent illegal zoom levels\n var zoom = that.map_.getZoom();\n var minZoom = that.map_.minZoom || 0;\n var maxZoom = Math.min(\n that.map_.maxZoom || 100,\n that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom\n );\n zoom = Math.min(Math.max(zoom, minZoom), maxZoom);\n\n if (that.prevZoom_ != zoom) {\n that.prevZoom_ = zoom;\n that.resetViewport();\n }\n });\n\n google.maps.event.addListener(this.map_, 'idle', function () {\n that.redraw();\n });\n\n // Finally, add the markers\n if (opt_markers && (opt_markers.length || Object.keys(opt_markers).length)) {\n this.addMarkers(opt_markers, false);\n }\n}\n\n/**\n * The marker cluster image path.\n *\n * @type {string}\n * @private\n */\nMarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ = '../images/m';\n\n/**\n * The marker cluster image path.\n *\n * @type {string}\n * @private\n */\nMarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_EXTENSION_ = 'png';\n\n/**\n * Extends a objects prototype by anothers.\n *\n * @param {Object} obj1 The object to be extended.\n * @param {Object} obj2 The object to extend with.\n * @return {Object} The new extended object.\n * @ignore\n */\nMarkerClusterer.prototype.extend = function (obj1, obj2) {\n return function (object) {\n for (var property in object.prototype) {\n this.prototype[property] = object.prototype[property];\n }\n return this;\n }.apply(obj1, [obj2]);\n};\n\n/**\n * Implementaion of the interface method.\n * @ignore\n */\nMarkerClusterer.prototype.onAdd = function () {\n this.setReady_(true);\n};\n\n/**\n * Implementaion of the interface method.\n * @ignore\n */\nMarkerClusterer.prototype.draw = function () {};\n\n/**\n * Sets up the styles object.\n *\n * @private\n */\nMarkerClusterer.prototype.setupStyles_ = function () {\n if (this.styles_.length) {\n return;\n }\n\n for (var i = 0, size; (size = this.sizes[i]); i++) {\n this.styles_.push({\n url: this.imagePath_ + (i + 1) + '.' + this.imageExtension_,\n height: size,\n width: size,\n });\n }\n};\n\n/**\n * Fit the map to the bounds of the markers in the clusterer.\n */\nMarkerClusterer.prototype.fitMapToMarkers = function () {\n var markers = this.getMarkers();\n var bounds = new google.maps.LatLngBounds();\n for (var i = 0, marker; (marker = markers[i]); i++) {\n bounds.extend(marker.getPosition());\n }\n\n this.map_.fitBounds(bounds);\n};\n\n/**\n * Sets the styles.\n *\n * @param {Object} styles The style to set.\n */\nMarkerClusterer.prototype.setStyles = function (styles) {\n this.styles_ = styles;\n};\n\n/**\n * Gets the styles.\n *\n * @return {Object} The styles object.\n */\nMarkerClusterer.prototype.getStyles = function () {\n return this.styles_;\n};\n\n/**\n * Whether zoom on click is set.\n *\n * @return {boolean} True if zoomOnClick_ is set.\n */\nMarkerClusterer.prototype.isZoomOnClick = function () {\n return this.zoomOnClick_;\n};\n\n/**\n * Whether average center is set.\n *\n * @return {boolean} True if averageCenter_ is set.\n */\nMarkerClusterer.prototype.isAverageCenter = function () {\n return this.averageCenter_;\n};\n\n/**\n * Returns the array of markers in the clusterer.\n *\n * @return {Array.} The markers.\n */\nMarkerClusterer.prototype.getMarkers = function () {\n return this.markers_;\n};\n\n/**\n * Returns the number of markers in the clusterer\n *\n * @return {Number} The number of markers.\n */\nMarkerClusterer.prototype.getTotalMarkers = function () {\n return this.markers_.length;\n};\n\n/**\n * Sets the max zoom for the clusterer.\n *\n * @param {number} maxZoom The max zoom level.\n */\nMarkerClusterer.prototype.setMaxZoom = function (maxZoom) {\n this.maxZoom_ = maxZoom;\n};\n\n/**\n * Gets the max zoom for the clusterer.\n *\n * @return {number} The max zoom level.\n */\nMarkerClusterer.prototype.getMaxZoom = function () {\n return this.maxZoom_;\n};\n\n/**\n * The function for calculating the cluster icon image.\n *\n * @param {Array.} markers The markers in the clusterer.\n * @param {number} numStyles The number of styles available.\n * @return {Object} A object properties: 'text' (string) and 'index' (number).\n * @private\n */\nMarkerClusterer.prototype.calculator_ = function (markers, numStyles) {\n var index = 0;\n var count = markers.length;\n var dv = count;\n while (dv !== 0) {\n dv = parseInt(dv / 10, 10);\n index++;\n }\n\n index = Math.min(index, numStyles);\n return {\n text: count,\n index: index,\n };\n};\n\n/**\n * Set the calculator function.\n *\n * @param {function(Array, number)} calculator The function to set as the\n * calculator. The function should return a object properties:\n * 'text' (string) and 'index' (number).\n *\n */\nMarkerClusterer.prototype.setCalculator = function (calculator) {\n this.calculator_ = calculator;\n};\n\n/**\n * Get the calculator function.\n *\n * @return {function(Array, number)} the calculator function.\n */\nMarkerClusterer.prototype.getCalculator = function () {\n return this.calculator_;\n};\n\n/**\n * Add an array of markers to the clusterer.\n *\n * @param {Array.} markers The markers to add.\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\n */\nMarkerClusterer.prototype.addMarkers = function (markers, opt_nodraw) {\n if (markers.length) {\n for (var i = 0, marker; (marker = markers[i]); i++) {\n this.pushMarkerTo_(marker);\n }\n } else if (Object.keys(markers).length) {\n for (var marker in markers) {\n this.pushMarkerTo_(markers[marker]);\n }\n }\n if (!opt_nodraw) {\n this.redraw();\n }\n};\n\n/**\n * Pushes a marker to the clusterer.\n *\n * @param {google.maps.Marker} marker The marker to add.\n * @private\n */\nMarkerClusterer.prototype.pushMarkerTo_ = function (marker) {\n marker.isAdded = false;\n if (marker['draggable']) {\n // If the marker is draggable add a listener so we update the clusters on\n // the drag end.\n var that = this;\n google.maps.event.addListener(marker, 'dragend', function () {\n marker.isAdded = false;\n that.repaint();\n });\n }\n this.markers_.push(marker);\n};\n\n/**\n * Adds a marker to the clusterer and redraws if needed.\n *\n * @param {google.maps.Marker} marker The marker to add.\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\n */\nMarkerClusterer.prototype.addMarker = function (marker, opt_nodraw) {\n this.pushMarkerTo_(marker);\n if (!opt_nodraw) {\n this.redraw();\n }\n};\n\n/**\n * Removes a marker and returns true if removed, false if not\n *\n * @param {google.maps.Marker} marker The marker to remove\n * @return {boolean} Whether the marker was removed or not\n * @private\n */\nMarkerClusterer.prototype.removeMarker_ = function (marker) {\n var index = -1;\n if (this.markers_.indexOf) {\n index = this.markers_.indexOf(marker);\n } else {\n for (var i = 0, m; (m = this.markers_[i]); i++) {\n if (m == marker) {\n index = i;\n break;\n }\n }\n }\n\n if (index == -1) {\n // Marker is not in our list of markers.\n return false;\n }\n\n marker.setMap(null);\n\n this.markers_.splice(index, 1);\n\n return true;\n};\n\n/**\n * Remove a marker from the cluster.\n *\n * @param {google.maps.Marker} marker The marker to remove.\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\n * @return {boolean} True if the marker was removed.\n */\nMarkerClusterer.prototype.removeMarker = function (marker, opt_nodraw) {\n var removed = this.removeMarker_(marker);\n\n if (!opt_nodraw && removed) {\n this.resetViewport();\n this.redraw();\n return true;\n } else {\n return false;\n }\n};\n\n/**\n * Removes an array of markers from the cluster.\n *\n * @param {Array.} markers The markers to remove.\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\n */\nMarkerClusterer.prototype.removeMarkers = function (markers, opt_nodraw) {\n var removed = false;\n\n for (var i = 0, marker; (marker = markers[i]); i++) {\n var r = this.removeMarker_(marker);\n removed = removed || r;\n }\n\n if (!opt_nodraw && removed) {\n this.resetViewport();\n this.redraw();\n return true;\n }\n};\n\n/**\n * Sets the clusterer's ready state.\n *\n * @param {boolean} ready The state.\n * @private\n */\nMarkerClusterer.prototype.setReady_ = function (ready) {\n if (!this.ready_) {\n this.ready_ = ready;\n this.createClusters_();\n }\n};\n\n/**\n * Returns the number of clusters in the clusterer.\n *\n * @return {number} The number of clusters.\n */\nMarkerClusterer.prototype.getTotalClusters = function () {\n return this.clusters_.length;\n};\n\n/**\n * Returns the google map that the clusterer is associated with.\n *\n * @return {google.maps.Map} The map.\n */\nMarkerClusterer.prototype.getMap = function () {\n return this.map_;\n};\n\n/**\n * Sets the google map that the clusterer is associated with.\n *\n * @param {google.maps.Map} map The map.\n */\nMarkerClusterer.prototype.setMap = function (map) {\n this.map_ = map;\n};\n\n/**\n * Returns the size of the grid.\n *\n * @return {number} The grid size.\n */\nMarkerClusterer.prototype.getGridSize = function () {\n return this.gridSize_;\n};\n\n/**\n * Sets the size of the grid.\n *\n * @param {number} size The grid size.\n */\nMarkerClusterer.prototype.setGridSize = function (size) {\n this.gridSize_ = size;\n};\n\n/**\n * Returns the min cluster size.\n *\n * @return {number} The grid size.\n */\nMarkerClusterer.prototype.getMinClusterSize = function () {\n return this.minClusterSize_;\n};\n\n/**\n * Sets the min cluster size.\n *\n * @param {number} size The grid size.\n */\nMarkerClusterer.prototype.setMinClusterSize = function (size) {\n this.minClusterSize_ = size;\n};\n\n/**\n * Extends a bounds object by the grid size.\n *\n * @param {google.maps.LatLngBounds} bounds The bounds to extend.\n * @return {google.maps.LatLngBounds} The extended bounds.\n */\nMarkerClusterer.prototype.getExtendedBounds = function (bounds) {\n var projection = this.getProjection();\n\n // Turn the bounds into latlng.\n var tr = new google.maps.LatLng(bounds.getNorthEast().lat(), bounds.getNorthEast().lng());\n var bl = new google.maps.LatLng(bounds.getSouthWest().lat(), bounds.getSouthWest().lng());\n\n // Convert the points to pixels and the extend out by the grid size.\n var trPix = projection.fromLatLngToDivPixel(tr);\n trPix.x += this.gridSize_;\n trPix.y -= this.gridSize_;\n\n var blPix = projection.fromLatLngToDivPixel(bl);\n blPix.x -= this.gridSize_;\n blPix.y += this.gridSize_;\n\n // Convert the pixel points back to LatLng\n var ne = projection.fromDivPixelToLatLng(trPix);\n var sw = projection.fromDivPixelToLatLng(blPix);\n\n // Extend the bounds to contain the new bounds.\n bounds.extend(ne);\n bounds.extend(sw);\n\n return bounds;\n};\n\n/**\n * Determins if a marker is contained in a bounds.\n *\n * @param {google.maps.Marker} marker The marker to check.\n * @param {google.maps.LatLngBounds} bounds The bounds to check against.\n * @return {boolean} True if the marker is in the bounds.\n * @private\n */\nMarkerClusterer.prototype.isMarkerInBounds_ = function (marker, bounds) {\n return bounds.contains(marker.getPosition());\n};\n\n/**\n * Clears all clusters and markers from the clusterer.\n */\nMarkerClusterer.prototype.clearMarkers = function () {\n this.resetViewport(true);\n\n // Set the markers a empty array.\n this.markers_ = [];\n};\n\n/**\n * Clears all existing clusters and recreates them.\n * @param {boolean} opt_hide To also hide the marker.\n */\nMarkerClusterer.prototype.resetViewport = function (opt_hide) {\n // Remove all the clusters\n for (var i = 0, cluster; (cluster = this.clusters_[i]); i++) {\n cluster.remove();\n }\n\n // Reset the markers to not be added and to be invisible.\n for (var i = 0, marker; (marker = this.markers_[i]); i++) {\n marker.isAdded = false;\n if (opt_hide) {\n marker.setMap(null);\n }\n }\n\n this.clusters_ = [];\n};\n\n/**\n *\n */\nMarkerClusterer.prototype.repaint = function () {\n var oldClusters = this.clusters_.slice();\n this.clusters_.length = 0;\n this.resetViewport();\n this.redraw();\n\n // Remove the old clusters.\n // Do it in a timeout so the other clusters have been drawn first.\n window.setTimeout(function () {\n for (var i = 0, cluster; (cluster = oldClusters[i]); i++) {\n cluster.remove();\n }\n }, 0);\n};\n\n/**\n * Redraws the clusters.\n */\nMarkerClusterer.prototype.redraw = function () {\n this.createClusters_();\n};\n\n/**\n * Calculates the distance between two latlng locations in km.\n * @see http://www.movable-type.co.uk/scripts/latlong.html\n *\n * @param {google.maps.LatLng} p1 The first lat lng point.\n * @param {google.maps.LatLng} p2 The second lat lng point.\n * @return {number} The distance between the two points in km.\n * @private\n */\nMarkerClusterer.prototype.distanceBetweenPoints_ = function (p1, p2) {\n if (!p1 || !p2) {\n return 0;\n }\n\n var R = 6371; // Radius of the Earth in km\n var dLat = ((p2.lat() - p1.lat()) * Math.PI) / 180;\n var dLon = ((p2.lng() - p1.lng()) * Math.PI) / 180;\n var a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos((p1.lat() * Math.PI) / 180) *\n Math.cos((p2.lat() * Math.PI) / 180) *\n Math.sin(dLon / 2) *\n Math.sin(dLon / 2);\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n var d = R * c;\n return d;\n};\n\n/**\n * Add a marker to a cluster, or creates a new cluster.\n *\n * @param {google.maps.Marker} marker The marker to add.\n * @private\n */\nMarkerClusterer.prototype.addToClosestCluster_ = function (marker) {\n var distance = 40000; // Some large number\n var clusterToAddTo = null;\n var pos = marker.getPosition();\n for (var i = 0, cluster; (cluster = this.clusters_[i]); i++) {\n var center = cluster.getCenter();\n if (center) {\n var d = this.distanceBetweenPoints_(center, marker.getPosition());\n if (d < distance) {\n distance = d;\n clusterToAddTo = cluster;\n }\n }\n }\n\n if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\n clusterToAddTo.addMarker(marker);\n } else {\n var cluster = new Cluster(this);\n cluster.addMarker(marker);\n this.clusters_.push(cluster);\n }\n};\n\n/**\n * Creates the clusters.\n *\n * @private\n */\nMarkerClusterer.prototype.createClusters_ = function () {\n if (!this.ready_) {\n return;\n }\n\n // Get our current map view bounds.\n // Create a new bounds object so we don't affect the map.\n var mapBounds = new google.maps.LatLngBounds(\n this.map_.getBounds().getSouthWest(),\n this.map_.getBounds().getNorthEast()\n );\n var bounds = this.getExtendedBounds(mapBounds);\n\n for (var i = 0, marker; (marker = this.markers_[i]); i++) {\n if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {\n this.addToClosestCluster_(marker);\n }\n }\n};\n\n/**\n * A cluster that contains markers.\n *\n * @param {MarkerClusterer} markerClusterer The markerclusterer that this\n * cluster is associated with.\n * @constructor\n * @ignore\n */\nfunction Cluster(markerClusterer) {\n this.markerClusterer_ = markerClusterer;\n this.map_ = markerClusterer.getMap();\n this.gridSize_ = markerClusterer.getGridSize();\n this.minClusterSize_ = markerClusterer.getMinClusterSize();\n this.averageCenter_ = markerClusterer.isAverageCenter();\n this.center_ = null;\n this.markers_ = [];\n this.bounds_ = null;\n this.clusterIcon_ = new ClusterIcon(\n this,\n markerClusterer.getStyles(),\n markerClusterer.getGridSize()\n );\n}\n\n/**\n * Determins if a marker is already added to the cluster.\n *\n * @param {google.maps.Marker} marker The marker to check.\n * @return {boolean} True if the marker is already added.\n */\nCluster.prototype.isMarkerAlreadyAdded = function (marker) {\n if (this.markers_.indexOf) {\n return this.markers_.indexOf(marker) != -1;\n } else {\n for (var i = 0, m; (m = this.markers_[i]); i++) {\n if (m == marker) {\n return true;\n }\n }\n }\n return false;\n};\n\n/**\n * Add a marker the cluster.\n *\n * @param {google.maps.Marker} marker The marker to add.\n * @return {boolean} True if the marker was added.\n */\nCluster.prototype.addMarker = function (marker) {\n if (this.isMarkerAlreadyAdded(marker)) {\n return false;\n }\n\n if (!this.center_) {\n this.center_ = marker.getPosition();\n this.calculateBounds_();\n } else {\n if (this.averageCenter_) {\n var l = this.markers_.length + 1;\n var lat = (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;\n var lng = (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;\n this.center_ = new google.maps.LatLng(lat, lng);\n this.calculateBounds_();\n }\n }\n\n marker.isAdded = true;\n this.markers_.push(marker);\n\n var len = this.markers_.length;\n if (len < this.minClusterSize_ && marker.getMap() != this.map_) {\n // Min cluster size not reached so show the marker.\n marker.setMap(this.map_);\n }\n\n if (len == this.minClusterSize_) {\n // Hide the markers that were showing.\n for (var i = 0; i < len; i++) {\n this.markers_[i].setMap(null);\n }\n }\n\n if (len >= this.minClusterSize_) {\n marker.setMap(null);\n }\n\n this.updateIcon();\n return true;\n};\n\n/**\n * Returns the marker clusterer that the cluster is associated with.\n *\n * @return {MarkerClusterer} The associated marker clusterer.\n */\nCluster.prototype.getMarkerClusterer = function () {\n return this.markerClusterer_;\n};\n\n/**\n * Returns the bounds of the cluster.\n *\n * @return {google.maps.LatLngBounds} the cluster bounds.\n */\nCluster.prototype.getBounds = function () {\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\n var markers = this.getMarkers();\n for (var i = 0, marker; (marker = markers[i]); i++) {\n bounds.extend(marker.getPosition());\n }\n return bounds;\n};\n\n/**\n * Removes the cluster\n */\nCluster.prototype.remove = function () {\n this.clusterIcon_.remove();\n this.markers_.length = 0;\n delete this.markers_;\n};\n\n/**\n * Returns the center of the cluster.\n *\n * @return {number} The cluster center.\n */\nCluster.prototype.getSize = function () {\n return this.markers_.length;\n};\n\n/**\n * Returns the center of the cluster.\n *\n * @return {Array.} The cluster center.\n */\nCluster.prototype.getMarkers = function () {\n return this.markers_;\n};\n\n/**\n * Returns the center of the cluster.\n *\n * @return {google.maps.LatLng} The cluster center.\n */\nCluster.prototype.getCenter = function () {\n return this.center_;\n};\n\n/**\n * Calculated the extended bounds of the cluster with the grid.\n *\n * @private\n */\nCluster.prototype.calculateBounds_ = function () {\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\n this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);\n};\n\n/**\n * Determines if a marker lies in the clusters bounds.\n *\n * @param {google.maps.Marker} marker The marker to check.\n * @return {boolean} True if the marker lies in the bounds.\n */\nCluster.prototype.isMarkerInClusterBounds = function (marker) {\n return this.bounds_.contains(marker.getPosition());\n};\n\n/**\n * Returns the map that the cluster is associated with.\n *\n * @return {google.maps.Map} The map.\n */\nCluster.prototype.getMap = function () {\n return this.map_;\n};\n\n/**\n * Updates the cluster icon\n */\nCluster.prototype.updateIcon = function () {\n var zoom = this.map_.getZoom();\n var mz = this.markerClusterer_.getMaxZoom();\n\n if (mz && zoom > mz) {\n // The zoom is greater than our max zoom so show all the markers in cluster.\n for (var i = 0, marker; (marker = this.markers_[i]); i++) {\n marker.setMap(this.map_);\n }\n return;\n }\n\n if (this.markers_.length < this.minClusterSize_) {\n // Min cluster size not yet reached.\n this.clusterIcon_.hide();\n return;\n }\n\n var numStyles = this.markerClusterer_.getStyles().length;\n var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);\n this.clusterIcon_.setCenter(this.center_);\n this.clusterIcon_.setSums(sums);\n this.clusterIcon_.show();\n};\n\n/**\n * A cluster icon\n *\n * @param {Cluster} cluster The cluster to be associated with.\n * @param {Object} styles An object that has style properties:\n * 'url': (string) The image url.\n * 'height': (number) The image height.\n * 'width': (number) The image width.\n * 'anchor': (Array) The anchor position of the label text.\n * 'textColor': (string) The text color.\n * 'textSize': (number) The text size.\n * 'backgroundPosition: (string) The background postition x, y.\n * @param {number=} opt_padding Optional padding to apply to the cluster icon.\n * @constructor\n * @extends google.maps.OverlayView\n * @ignore\n */\nfunction ClusterIcon(cluster, styles, opt_padding) {\n cluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);\n\n this.styles_ = styles;\n this.padding_ = opt_padding || 0;\n this.cluster_ = cluster;\n this.center_ = null;\n this.map_ = cluster.getMap();\n this.div_ = null;\n this.sums_ = null;\n this.visible_ = false;\n\n this.setMap(this.map_);\n}\n\n/**\n * Triggers the clusterclick event and zoom's if the option is set.\n */\nClusterIcon.prototype.triggerClusterClick = function () {\n var markerClusterer = this.cluster_.getMarkerClusterer();\n\n // Trigger the clusterclick event.\n google.maps.event.trigger(markerClusterer, 'clusterclick', this.cluster_);\n\n if (markerClusterer.isZoomOnClick()) {\n // Zoom into the cluster.\n this.map_.fitBounds(this.cluster_.getBounds());\n }\n};\n\n/**\n * Adding the cluster icon to the dom.\n * @ignore\n */\nClusterIcon.prototype.onAdd = function () {\n this.div_ = document.createElement('DIV');\n if (this.visible_) {\n var pos = this.getPosFromLatLng_(this.center_);\n this.div_.style.cssText = this.createCss(pos);\n this.div_.innerHTML = this.sums_.text;\n }\n\n var panes = this.getPanes();\n panes.overlayMouseTarget.appendChild(this.div_);\n\n var that = this;\n google.maps.event.addDomListener(this.div_, 'click', function () {\n that.triggerClusterClick();\n });\n};\n\n/**\n * Returns the position to place the div dending on the latlng.\n *\n * @param {google.maps.LatLng} latlng The position in latlng.\n * @return {google.maps.Point} The position in pixels.\n * @private\n */\nClusterIcon.prototype.getPosFromLatLng_ = function (latlng) {\n var pos = this.getProjection().fromLatLngToDivPixel(latlng);\n pos.x -= parseInt(this.width_ / 2, 10);\n pos.y -= parseInt(this.height_ / 2, 10);\n return pos;\n};\n\n/**\n * Draw the icon.\n * @ignore\n */\nClusterIcon.prototype.draw = function () {\n if (this.visible_) {\n var pos = this.getPosFromLatLng_(this.center_);\n this.div_.style.top = pos.y + 'px';\n this.div_.style.left = pos.x + 'px';\n }\n};\n\n/**\n * Hide the icon.\n */\nClusterIcon.prototype.hide = function () {\n if (this.div_) {\n this.div_.style.display = 'none';\n }\n this.visible_ = false;\n};\n\n/**\n * Position and show the icon.\n */\nClusterIcon.prototype.show = function () {\n if (this.div_) {\n var pos = this.getPosFromLatLng_(this.center_);\n this.div_.style.cssText = this.createCss(pos);\n this.div_.style.display = '';\n }\n this.visible_ = true;\n};\n\n/**\n * Remove the icon from the map\n */\nClusterIcon.prototype.remove = function () {\n this.setMap(null);\n};\n\n/**\n * Implementation of the onRemove interface.\n * @ignore\n */\nClusterIcon.prototype.onRemove = function () {\n if (this.div_ && this.div_.parentNode) {\n this.hide();\n this.div_.parentNode.removeChild(this.div_);\n this.div_ = null;\n }\n};\n\n/**\n * Set the sums of the icon.\n *\n * @param {Object} sums The sums containing:\n * 'text': (string) The text to display in the icon.\n * 'index': (number) The style index of the icon.\n */\nClusterIcon.prototype.setSums = function (sums) {\n this.sums_ = sums;\n this.text_ = sums.text;\n this.index_ = sums.index;\n if (this.div_) {\n this.div_.innerHTML = sums.text;\n }\n\n this.useStyle();\n};\n\n/**\n * Sets the icon to the the styles.\n */\nClusterIcon.prototype.useStyle = function () {\n var index = Math.max(0, this.sums_.index - 1);\n index = Math.min(this.styles_.length - 1, index);\n var style = this.styles_[index];\n this.url_ = style['url'];\n this.height_ = style['height'];\n this.width_ = style['width'];\n this.textColor_ = style['textColor'];\n this.anchor_ = style['anchor'];\n this.textSize_ = style['textSize'];\n this.backgroundPosition_ = style['backgroundPosition'];\n};\n\n/**\n * Sets the center of the icon.\n *\n * @param {google.maps.LatLng} center The latlng to set as the center.\n */\nClusterIcon.prototype.setCenter = function (center) {\n this.center_ = center;\n};\n\n/**\n * Create the css text based on the position of the icon.\n *\n * @param {google.maps.Point} pos The position.\n * @return {string} The css style text.\n */\nClusterIcon.prototype.createCss = function (pos) {\n var style = [];\n style.push('background-image:url(' + this.url_ + ');');\n var backgroundPosition = this.backgroundPosition_ ? this.backgroundPosition_ : '0 0';\n style.push('background-position:' + backgroundPosition + ';');\n\n if (typeof this.anchor_ === 'object') {\n if (\n typeof this.anchor_[0] === 'number' &&\n this.anchor_[0] > 0 &&\n this.anchor_[0] < this.height_\n ) {\n style.push(\n 'height:' + (this.height_ - this.anchor_[0]) + 'px; padding-top:' + this.anchor_[0] + 'px;'\n );\n } else {\n style.push('height:' + this.height_ + 'px; line-height:' + this.height_ + 'px;');\n }\n if (\n typeof this.anchor_[1] === 'number' &&\n this.anchor_[1] > 0 &&\n this.anchor_[1] < this.width_\n ) {\n style.push(\n 'width:' + (this.width_ - this.anchor_[1]) + 'px; padding-left:' + this.anchor_[1] + 'px;'\n );\n } else {\n style.push('width:' + this.width_ + 'px; text-align:center;');\n }\n } else {\n style.push(\n 'height:' +\n this.height_ +\n 'px; line-height:' +\n this.height_ +\n 'px; width:' +\n this.width_ +\n 'px; text-align:center;'\n );\n }\n\n var txtColor = this.textColor_ ? this.textColor_ : 'black';\n var txtSize = this.textSize_ ? this.textSize_ : 11;\n\n style.push(\n 'cursor:pointer; top:' +\n pos.y +\n 'px; left:' +\n pos.x +\n 'px; color:' +\n txtColor +\n '; position:absolute; font-size:' +\n txtSize +\n 'px; font-family:Arial,sans-serif; font-weight:bold'\n );\n return style.join('');\n};\n","/**\n * better-i18n-plugin: Internationalization plugin for better-dom\n * @version 2.0.1 Wed, 30 Aug 2017 15:49:56 GMT\n * @link https://github.com/chemerisuk/better-i18n-plugin\n * @copyright 2017 Maksim Chemerisuk\n * @license MIT\n */\nfunction _classCallCheck(n,t){if(!(n instanceof t))throw new TypeError(\"Cannot call a class as a function\")}!function(n){\"use strict\";function t(n,t){var r=arguments.length<=2||void 0===arguments[2]?0:arguments[2];return t?n.replace(o,function(n){return null!=t[r++]?t[r-1]:n}):n}var r=[],i=[],o=/%s/g,a=document.documentElement,e=function(){function n(o,a){var e=this;_classCallCheck(this,n),i.forEach(function(n,i){var s=r[i][o];s&&(e[n]=t(s,a))}),this._=t(o,a)}return n.prototype.toString=function(){var n=this;return Object.keys(this).sort(function(n){return\"_\"===n?1:-1}).map(function(t){return''+n[t]+\" \"}).join(\"\")},n.prototype.toLocaleString=function(n){return this[n||a.lang]||this._},n.prototype.valueOf=function(){return\"\"+this.toString()+\" \"},n}();n.importStrings=function(t,o,a){if(\"string\"!=typeof t)throw new TypeError(\"lang argument must be a string\");var e=i.indexOf(t),s=r[e];-1===e&&(e=i.push(t)-1,r[e]=s={},n.importStyles('span[lang=\"'+t+'\"]',\"display:none\"),n.importStyles(\":lang(\"+t+') > span[lang=\"'+t+'\"]',\"display:inline !important\"),n.importStyles(\":lang(\"+t+') > span[lang=\"'+t+'\"] ~ span[lang]',\"display:none\")),\"string\"==typeof o?s[o]=a:Object.keys(o).forEach(function(n){s[n]=o[n]})},n.__=function(n){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;t>i;i++)r[i-1]=arguments[i];return Array.isArray(n)?n.map(function(n){return new e(n,r)}):new e(n,r)},n.i18nLiteral=function(n){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;t>i;i++)r[i-1]=arguments[i];return new e(n.join(\"%s\"),r).toLocaleString()}}(window.DOM);","/**\n * better-dom: Live extension playground\n * @version 4.1.0 Tue, 24 Mar 2020 09:55:50 GMT\n * @link https://github.com/chemerisuk/better-dom\n * @copyright 2020 Maksim Chemerisuk\n * @license MIT\n */\n!function(){\"use strict\";function t(t){return t.ownerDocument.defaultView.getComputedStyle(t)}function e(t){if(t&&t.nodeType===E)return t.ownerDocument.getElementsByTagName(\"head\")[0].appendChild(t)}function n(t,e,n){void 0===n&&(n=\"$Element\");var r=\"http://chemerisuk.github.io/better-dom/\"+n+\".html#\"+t,i=\"invalid call `\"+n+(\"DOM\"===n?\".\":\"#\")+t+\"(\";i+=O.call(e,String).join(\", \")+\")`. \",this.message=i+\"Check \"+r+\" to verify the arguments\"}function r(t,e){n.call(this,t,e,\"DOM\")}function i(t,e){n.call(this,t,e,\"$Document\")}function o(t){t&&(this[0]=t,t.__40100__=this)}function s(t){if(!(this instanceof s))return t?t.__40100__||new s(t):new s;o.call(this,t);var n=t.createElement(\"style\");n.innerHTML=P,e(n),t[N]=n.sheet||n.styleSheet}function a(t){return this instanceof a?void o.call(this,t):t?t.__40100__||new a(t):new a}function c(t){return function(e){var r=this[0];if(!r||\"string\"!=typeof e)throw new n(\"create\"+t,arguments);var i=t?[]:null,o=!i&&q.exec(e);if(o)return new a(r.createElement(o[1]));H.innerHTML=e.trim();for(var s;s=H.firstElementChild;){if(H.removeChild(s),r!==g&&(s=r.adoptNode(s)),!i){i=new a(s);break}i.push(new a(s))}return i||new a}}function f(t,e){var n=a(e),r=t.constructor;Object.keys(t).forEach(function(e){var i=t[e];i!==r&&(n[e]=i)}),r&&r.call(n)}function u(t,e){return function(r){if(r&&typeof r!==e)throw new n(t,arguments);var i=this[0],o=z(r),s=i?i.children:[];return\"number\"==typeof r?(r<0&&(r=s.length+r),a(s[r])):o?D.call(s,o).map(a):O.call(s,a)}}function p(t,e,n){return function(){var r=this,i=this[0];if(!i||e&&!i.parentNode)return this;for(var o=t?\"\":i.ownerDocument.createDocumentFragment(),c=arguments.length,f=new Array(c),u=0;u\":\"#unknown\"};var F=new s(d.document),R=d.DOM;F.constructor=function(t){var e=t&&t.nodeType;return e===E?a(t):e===A?s(t):new o(t)},F.noConflict=function(){return d.DOM===F&&(d.DOM=R),F},d.DOM=F;var q=/^<([a-zA-Z-]+)\\/?>$/,H=g.createElement(\"body\");s.prototype.create=c(\"\"),s.prototype.createAll=c(\"All\");var U=/^(\\w*)(?:#([\\w\\-]+))?(?:\\[([\\w\\-\\=]+)\\])?(?:\\.([\\w\\-]+))?$/,$=C.concat(null).map(function(t){return(t?t.toLowerCase()+\"M\":\"m\")+\"atchesSelector\"}).reduceRight(function(t,e){return t||e in w&&e},null),z=function(t,e){if(\"string\"!=typeof t)return null;var n=U.exec(t);return n&&(n[1]&&(n[1]=n[1].toLowerCase()),n[3]&&(n[3]=n[3].split(\"=\")),n[4]&&(n[4]=\" \"+n[4]+\" \")),function(r){var i,o;for(n||$||(o=(e||r.ownerDocument).querySelectorAll(t));r&&1===r.nodeType;r=r.parentNode){if(n)i=(!n[1]||r.nodeName.toLowerCase()===n[1])&&(!n[2]||r.id===n[2])&&(!n[3]||(n[3][1]?r.getAttribute(n[3][0])===n[3][1]:r.hasAttribute(n[3][0])))&&(!n[4]||(\" \"+r.className+\" \").indexOf(n[4])>=0);else if($)i=r[$](t);else for(var s=0,a=o.length;s=0)},a.prototype.addClass=function(){for(var t=this,e=arguments,r=arguments.length,i=new Array(r),o=0;o element extensions\n * @version 2.0.0 Sat, 01 Dec 2018 10:31:43 GMT\n * @link https://github.com/chemerisuk/better-time-element\n * @copyright 2018 Maksim Chemerisuk\n * @license MIT\n */\n!function(){\"use strict\";var t=DOM.find(\"html\"),e=t.get(\"lang\")||void 0,a=DOM.findAll(\"meta[name^='data-format:']\").reduce(function(t,a){var n=a.get(\"name\").split(\":\")[1].trim(),r=JSON.parse(a.get(\"content\"));if(n)try{t[n]=new window.Intl.DateTimeFormat(e,r)}catch(i){}return t},{});DOM.extend(\"local-time\",{constructor:function(){var t=this.get(\"lang\")||e,a=new Date(this.get(\"datetime\")),n=this.get(\"data-format\");this.value(this._formatDate(a,t,n))},_formatDate:function(t,n,r){var i=a[r];try{return i&&n===e?i.format(t):t.toLocaleString(n,r?JSON.parse(r):{})}catch(o){return t.toLocaleString()}}})}();","/**\n * better-dateinput-polyfill: input[type=date] polyfill\n * @version 4.0.0-beta.2 Sat, 17 Apr 2021 16:07:26 GMT\n * @link https://github.com/chemerisuk/better-dateinput-polyfill\n * @copyright 2021 Maksim Chemerisuk\n * @license MIT\n*/\n!function(){\"use strict\";var t=window,e=document,i=e.documentElement,a=\"ScriptEngineMajorVersion\"in t;function n(t,e){return Array.prototype.slice.call(t.querySelectorAll(e),0)}function r(t,e){return\"string\"==typeof e?Array(t+1).join(e):Array.apply(null,Array(t)).map(e).join(\"\")}function o(t){return' '}function s(t,i){var a=e.createElement(\"style\");a.type=\"text/css\",a.innerHTML=t,i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a)}var l=function(){try{(new Date).toLocaleString(\"_\")}catch(t){return t instanceof RangeError}return!1}();function u(t){var e=(t||\"?\").split(/\\D/).map((function(t){return parseInt(t)})),i=e[0],a=e[1],n=e[2],r=new Date(i,a-1,n,12,0);return isNaN(r.getTime())?null:r}function d(t){return[t.getFullYear(),(\"0\"+(t.getMonth()+1)).slice(-2),(\"0\"+t.getDate()).slice(-2)].join(\"-\")}var h=function(){function t(t,e){this._input=t,this._formatOptions=e,this._initPicker()}var h=t.prototype;return h._initPicker=function(){var t=this;this._picker=e.createElement(\"dateinput-picker\"),this._picker.setAttribute(\"aria-hidden\",!0),this._input.parentNode.insertBefore(this._picker,this._input);var i=e.createElement(\"object\");i.type=\"text/html\",i.width=\"100%\",i.height=\"100%\",a||(i.data=\"about:blank\"),i.onload=function(e){t._initContent(e.target.contentDocument),delete i.onload},this._picker.appendChild(i),a&&(i.data=\"about:blank\")},h._initContent=function(t){var e=this,i=new Date,a=this._getLimitationDate(\"min\"),u=this._getLimitationDate(\"max\"),d=a?a.getFullYear():i.getFullYear()-30,h=u?u.getFullYear():i.getFullYear()+30;t.body.innerHTML=''+r(7,(function(t,i){return\"\"+(a=i,n=e._formatOptions,r=new Date(1971,1,a+(n.hour12?0:1)),(l?r.toLocaleString(n.locale,{weekday:\"short\"}):r.toUTCString().split(\",\")[0].slice(0,2))+\" \");var a,n,r}))+' '+r(6,\"\"+r(7,\"\")+\" \")+'
'+r(12,(function(t,i){return''+(a=i,n=e._formatOptions,r=new Date(25e8*(a+1)),l?r.toLocaleString(n.locale,{month:\"short\"}):r.toUTCString().split(\" \")[2]);var a,n,r}))+' '+r(h-d+1,(function(t,e){return''+(d+e)}))+\" \",s(\"body{cursor:default;font-family:system-ui, -apple-system, Segoe UI, Roboto, Noto Sans, Ubuntu, Cantarell, Helvetica Neue,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;margin:0}[aria-labelledby]{bottom:0;height:87.5vh;left:0;position:absolute;text-align:center;width:100%}[aria-labelledby][aria-hidden=true]{visibility:hidden}header{display:block;height:12.5vh;line-height:12.5vh;overflow:hidden;text-align:center}[role=button]{text-align:center;transition:transform 75ms ease-in;width:14.28571vw}[role=button][rel=prev]{float:left}[role=button][rel=prev]:active{transform:translateX(-2px)}[role=button][rel=next]{float:right}[role=button][rel=next]:active{transform:translateX(2px)}[role=button] svg{pointer-events:none;width:16px;height:100%}@media (hover:hover){[role=button]:hover{transform:scale(1.2)}}[aria-live=polite]{border:1px dotted transparent;color:#007bff;font-weight:700;margin:auto 0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}@media (hover:hover){[aria-live=polite]:hover{border-bottom-color:inherit}}table{border-spacing:0;table-layout:fixed}th{box-sizing:border-box;height:12.5vh;padding-bottom:8px;vertical-align:middle}td{border-radius:var(--border-radius);padding:0}td:not([aria-selected]){color:#ccc}td[aria-current=date]{font-weight:700}td[aria-disabled=true]{background-color:#ececec;border-radius:0;color:#ccc;cursor:not-allowed}#months,#years{box-sizing:border-box;float:left;height:100%;line-height:7.29167vh;list-style:none;margin:0;overflow-x:hidden;overflow-y:scroll;padding:0 4px;width:50%}@media (hover:hover){[data-date]:hover,[data-month]:hover,[data-year]:hover{background-color:#ececec}}[data-date][aria-selected=true],[data-month][aria-selected=true],[data-year][aria-selected=true]{background-color:#007bff;color:#fff}\",t.head),this._caption=n(t,\"[aria-live=polite]\")[0],this._pickers=n(t,\"[aria-labelledby]\"),t.addEventListener(\"mousedown\",this._onMouseDown.bind(this)),t.addEventListener(\"contextmenu\",(function(t){return t.preventDefault()})),t.addEventListener(\"dblclick\",(function(t){return t.preventDefault()})),this.show()},h._getLimitationDate=function(t){return this._input?u(this._input.getAttribute(t)):null},h._onMouseDown=function(t){var e=t.target;t.preventDefault(),t.button||(e===this._caption?this._togglePickerMode():\"button\"===e.getAttribute(\"role\")?this._clickButton(e):e.hasAttribute(\"data-date\")?this._clickDate(e):(e.hasAttribute(\"data-month\")||e.hasAttribute(\"data-year\"))&&this._clickMonthYear(e))},h._clickButton=function(t){var e=this.getCaptionDate(),i=\"prev\"===t.getAttribute(\"rel\")?-1:1,a=this.isAdvancedMode();a?e.setFullYear(e.getFullYear()+i):e.setMonth(e.getMonth()+i),this.isValidValue(e)&&(this.render(e),a&&(this._input.valueAsDate=e))},h._clickDate=function(t){\"true\"!==t.getAttribute(\"aria-disabled\")&&(this._input.value=t.getAttribute(\"data-date\"),this.hide())},h._clickMonthYear=function(t){var e=parseInt(t.getAttribute(\"data-month\")),i=parseInt(t.getAttribute(\"data-year\"));if(e>=0||i>=0){var a=this.getCaptionDate();isNaN(e)||a.setMonth(e),isNaN(i)||a.setFullYear(i),this.isValidValue(a)&&(this._renderAdvancedPicker(a,!1),this._input.valueAsDate=a)}},h._togglePickerMode=function(){var t=this;this._pickers.forEach((function(e,i){var a=t._input.valueAsDate||new Date,n=\"true\"===e.getAttribute(\"aria-hidden\");0===i?n&&t._renderCalendarPicker(a):n&&t._renderAdvancedPicker(a),e.setAttribute(\"aria-hidden\",!n)}))},h._renderCalendarPicker=function(t){var e=new Date,i=this._input.valueAsDate,a=this._getLimitationDate(\"min\"),r=this._getLimitationDate(\"max\"),o=new Date(t.getFullYear(),t.getMonth());o.setDate((this._formatOptions.hour12?0:0===o.getDay()?-6:1)-o.getDay()),n(this._pickers[0],\"td\").forEach((function(n){o.setDate(o.getDate()+1);var s=d(o);o.getMonth()===t.getMonth()?i&&s===d(i)?n.setAttribute(\"aria-selected\",!0):n.setAttribute(\"aria-selected\",!1):n.removeAttribute(\"aria-selected\"),s===d(e)?n.setAttribute(\"aria-current\",\"date\"):n.removeAttribute(\"aria-current\"),a&&or?n.setAttribute(\"aria-disabled\",!0):n.removeAttribute(\"aria-disabled\"),n.textContent=o.getDate(),n.setAttribute(\"data-date\",s)})),this.setCaptionDate(t)},h._renderAdvancedPicker=function(t,e){if(void 0===e&&(e=!0),n(this._pickers[1],\"[aria-selected]\").forEach((function(t){t.removeAttribute(\"aria-selected\")})),t){var i=n(this._pickers[1],'[data-month=\"'+t.getMonth()+'\"]')[0],a=n(this._pickers[1],'[data-year=\"'+t.getFullYear()+'\"]')[0];i.setAttribute(\"aria-selected\",!0),a.setAttribute(\"aria-selected\",!0),e&&(i.parentNode.scrollTop=i.offsetTop,a.parentNode.scrollTop=a.offsetTop),this.setCaptionDate(t)}},h.isValidValue=function(t){var e=this._getLimitationDate(\"min\"),i=this._getLimitationDate(\"max\");return!(e&&ti)},h.isAdvancedMode=function(){return\"true\"===this._pickers[0].getAttribute(\"aria-hidden\")},h.getCaptionDate=function(){return new Date(this._caption.getAttribute(\"datetime\"))},h.setCaptionDate=function(t){var e,i;this._caption.textContent=(e=t,i=this._formatOptions,l?e.toLocaleString(i.locale,{month:\"long\",year:\"numeric\"}):e.toUTCString().split(\" \").slice(2,4).join(\" \")),this._caption.setAttribute(\"datetime\",t.toISOString())},h.isHidden=function(){return\"true\"===this._picker.getAttribute(\"aria-hidden\")},h.show=function(){if(this.isHidden()){var t=this._input,e=this._picker.getBoundingClientRect(),a=t.getBoundingClientRect(),n=a.height;i.clientHeight 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n var delta = new Delta(ops);\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n\n // Optimization if rest of other is just retain\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n }\n\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n _inherits(BlockEmbed, _Parchment$Embed);\n\n function BlockEmbed() {\n _classCallCheck(this, BlockEmbed);\n\n return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n }\n\n _createClass(BlockEmbed, [{\n key: 'attach',\n value: function attach() {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n }\n }, {\n key: 'delta',\n value: function delta() {\n return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n this.format(name, value);\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n var block = _parchment2.default.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n }\n }\n }]);\n\n return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n _inherits(Block, _Parchment$Block);\n\n function Block(domNode) {\n _classCallCheck(this, Block);\n\n var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n _this2.cache = {};\n return _this2;\n }\n\n _createClass(Block, [{\n key: 'delta',\n value: function delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n if (value.length === 0) return;\n var lines = value.split('\\n');\n var text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n var block = this;\n lines.reduce(function (index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n var head = this.children.head;\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n if (head instanceof _break2.default) {\n head.remove();\n }\n this.cache = {};\n }\n }, {\n key: 'length',\n value: function length() {\n if (this.cache.length == null) {\n this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n }, {\n key: 'moveChildren',\n value: function moveChildren(target, ref) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n this.cache = {};\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n }\n }, {\n key: 'removeChild',\n value: function removeChild(child) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n this.cache = {};\n }\n }, {\n key: 'split',\n value: function split(index) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n var clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2.default)(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _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; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n _logger2.default.level(limit);\n }\n }, {\n key: 'find',\n value: function find(node) {\n return node.__quill || _parchment2.default.find(node);\n }\n }, {\n key: 'import',\n value: function _import(name) {\n if (this.imports[name] == null) {\n debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n }\n return this.imports[name];\n }\n }, {\n key: 'register',\n value: function register(path, target) {\n var _this = this;\n\n var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof path !== 'string') {\n var name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach(function (key) {\n _this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn('Overwriting ' + path + ' with', target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n _parchment2.default.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n }]);\n\n function Quill(container) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Quill);\n\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n var html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new _emitter4.default();\n this.scroll = _parchment2.default.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new _editor2.default(this.scroll);\n this.selection = new _selection2.default(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n if (type === _emitter4.default.events.TEXT_CHANGE) {\n _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n var range = _this2.selection.lastRange;\n var index = range && range.length === 0 ? range.index : undefined;\n modify.call(_this2, function () {\n return _this2.editor.update(null, mutations, index);\n }, source);\n });\n var contents = this.clipboard.convert('');\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n _createClass(Quill, [{\n key: 'addContainer',\n value: function addContainer(container) {\n var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof container === 'string') {\n var className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.selection.setRange(null);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length, source) {\n var _this3 = this;\n\n var _overload = overload(index, length, source);\n\n var _overload2 = _slicedToArray(_overload, 4);\n\n index = _overload2[0];\n length = _overload2[1];\n source = _overload2[3];\n\n return modify.call(this, function () {\n return _this3.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.enable(false);\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n }, {\n key: 'focus',\n value: function focus() {\n var scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var _this4 = this;\n\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n var change = new _quillDelta2.default();\n if (range == null) {\n return change;\n } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n } else if (range.length === 0) {\n _this4.selection.format(name, value);\n return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n _this4.setSelection(range, _emitter4.default.sources.SILENT);\n return change;\n }, source);\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length, name, value, source) {\n var _this5 = this;\n\n var formats = void 0;\n\n var _overload3 = overload(index, length, name, value, source);\n\n var _overload4 = _slicedToArray(_overload3, 4);\n\n index = _overload4[0];\n length = _overload4[1];\n formats = _overload4[2];\n source = _overload4[3];\n\n return modify.call(this, function () {\n return _this5.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length, name, value, source) {\n var _this6 = this;\n\n var formats = void 0;\n\n var _overload5 = overload(index, length, name, value, source);\n\n var _overload6 = _slicedToArray(_overload5, 4);\n\n index = _overload6[0];\n length = _overload6[1];\n formats = _overload6[2];\n source = _overload6[3];\n\n return modify.call(this, function () {\n return _this6.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var bounds = void 0;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n var containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n }, {\n key: 'getContents',\n value: function getContents() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload7 = overload(index, length);\n\n var _overload8 = _slicedToArray(_overload7, 2);\n\n index = _overload8[0];\n length = _overload8[1];\n\n return this.editor.getContents(index, length);\n }\n }, {\n key: 'getFormat',\n value: function getFormat() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n }, {\n key: 'getIndex',\n value: function getIndex(blot) {\n return blot.offset(this.scroll);\n }\n }, {\n key: 'getLength',\n value: function getLength() {\n return this.scroll.length();\n }\n }, {\n key: 'getLeaf',\n value: function getLeaf(index) {\n return this.scroll.leaf(index);\n }\n }, {\n key: 'getLine',\n value: function getLine(index) {\n return this.scroll.line(index);\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n }, {\n key: 'getModule',\n value: function getModule(name) {\n return this.theme.modules[name];\n }\n }, {\n key: 'getSelection',\n value: function getSelection() {\n var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n }, {\n key: 'getText',\n value: function getText() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload9 = overload(index, length);\n\n var _overload10 = _slicedToArray(_overload9, 2);\n\n index = _overload10[0];\n length = _overload10[1];\n\n return this.editor.getText(index, length);\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return this.selection.hasFocus();\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n var _this7 = this;\n\n var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n return modify.call(this, function () {\n return _this7.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text, name, value, source) {\n var _this8 = this;\n\n var formats = void 0;\n\n var _overload11 = overload(index, 0, name, value, source);\n\n var _overload12 = _slicedToArray(_overload11, 4);\n\n index = _overload12[0];\n formats = _overload12[2];\n source = _overload12[3];\n\n return modify.call(this, function () {\n return _this8.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n }, {\n key: 'off',\n value: function off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n }, {\n key: 'on',\n value: function on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n }, {\n key: 'once',\n value: function once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n }, {\n key: 'pasteHTML',\n value: function pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length, source) {\n var _this9 = this;\n\n var _overload13 = overload(index, length, source);\n\n var _overload14 = _slicedToArray(_overload13, 4);\n\n index = _overload14[0];\n length = _overload14[1];\n source = _overload14[3];\n\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }, {\n key: 'setContents',\n value: function setContents(delta) {\n var _this10 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n var length = _this10.getLength();\n var deleted = _this10.editor.deleteText(0, length);\n var applied = _this10.editor.applyDelta(delta);\n var lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n applied.delete(1);\n }\n var ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n }, {\n key: 'setSelection',\n value: function setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n var _overload15 = overload(index, length, source);\n\n var _overload16 = _slicedToArray(_overload15, 4);\n\n index = _overload16[0];\n length = _overload16[1];\n source = _overload16[3];\n\n this.selection.setRange(new _selection.Range(index, length), source);\n if (source !== _emitter4.default.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n }, {\n key: 'setText',\n value: function setText(text) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n var delta = new _quillDelta2.default().insert(text);\n return this.setContents(delta, source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n }, {\n key: 'updateContents',\n value: function updateContents(delta) {\n var _this11 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n return _this11.editor.applyDelta(delta, source);\n }, source, true);\n }\n }]);\n\n return Quill;\n}();\n\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version = false ? 'dev' : \"1.3.7\";\n\nQuill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n userConfig = (0, _extend2.default)(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill.import('modules/' + name);\n if (moduleClass == null) {\n debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n var formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n if (index instanceof _quillDelta2.default) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n _inherits(Inline, _Parchment$Inline);\n\n function Inline() {\n _classCallCheck(this, Inline);\n\n return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n _createClass(Inline, [{\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n var blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n var parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n }], [{\n key: 'compare',\n value: function compare(self, other) {\n var selfIndex = Inline.order.indexOf(self);\n var otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n }]);\n\n return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n _inherits(TextBlot, _Parchment$Text);\n\n function TextBlot() {\n _classCallCheck(this, TextBlot);\n\n return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n }\n\n return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n var _node$__quill$emitter;\n\n (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n }\n });\n });\n});\n\nvar Emitter = function (_EventEmitter) {\n _inherits(Emitter, _EventEmitter);\n\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n _this.listeners = {};\n _this.on('error', debug.error);\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }, {\n key: 'handleDOM',\n value: function handleDOM(event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (this.listeners[event.type] || []).forEach(function (_ref) {\n var node = _ref.node,\n handler = _ref.handler;\n\n if (event.target === node || node.contains(event.target)) {\n handler.apply(undefined, [event].concat(args));\n }\n });\n }\n }, {\n key: 'listenDOM',\n value: function listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node: node, handler: handler });\n }\n }]);\n\n return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n EDITOR_CHANGE: 'editor-change',\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n SCROLL_OPTIMIZE: 'scroll-optimize',\n SCROLL_UPDATE: 'scroll-update',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Module);\n\n this.quill = quill;\n this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n _inherits(Code, _Inline);\n\n function Code() {\n _classCallCheck(this, Code);\n\n return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n }\n\n return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n _inherits(CodeBlock, _Block);\n\n function CodeBlock() {\n _classCallCheck(this, CodeBlock);\n\n return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n }\n\n _createClass(CodeBlock, [{\n key: 'delta',\n value: function delta() {\n var _this3 = this;\n\n var text = this.domNode.textContent;\n if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce(function (delta, frag) {\n return delta.insert(frag).insert('\\n', _this3.formats());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (name === this.statics.blotName && value) return;\n\n var _descendant = this.descendant(_text2.default, this.length() - 1),\n _descendant2 = _slicedToArray(_descendant, 1),\n text = _descendant2[0];\n\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length === 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\n }\n var nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n var prevNewline = this.newlineIndex(index, true) + 1;\n var isolateLength = nextNewline - prevNewline + 1;\n var blot = this.isolate(prevNewline, isolateLength);\n var next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return;\n\n var _descendant3 = this.descendant(_text2.default, index),\n _descendant4 = _slicedToArray(_descendant3, 2),\n text = _descendant4[0],\n offset = _descendant4[1];\n\n text.insertAt(offset, value);\n }\n }, {\n key: 'length',\n value: function length() {\n var length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n }, {\n key: 'newlineIndex',\n value: function newlineIndex(searchIndex) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!reverse) {\n var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2.default.create('text', '\\n'));\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2.default.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof _parchment2.default.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op.delete || op.insert.length || 1;\n var attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n if (line instanceof _block2.default) {\n var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n }\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op.delete === 'number') {\n _this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2.default().retain(index).delete(length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n if (!(line instanceof _code2.default)) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var lines = [],\n leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2.default) {\n lines.push(blot);\n } else if (blot instanceof _parchment2.default.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n }\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n return formats;\n });\n return _extend2.default.apply(_extend2.default, formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var block = this.scroll.children.head;\n if (block.statics.blotName !== _block2.default.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _break2.default;\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2.default();\n if (line != null) {\n if (!(line instanceof _code2.default)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n var delta = new _quillDelta2.default().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n var oldText = new _quillDelta2.default().insert(oldValue);\n var newText = new _quillDelta2.default().insert(textBlot.value());\n var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2.default());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n }]);\n\n return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2.default)(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _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); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Range);\n\n this.index = index;\n this.length = length;\n};\n\nvar Selection = function () {\n function Selection(scroll, emitter) {\n var _this = this;\n\n _classCallCheck(this, Selection);\n\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = _parchment2.default.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, function () {\n if (!_this.mouseDown) {\n setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n }\n });\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n _this.update(_emitter4.default.sources.SILENT);\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n if (!_this.hasFocus()) return;\n var native = _this.getNativeRange();\n if (native == null) return;\n if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n try {\n _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n if (context.range) {\n var _context$range = context.range,\n startNode = _context$range.startNode,\n startOffset = _context$range.startOffset,\n endNode = _context$range.endNode,\n endOffset = _context$range.endOffset;\n\n _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(_emitter4.default.sources.SILENT);\n }\n\n _createClass(Selection, [{\n key: 'handleComposition',\n value: function handleComposition() {\n var _this2 = this;\n\n this.root.addEventListener('compositionstart', function () {\n _this2.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this2.composing = false;\n if (_this2.cursor.parent) {\n var range = _this2.cursor.restore();\n if (!range) return;\n setTimeout(function () {\n _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n }, {\n key: 'handleDragging',\n value: function handleDragging() {\n var _this3 = this;\n\n this.emitter.listenDOM('mousedown', document.body, function () {\n _this3.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, function () {\n _this3.mouseDown = false;\n _this3.update(_emitter4.default.sources.USER);\n });\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n }, {\n key: 'format',\n value: function format(_format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n this.scroll.update();\n var nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2.default.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof _parchment2.default.Leaf) {\n var after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(_format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n var node = void 0,\n _scroll$leaf = this.scroll.leaf(index),\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n leaf = _scroll$leaf2[0],\n offset = _scroll$leaf2[1];\n if (leaf == null) return null;\n\n var _leaf$position = leaf.position(offset, true);\n\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n node = _leaf$position2[0];\n offset = _leaf$position2[1];\n\n var range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n\n var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n leaf = _scroll$leaf4[0];\n offset = _scroll$leaf4[1];\n\n if (leaf == null) return null;\n\n var _leaf$position3 = leaf.position(offset, true);\n\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n node = _leaf$position4[0];\n offset = _leaf$position4[1];\n\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n }, {\n key: 'getNativeRange',\n value: function getNativeRange() {\n var selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n var nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n var range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n var range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'normalizedToRange',\n value: function normalizedToRange(range) {\n var _this4 = this;\n\n var positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n var indexes = positions.map(function (position) {\n var _position = _slicedToArray(position, 2),\n node = _position[0],\n offset = _position[1];\n\n var blot = _parchment2.default.find(node, true);\n var index = blot.offset(_this4.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof _parchment2.default.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n return new Range(start, end - start);\n }\n }, {\n key: 'normalizeNative',\n value: function normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n var range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n }, {\n key: 'rangeToNative',\n value: function rangeToNative(range) {\n var _this5 = this;\n\n var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n var args = [];\n var scrollLength = this.scroll.length();\n indexes.forEach(function (index, i) {\n index = Math.min(scrollLength - 1, index);\n var node = void 0,\n _scroll$leaf5 = _this5.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\n var _leaf$position5 = leaf.position(offset, i !== 0);\n\n var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n node = _leaf$position6[0];\n offset = _leaf$position6[1];\n\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(scrollingContainer) {\n var range = this.lastRange;\n if (range == null) return;\n var bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n var limit = this.scroll.length() - 1;\n\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n _scroll$line2 = _slicedToArray(_scroll$line, 1),\n first = _scroll$line2[0];\n\n var last = first;\n if (range.length > 0) {\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n last = _scroll$line4[0];\n }\n if (first == null || last == null) return;\n var scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n }\n }\n }, {\n key: 'setNativeRange',\n value: function setNativeRange(startNode, startOffset) {\n var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n var selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var native = (this.getNativeRange() || {}).native;\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n var range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(range) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n var args = this.rangeToNative(range);\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var oldRange = this.lastRange;\n\n var _getRange = this.getRange(),\n _getRange2 = _slicedToArray(_getRange, 2),\n lastRange = _getRange2[0],\n nativeRange = _getRange2[1];\n\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n var _emitter;\n\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n }\n }]);\n\n return Selection;\n}();\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n _inherits(Break, _Parchment$Embed);\n\n function Break() {\n _classCallCheck(this, Break);\n\n return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n }\n\n _createClass(Break, [{\n key: 'insertInto',\n value: function insertInto(parent, ref) {\n if (parent.children.length === 0) {\n _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n } else {\n this.remove();\n }\n }\n }, {\n key: 'length',\n value: function length() {\n return 0;\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }], [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n var _a;\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\nIterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n _inherits(Scroll, _Parchment$Scroll);\n\n function Scroll(domNode, config) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n _this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n _this.domNode.addEventListener('DOMNodeInserted', function () {});\n _this.optimize();\n _this.enable();\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'batchStart',\n value: function batchStart() {\n this.batch = true;\n }\n }, {\n key: 'batchEnd',\n value: function batchEnd() {\n this.batch = false;\n this.optimize();\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n var _line = this.line(index),\n _line2 = _slicedToArray(_line, 2),\n first = _line2[0],\n offset = _line2[1];\n\n var _line3 = this.line(index + length),\n _line4 = _slicedToArray(_line3, 1),\n last = _line4[0];\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof _code2.default) {\n var newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof _code2.default) {\n var _newlineIndex = last.newlineIndex(0);\n if (_newlineIndex > -1) {\n last.split(_newlineIndex + 1);\n }\n }\n var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.domNode.setAttribute('contenteditable', enabled);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n this.optimize();\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n var blot = _parchment2.default.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2.default.create(value, def);\n this.appendChild(embed);\n }\n } else {\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n }\n this.optimize();\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n var wrapper = _parchment2.default.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n }\n }, {\n key: 'leaf',\n value: function leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n }, {\n key: 'line',\n value: function line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n }, {\n key: 'lines',\n value: function lines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n var getLines = function getLines(blot, index, length) {\n var lines = [],\n lengthLeft = length;\n blot.children.forEachAt(index, length, function (child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof _parchment2.default.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.batch === true) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n if (this.batch === true) return;\n var source = _emitter2.default.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n }\n }\n }]);\n\n return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _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; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n _inherits(Keyboard, _Module);\n\n _createClass(Keyboard, null, [{\n key: 'match',\n value: function match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n }]);\n\n function Keyboard(quill, options) {\n _classCallCheck(this, Keyboard);\n\n var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n _this.bindings = {};\n Object.keys(_this.options.bindings).forEach(function (name) {\n if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n return;\n }\n if (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n _this.listen();\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = (0, _extend2.default)(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n var range = _this2.quill.getSelection();\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range) {\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2.default.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function handler(range) {\n var _quill$getLine3 = this.quill.getLine(range.index),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n line = _quill$getLine4[0],\n offset = _quill$getLine4[1];\n\n var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range, context) {\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n line = _quill$getLine6[0],\n offset = _quill$getLine6[1];\n\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function handler(range, context) {\n var length = context.prefix.length;\n\n var _quill$getLine7 = this.quill.getLine(range.index),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n line = _quill$getLine8[0],\n offset = _quill$getLine8[1];\n\n if (offset > length) return true;\n var value = void 0;\n switch (context.prefix.trim()) {\n case '[]':case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n line = _quill$getLine10[0],\n offset = _quill$getLine10[1];\n\n var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n var _ref3;\n\n var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return _ref3 = {\n key: key,\n shiftKey: shiftKey,\n altKey: null\n }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n var index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += range.length + 1;\n }\n\n var _quill$getLeaf3 = this.quill.getLeaf(index),\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n leaf = _quill$getLeaf4[0];\n\n if (!(leaf instanceof _parchment2.default.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n }\n }\n return false;\n }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine11 = this.quill.getLine(range.index),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n line = _quill$getLine12[0];\n\n var formats = {};\n if (context.offset === 0) {\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n prev = _quill$getLine14[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n var formats = {},\n nextLength = 0;\n\n var _quill$getLine15 = this.quill.getLine(range.index),\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n line = _quill$getLine16[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n next = _quill$getLine18[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n var lines = this.quill.getLines(range);\n var formats = {};\n if (lines.length > 1) {\n var firstFormats = lines[0].formats();\n var lastFormats = lines[lines.length - 1].formats();\n formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n }\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: { 'code-block': true },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n _inherits(Cursor, _Parchment$Embed);\n\n _createClass(Cursor, null, [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n function Cursor(domNode, selection) {\n _classCallCheck(this, Cursor);\n\n var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n _this.selection = selection;\n _this.textNode = document.createTextNode(Cursor.CONTENTS);\n _this.domNode.appendChild(_this.textNode);\n _this._length = 0;\n return _this;\n }\n\n _createClass(Cursor, [{\n key: 'detach',\n value: function detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (this._length !== 0) {\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n }\n var target = this,\n index = 0;\n while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n }, {\n key: 'index',\n value: function index(node, offset) {\n if (node === this.textNode) return 0;\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'length',\n value: function length() {\n return this._length;\n }\n }, {\n key: 'position',\n value: function position() {\n return [this.textNode, this.textNode.data.length];\n }\n }, {\n key: 'remove',\n value: function remove() {\n _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n if (this.selection.composing || this.parent == null) return;\n var textNode = this.textNode;\n var range = this.selection.getNativeRange();\n var restoreText = void 0,\n start = void 0,\n end = void 0;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n var _ref = [textNode, range.start.offset, range.end.offset];\n restoreText = _ref[0];\n start = _ref[1];\n end = _ref[2];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof _text2.default) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n var _map = [start, end].map(function (offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n })) {\n var range = this.restore();\n if (range) context.range = range;\n }\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n _inherits(Container, _Parchment$Container);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n }\n\n return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n _inherits(ColorAttributor, _Parchment$Attributor);\n\n function ColorAttributor() {\n _classCallCheck(this, ColorAttributor);\n\n return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n }\n\n _createClass(ColorAttributor, [{\n key: 'value',\n value: function value(domNode) {\n var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function (component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n }]);\n\n return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */,\n/* 28 */,\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n 'blots/block': _block2.default,\n 'blots/block/embed': _block.BlockEmbed,\n 'blots/break': _break2.default,\n 'blots/container': _container2.default,\n 'blots/cursor': _cursor2.default,\n 'blots/embed': _embed2.default,\n 'blots/inline': _inline2.default,\n 'blots/scroll': _scroll2.default,\n 'blots/text': _text2.default,\n\n 'modules/clipboard': _clipboard2.default,\n 'modules/history': _history2.default,\n 'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n function Theme(quill, options) {\n _classCallCheck(this, Theme);\n\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n _createClass(Theme, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n Object.keys(this.options.modules).forEach(function (name) {\n if (_this.modules[name] == null) {\n _this.addModule(name);\n }\n });\n }\n }, {\n key: 'addModule',\n value: function addModule(name) {\n var moduleClass = this.quill.constructor.import('modules/' + name);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n }]);\n\n return Theme;\n}();\n\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed(node) {\n _classCallCheck(this, Embed);\n\n var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n _this.contentNode = document.createElement('span');\n _this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n _this.contentNode.appendChild(childNode);\n });\n _this.leftGuard = document.createTextNode(GUARD_TEXT);\n _this.rightGuard = document.createTextNode(GUARD_TEXT);\n _this.domNode.appendChild(_this.leftGuard);\n _this.domNode.appendChild(_this.contentNode);\n _this.domNode.appendChild(_this.rightGuard);\n return _this;\n }\n\n _createClass(Embed, [{\n key: 'index',\n value: function index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'restore',\n value: function restore(node) {\n var range = void 0,\n textNode = void 0;\n var text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof _text2.default) {\n var prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof _text2.default) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n var range = _this2.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n }]);\n\n return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n function FontStyleAttributor() {\n _classCallCheck(this, FontStyleAttributor);\n\n return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n }\n\n _createClass(FontStyleAttributor, [{\n key: 'value',\n value: function value(node) {\n return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n }\n }]);\n\n return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */,\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n _inherits(History, _Module);\n\n function History(quill, options) {\n _classCallCheck(this, History);\n\n var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n _this.lastRecorded = 0;\n _this.ignoreChange = false;\n _this.clear();\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n }\n return _this;\n }\n\n _createClass(History, [{\n key: 'change',\n value: function change(source, dest) {\n if (this.stack[source].length === 0) return;\n var delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n this.ignoreChange = false;\n var index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = { undo: [], redo: [] };\n }\n }, {\n key: 'cutoff',\n value: function cutoff() {\n this.lastRecorded = 0;\n }\n }, {\n key: 'record',\n value: function record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n var undoDelta = this.quill.getContents().diff(oldDelta);\n var timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n var delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n }, {\n key: 'redo',\n value: function redo() {\n this.change('redo', 'undo');\n }\n }, {\n key: 'transform',\n value: function transform(delta) {\n this.stack.undo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n }, {\n key: 'undo',\n value: function undo() {\n this.change('undo', 'redo');\n }\n }]);\n\n return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function (attr) {\n return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n var deleteLength = delta.reduce(function (length, op) {\n length += op.delete || 0;\n return length;\n }, 0);\n var changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */,\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length = cur.length();\n if (index < length ||\n (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function (token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABA C -> AB AC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _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; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n _this.container = _this.quill.addContainer('ql-clipboard');\n _this.container.setAttribute('contenteditable', true);\n _this.container.setAttribute('tabindex', -1);\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n selector = _ref2[0],\n matcher = _ref2[1];\n\n if (!options.matchVisual && matcher === matchSpacing) return;\n _this.addMatcher(selector, matcher);\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n return this.convert();\n }\n var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[_code2.default.blotName]) {\n var text = this.container.innerText;\n this.container.innerHTML = '';\n return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, _quill2.default.sources.SILENT);\n } else {\n var paste = this.convert(html);\n this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2.default().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(_quill2.default.sources.SILENT);\n setTimeout(function () {\n delta = delta.concat(_this2.convert()).delete(range.length);\n _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n // range.length contributes to delta.length()\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n _this2.quill.focus();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2.default());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n var endText = \"\";\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2.default());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n}\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n var classes = _parchment2.default.Attributor.Class.keys(node);\n var styles = _parchment2.default.Attributor.Style.keys(node);\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2.default().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n var indent = -1,\n parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n var text = node.data;\n // Word represents empty line with \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */,\n/* 57 */,\n/* 58 */,\n/* 59 */,\n/* 60 */,\n/* 61 */,\n/* 62 */,\n/* 63 */,\n/* 64 */,\n/* 65 */,\n/* 66 */,\n/* 67 */,\n/* 68 */,\n/* 69 */,\n/* 70 */,\n/* 71 */,\n/* 72 */,\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */,\n/* 78 */,\n/* 79 */,\n/* 80 */,\n/* 81 */,\n/* 82 */,\n/* 83 */,\n/* 84 */,\n/* 85 */,\n/* 86 */,\n/* 87 */,\n/* 88 */,\n/* 89 */,\n/* 90 */,\n/* 91 */,\n/* 92 */,\n/* 93 */,\n/* 94 */,\n/* 95 */,\n/* 96 */,\n/* 97 */,\n/* 98 */,\n/* 99 */,\n/* 100 */,\n/* 101 */,\n/* 102 */,\n/* 103 */,\n/* 104 */,\n/* 105 */,\n/* 106 */,\n/* 107 */,\n/* 108 */,\n/* 109 */,\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(29);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});"],"names":["this","google","minZoom","maxZoom","that","zoom","opt_markers","markerClusterer","cluster","MarkerClusterer","apply","size","i","url","height","width","markers","bounds","marker","index","count","dv","text","Object","opt_nodraw","m","removed","tr","bl","trPix","blPix","sw","opt_hide","window","dLat","dLon","a","Math","distance","clusterToAddTo","d","addMarker","mapBounds","Cluster","lat","lng","len","mz","sums","ClusterIcon","overlayMouseTarget","pos","style","n","t","o","s","H","r","u","f","c","p","toString","valueOf","B","A","E","I","F","reduceRight","$","W","constructor","e","_","get","set","find","filter","J","font","margin","G","M","top","h","handleEvent","start","at","g","ft","getEventProperty","subscribe","unsubscribe","getLastArgument","passive","options","lt","ht","selector","k","_classCallCheck","map","join","DOM","_formatDate","weekday","month","isNaN","configurable","console","b","root","module","define","exports","self","l","__webpack_require__","enumerable","getter","value","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Scope","create","query","register","Container","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","extendStatics","__extends","__proto__","Array","_this","message","ParchmentError","Error","attributes","classes","tags","types","scope","match","node","input","bubble","Definitions","_i","Definition","tagNames","equal","extend","op","NULL_CHARACTER","Delta","ops","newOp","delete","retain","lastOp","insert","predicate","push","length","elem","iter","nextOp","otherIter","firstOther","firstLeft","delta","thisIter","thisOp","otherOp","diffResult","diff","opLength","newline","line","priority","offset","nextType","toStr","defineProperty","gOPD","isArray","isPlainObject","key","hasOwnConstructor","hasIsPrototypeOf","setProperty","writable","target","getProperty","deep","src","copy","copyIsArray","clone","name","descriptor","staticProps","Constructor","_get","_extend2","_quillDelta2","_parchment2","_break2","_inline2","_text2","default","subClass","superClass","BlockEmbed","_possibleConstructorReturn","_inherits","_createClass","block","_this2","lines","insertAt","head","next","formats","bubbleFormats","_slicedToArray","_n","_d","_e","_arr","err","sliceIterator","_editor2","_emitter4","_module2","_selection","_selection2","_logger2","_theme2","obj","Quill","emitter","whitelist","type","modify","source","html","limit","debug","overwrite","path","container","classList","_overload","_overload2","change","_this5","_overload3","_overload4","_this6","_overload5","_overload6","bottom","left","right","_overload7","_overload8","_overload9","_overload10","_this8","_overload11","_overload12","_overload13","_overload14","deleted","applied","_this10","_overload16","_this11","userConfig","modules","clipboard","keyboard","history","theme","config","moduleConfig","reduce","themeConfig","oldDelta","range","_emitter2","args","_emitter","end","_map2","_map4","placeholder","readOnly","scrollingContainer","strict","parchment","blot","parent","otherIndex","selfIndex","TextBlot","_interopRequireDefault","_eventemitter2","forEach","document","_key","_node$__quill$emitter","_key2","handler","event","Emitter","EDITOR_CHANGE","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SCROLL_UPDATE","SELECTION_CHANGE","TEXT_CHANGE","API","SILENT","USER","Module","level","_console","_len","logger","objectKeys","isArguments","deepEqual","opts","actual","isUndefinedOrNull","isBuffer","kb","ka","objEquiv","x","_block2","Code","isolateLength","_descendant4","domNode","CodeBlock","_op2","_code2","_cursor2","_block","_clone2","_deepEqual2","Editor","consumeNextNewline","image","normalizeDelta","_scroll$line2","_line$descendant2","scrollLength","lengthRemaining","codeLength","_this3","leaves","_defineProperty","embed","_this4","_scroll$line3","_scroll$line4","suffixLength","suffix","cursorIndex","oldValue","oldText","newText","diffDelta","combined","merged","arr2","Range","Selection","setTimeout","native","_context$range","_scroll$leaf","_scroll$leaf2","leaf","_leaf$position2","_scroll$leaf4","_leaf$position4","rect","side","normalized","positions","position","indexes","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","_scroll$line","first","last","endOffset","force","startOffset","startNode","endNode","selection","oldRange","_getRange","_getRange2","lastRange","nativeRange","descendant","Break","shadow_1","ContainerBlot","_super","child","call","reverse","lengthLeft","descendants","_a","childBlot","targetParent","inclusive","after","addedNodes","removedNodes","mutations","mutation","sort","refBlot","container_1","FormatBlot","format","replacement","wrapper","LeafBlot","lib","compose","keepNull","transform","iterator","Iterator","retOp","rest","nativeSet","nativePromise","nativeMap","depth","prototype","includeNonEnumerable","circular","allChildren","useBuffer","proto","_instanceof","resolve","reject","Buffer","allParents","valueChild","attrs","symbols","allPropertyNames","propertyName","_clone","re","flags","_container2","_line2","_line3","_newlineIndex","getLines","isLine","context","_quill2","SHORTKEY","Keyboard","handleEnter","collapsed","handleBackspace","handleDelete","handleDeleteRange","binding","bindings","evt","_quill$getLine2","_quill$getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","prefix","_ref3","shiftKey","altKey","prev","prevFormats","nextLength","_quill$getLine15","nextFormats","lastFormats","lineFormats","_quill$scroll$descend","_quill$scroll$descend2","indent","shortKey","BACKSPACE","TAB","ENTER","ESCAPE","LEFT","UP","RIGHT","DOWN","DELETE","bold","italic","underline","outdent","metaKey","ctrlKey","tab","list","_quill$getLine4","_quill$getLine6","header","_quill$getLine7","_quill$getLine8","_quill$getLine10","restoreText","Cursor","split","ColorAttributor","ColorClass","ColorStyle","_embed2","_scroll2","_clipboard2","_history2","_keyboard2","ShadowBlot","parseInt","remove","ref","parentBlot","refDomNode","AttributorStore","attribute","styles","concat","attr","ClassAttributor","slice","StyleAttributor","Theme","textNode","AlignAttribute","AlignClass","AlignStyle","_color","BackgroundClass","BackgroundStyle","DirectionAttribute","DirectionClass","DirectionStyle","FontClass","FontStyleAttributor","FontStyle","SizeClass","SizeStyle","eventName","undo","timestamp","undoDelta","changeDelta","redo","History","changeIndex","endsWithNewlineChange","delay","maxStack","userOnly","nodes","LinkedList","cur","refNode","curNode","ret","callback","curIndex","memo","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","ScrollBlot","records","mark","markParent","optimize","remaining","InlineBlot","isEqual","BlockBlot","navigator","EmbedBlot","DOMTokenList","_toggle","String","searchString","thisArg","text1","cursor_pos","commonprefix","commonlength","text2","diffs","shorttext","longtext","best_longtext_a","seed","j","best_common","best_longtext_b","best_shorttext_a","best_shorttext_b","hm","text1_a","hm1","hm2","text1_b","text2_a","text2_b","diff_halfMatch_","mid_common","diffs_a","diffs_b","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","y1","x1","k2_offset","x2","k2","y2","k1_offset","diff_bisect_","diff_compute_","commonsuffix","diff_cleanupMerge","d_left","d_right","current_pos","cursor_normalize_diff","ndiffs","cursor_pointer","d_next","merge_tuples","fix_cursor","compact","starts_with_pair_end","ends_with_pair_start","fixed_diffs","fix_emoji","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","pointer","count_delete","count_insert","text_delete","text_insert","DIFF_DELETE","changes","right_d","left_d","shim","supported","Events","EventEmitter","events","names","has","available","ee","listeners","once","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","parseFloat","blotName","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","matcher","_prepareMatching2","scrollTop","elementMatchers","textMatchers","Node","endText","childrenDelta","attrName","replace","matchers","matchVisual"],"mappings":"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wBAEA,YAAoBlC,IAASA,IAC7BZ,8BAIA,gCACAkB,eAGAlB,mBACA,CACA,EAOA2C,gDACA,4BACA,EAOAA,uCAGA,UAFA1B,0DACAD,oBACAJ,IAA0BM,OAAuBN,IACjDK,0BAEA,QACA,EAKA0B,oCACA3C,2BACAA,8BACAA,aACA,EAOA2C,qCACA,2BACA,EAOAA,wCACA,oBACA,EAOAA,uCACA,mBACA,EAOAA,8CACA,8DACA3C,uDACA,EAQA2C,sDACA,6CACA,EAOAA,oCACA,gBACA,EAKAA,wCACA,0BACAI,qCAEA,UAEA,cAA4B7B,mBAA6BN,IACzDM,yBAKA,6CAEAlB,6BAFA,CAMA,+CACAgD,yDACAhD,0CACAA,6BACAA,wBANA,CAOA,EAqCAiD,qDACA,yCAGAhD,0DAEAM,mBAEAP,8CAEA,EAMAiD,uCAEA,GADAjD,wCACAA,eACA,2CACAA,0CACAA,mCACA,CAEAA,gBACAkD,0CAEA,WACAjD,8DACAG,uBACA,EACA,EASA6C,oDACA,mDACA,uCACAE,iCACAA,CACA,EAMAF,sCACA,kBACA,2CACAjD,6BACAA,6BACA,CACA,EAKAiD,sCACAjD,YACAA,gCAEAA,gBACA,EAKAiD,sCACA,cACA,2CACAjD,0CACAA,0BACA,CACAA,gBACA,EAKAiD,wCACAjD,iBACA,EAMAiD,0CACAjD,kCACAA,YACAA,4CACAA,eAEA,EASAiD,0CACAjD,aACAA,kBACAA,oBACAA,YACAA,4BAGAA,eACA,EAKAiD,0CACA,qCACA9B,oCACA,sBACAnB,gBACAA,sBACAA,oBACAA,4BACAA,sBACAA,0BACAA,6CACA,EAOAiD,4CACAjD,cACA,EAQAiD,4CACA,SA2CA,OA1CAG,+CAEAA,+BADApD,yDACA,KAEA,+BAMAoD,OAJA,kCACApD,mBACAA,6BAGA,4DAA4DA,sBAG5D,0CAAiDA,oBAOjDoD,OAJA,kCACApD,mBACAA,4BAGA,2DAA0DA,sBAG1D,gDAGAoD,OACA,UACApD,aACA,mBACAA,aACA,aACAA,YACA,0BAOAoD,OACA,uBACAD,IACA,YACAA,IACA,cARAnD,yCAUA,mCATAA,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BACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAEAjB,sCAA+CmG,WAC/C,kBAEA,cACA,WACA,OACAkC,cADAC,qBACA7J,MACA6J,UACAD,0BACAA,CACA,CACA,OATAH,OASAK,CACA,CAXA,CAWCC,OACD3C,mBACA,IAKAmB,EALAyB,KACAC,KACAC,KACAC,KAwCA,gBAEA,MACA,QAFA,QAA4BC,SAE5B,mBACAC,qBAGA5B,+CACA4B,iBAEA,mBACA5B,kBACA4B,UAEA5B,qBACA4B,oBAGA5B,0BACA,iDACA,eAEA,GADA4B,UAEA,MAEAA,iBACA,CACA,eACA,KAEAD,oCACAC,EACA,IACA,CAxEAjD,oBAEA,YACAmB,mBACAA,sBACAA,8BACAA,oBACAA,uBACAA,sBACAA,gCACAA,iCACAA,yCACAA,2CACAA,iBACA,CAZA,CAYCA,yBAYDnB,SAXA,gBACA,WACA,WACA,2CAEA,QACAkD,EAEAC,6DACA,iBACA,EAaAnD,OAXA,gBAEA,YADA,QAA6BoD,MAC7B,QACA,KAEA,oBACAF,mBACAE,EACA1F,kBACA,IACA,EAoCAsC,UA6CAA,WA5CA,aAEA,QADAqD,KACAC,IAAqBA,mBAAuBA,IAC5CD,kBAEA,cACA,yBACA,WACA,GAEA,WACA,4DACA,kCAEA,2BACA,8CAGA,GADAN,4BACA,2BACAH,uBAGA,oBACAC,kBAEA,iBAEAU,UADAhB,yBACAgB,0BACA,sBACA,GAGAA,wBAEA,qDACAC,uBACA,iCACAV,OAEA,EACA,CAEA,QACA,CAIA,EAEA,gBAEA,YACAW,QACAC,OACAC,QAGAC,yBAGAC,cAGAjL,SADA2J,iBACAuB,EACI,8BACJA,MAEA,EAEA,EAGAD,iCACA,SACA,0BACAE,WACA,uDACAA,gBAEAnL,aACA,EAEAiL,+BACA,iBACAjL,WAAqBoL,UACrB,EAEAH,iCACA,oBACA,OAAgBI,UAChB,8DACAF,gBAEAnL,YACA,EAEAiL,6BACA,sBACAK,gBAEA,GADAH,UAAyBA,GACzB,oBACA,wDACA,sBAA8BC,0BAC9BpL,KAIA,8CAGA,iBADAsL,YADAnK,MACA,IAEA,2BACAnB,KAGA,iCACA,wDACA,sBAAgCuL,0BAChC,uEACAvL,KACQ,wDACR,sBAAgCqL,0BAChC,uEACArL,IAEA,CACA,CACA,2BACAA,iBAEAA,uBAEAA,IACA,EAEAiL,4BACA,kCACA,mCACAjL,eAEAA,IACA,EAEAiL,+BACA,yBACA,EAEAA,gCACAjL,mBACA,EAEAiL,4BACA,sBACA,EAEAA,kCACA,cACA,iCACAO,UACAC,OACA,GACA,KACA,EAEAR,iCACA,2BACA,EAEAA,oCACA,iCACA,gBACAS,cACMC,SACND,WAEAA,CACA,EAAG,EACH,EAEAT,8BACA,iCACA,oBACA,EAAG,EACH,EAEAA,gCACAzF,OACA,4BAIA,QAHA0F,KACAU,uBACAzK,IACAA,mBACA,MACAA,IACA0K,eAEAA,cACAX,WAEA/J,cACA,CACA,eACA,EAGA8J,gCACA,2BACAa,oBACAZ,KACAa,WACA,2DAEA,QADAC,WACA,4CACAA,kBACAd,iBAEAa,cACAD,kBAEA,CAEA,QADAG,WACAC,0BACA,2BACAD,yBACM,wBACNA,qBACM,CACN,8CACAE,YACAC,YACA,8BACA,SACA,0BACAjB,WAEAA,kBAGA,gFAKA,GAJAnB,oBACAiC,WAGAH,yCACA,sBACA,yBACA,CAIA,KAAQ,sDACRG,SAEA,CAEA,eACA,EAEAhB,+BACA,8BACA,wBACAgB,iBACAA,oCAEAA,CACA,EAEAhB,+BACA,oBACA,aAEA,+BACA,yBACA,kBACA,2CAGA,kCADAgB,mBACA,gBACA,GAAKzF,QACL,GACAyF,QACAI,iBACAH,uBACAJ,oBACA,6BAEA,QADAJ,cACAA,MACA,QACA,kBACAY,SACAC,6BACAN,kBACA,WACAK,SACAC,6BACAL,UACAD,YACA,WACAK,QACAC,4CACA,gBACAH,YACAvB,qBACAoB,yDAEAA,oBAIAP,IACA,CACA,GACAO,QACA,EAEAhB,mCACAuB,UAIA,QAHAZ,uBACAa,QACA7L,IACAgL,cACA,kCACA,eACApG,6BACArE,4BACAgL,2BACA,OACAM,yBACMtL,IACNsL,sBACM,CACN,IAAuD,IAAvDjB,6BAAuD5K,GACvD,OAEAA,KACA6L,OACA,CACA,CACAA,cACAjB,OAAsB5K,EAEtB,EAEAqK,oCAEA,GADAyB,MACA,mBACA,mCAKA,QAHAR,uBACAJ,oBACAG,QACAC,0BACA,wDACA,GACM,wBACND,qBACM,CACN,8CACAE,YACAC,YACA,YAEA,SACQA,SACRH,UAGAA,+DAEA,MAhBAA,6BAkBA,eACA,EAEAhB,4CACAyB,MAGA,QAFAR,uBACAS,IACAT,oBACA,qBACAU,eACAV,SACA,cAGM,0BACN/K,MAEAwL,MALAxL,kBAMA,CACA,QACA,EAGA+F,WAGA,EAEA,cAEA,aAEA,sCACA2F,4BACAC,wBACAC,kCAEAC,cACA,uCACArD,iBAGA,4BACA,EAEAsD,cACA,qCACA,SAGA,IASAC,EATAC,0BACAC,0FAEA,yBACA,SAMA,YAEA,gCACA,EAGAC,gBACAP,wBACAA,YACAtF,cACAV,gBACAY,iBACA4F,cAGAC,oBAEA,EAGAC,gBACA,mBACA,iBACA,OACI,KAGJ,mBAJA,CAQA,WACA,EAEAtG,uBACA,gBACAqG,eACA3M,IACA8K,mBACA+B,KAaA,IAVA,sBACAA,IACAF,mBAEA3M,MAEA,qDACA2M,MAGQ3M,MAAYA,EAGpB,UAFAqF,gBAIA,WACAyH,SAIAH,KAHAI,YAKAF,wBACAG,GACAA,KACAC,gBAEAA,eAIAR,KAA4BS,mCAGrBH,OACPN,KAA4BS,qBAQ5B,QACA,CAGA,EAEA,gBAEA,aAGAvM,sCACAmG,WAEAN,8CAEA,iBAAiC,gBAA2C,YAAgBxG,WAAkBA,KAAO,WAA2BmN,8BAAwDA,kBAAgC,6BAAuDxM,kCAA+D,uBAAyD,2BAAqEyM,UAA6DC,GAAzhB,GAEAC,oBAAsD,iCAAkD,2CAA8D,eAA0B,+BAA4C,qBAAuB,EAA2BtJ,SAA4C,eAA4B,eAA4B,YAAuB,uBAA4B,EAAoB6C,WAIzc0G,IAFA5G,MAMA6G,IAFA7G,MAMA8G,IAFA9G,MAMA+G,IAFA/G,OAMAgH,IAFAhH,MAMAiH,IAFAjH,MAIA,cAAuC,0BAAuCkH,WAE9E,gBAAkD,qBAA0C,yDAE5F,gBAAkD,MAAa,sFAAyF,uDAExJ,gBAA2C,kCAA+D,yFAAuGC,0CAAyEjK,aAAeiD,qDAA6EiH,oEAEtX,IAEAC,cAGA,aACA,iBAEAC,qEACA,CAEA,OARAC,OAQAC,MACA7B,aACAxF,iBACAwG,sFACAlO,4DACA,GACG,CACHkN,YACAxF,iBACA,iGACA,GACG,CACHwF,aACAxF,oBACA,yDACA,SACA1H,8BAEA,GACG,CACHkN,eACAxF,wBACA1H,gBACA,GACG,CACHkN,eACAxF,sBACA,yCACA,mCACA1H,iDACAgP,2BACA,MACAd,6FAEA,KAGAU,CACA,CA/CA,CA+CCP,iBAEDO,mCAIA,kBAGA,cACAtI,UAEA,mEAEA,kBACA2I,CACA,CAEA,OAXAH,OAWAC,MACA7B,YACAxF,iBACA,gCACA1H,uEACA,sBACAiM,EAEAA,wBAEA,EAAS,qCAETjM,gBACA,GACG,CACHkN,eACAxF,oBACAwG,4FACAlO,aACA,GACG,CACHkN,eACAxF,wBACAgE,OACA2C,yCACAlN,qBACAnB,iBAGAkO,4HAEAlO,cACA,GACG,CACHkN,eACAxF,sBACA,gHACA,gBACA,qBACApG,aACAA,cACAH,4CACA+M,uHAEAlO,4DAEAA,eAEA,WACAkP,uBACA,wBACAC,cACA1C,QACA,EAAOtL,aACP,GACG,CACH+L,mBACAxF,oBACA,yBACAwG,gGACAkB,wBACAA,WAEApP,aACA,GACG,CACHkN,aACAxF,iBACA,iCACA1H,wGAxIA,GA0IAA,iBACA,GACG,CACHkN,mBACAxF,oBACAwG,gGACAlO,aACA,GACG,CACHkN,eACAxF,kBACAwG,0FACAlO,aACA,GACG,CACHkN,WACAxF,kBACA,+FACA,GACG,CACHwF,kBACAxF,kBACAwG,6FACAlO,aACA,GACG,CACHkN,YACAxF,kBACA,8DAEA,+BAxKA,GAwKA,CACA,mBACA,cACA1H,iCACAA,OAEAA,sCACA6N,EAEA,CACA,+FACA,qBACAwB,CAEA,KAGArG,CACA,CAnIA,CAmICqF,iBAOD,cACA,gEAMA,OAJA,UACA,+BACAiB,gCAEA,uFACAA,EAEAC,aACA,CAhBAvG,mBACAA,cACAA,uBACAA,wDAeA5B,kBACAA,eACAA,WAEA,EAEA,gBAEA,aAGA7F,sCACAmG,WAEAN,2CAEA,8EAAqG,iBAAqB,YAAmB,qGAE7IoI,EAA6a,cAA2B,oBAA0B,SAAc,gCAA2C,OAAxf,gBAAiC,SAAeC,KAAeC,KAAgBC,SAAoB,IAAM,mCAA0CF,uBAA4CG,iBAAqBhP,iBAAlC6O,MAAmL,CAAjJ,MAAuCI,GAAcH,KAAWC,YAAsB,KAAMF,uBAAqD,CAArD,QAAqD,cAAsB,SAA6HK,MAAuC,6EAElkBf,aAAiC,gBAA2C,YAAgBnO,WAAkBA,KAAO,WAA2BmN,8BAAwDA,kBAAgC,6BAAuDxM,kCAA+D,uBAAyD,2BAAqEyM,UAA6DC,GAAzhB,GAEA1G,MAEA,IAEA6G,IAFA7G,MAMAwI,IAFAxI,OAMAyI,IAFAzI,MAMA0I,IAFA1I,MAMA8G,IAFA9G,MAIA2I,QAEAC,OAIAhC,IAFA5G,MAMA6I,IAFA7I,OAMA8I,IAFA9I,OAIA,cAAuC,0BAAuCkH,WAE9E,kBAA4C,cAAkBlN,2BAAkCmG,oDAAgF4I,OAAoBA,EAEpM,gBAAkD,qBAA0C,yDAE5F,6BAEAC,aAqDA,cACA,WAEAtK,4DAMA,GAJAK,UAEAtG,oBACAA,sCACA,qBACA,4CAEAA,oBACAuQ,4BAEA,sCACAvQ,6CACAA,4BACAA,4BACAA,yCACAA,oCACAA,wCACAA,mEACAA,2BACAA,wCACAwQ,qBACAC,iCAEAzQ,uCACAA,uDACAA,qDACAA,+CACAA,iDACAA,6CACAA,kBACAA,2DACA0Q,kCACAzB,sDAEA,GACAjP,6DACA,4BACAmB,iCACAwP,oBACA,gCACA,EAAOC,EACP,GACA,sFAA+FC,uBAC/F7Q,oBACAA,qBACAA,0BACAA,oEAEAA,uBACAA,cAEA,CAEA,OA9GA+O,WACA7B,YACAxF,mBACA,QACAoJ,SAEAV,kBACA,GACG,CACHlD,WACAxF,kBACA,mCACA,GACG,CACHwF,aACAxF,kBACA,8BACAqJ,gEAEA/Q,eACA,GACG,CACHkN,eACAxF,oBACA,WAEAsJ,0DAEA,uBACA,6BACA,mBAEAhR,gCAEAuB,mCACAqI,oBACA,EAEA,MACA,2BACAmH,mCAEA/Q,mBACAiR,2EACA5C,sBACU4C,wDACV1D,YAGA,KA6DAwB,MACA7B,mBACAxF,kBACA,kEAEA,uBACA,SACAwJ,iCACAC,gBACA,CACA,wCACAD,CACA,GACG,CACHhE,WACAxF,iBACA1H,6BACA,GACG,CACHkN,iBACAxF,sBACA,WAEA0J,WAEAC,SAEA,OAIAV,uBACA,+BACA,EAJAC,OAFAzP,QAMO,GALPuK,QAMA,GACG,CACHwB,cACAxF,iBACA1H,eACA,GACG,CACHkN,aACAxF,iBACA,iEAEA1H,sBACAA,iDACA,GACG,CACHkN,YACAxF,iBACA,wCACA1H,uBACAA,oCACAA,qBACA,GACG,CACHkN,aACAxF,oBACA,WAEAkJ,+EAEA,8BACA,yBACAU,gBACA,WACA,SACU,4CACVA,4CAAyFxD,UAC/E,iBACV,+BACAwD,EAEAA,4CAAyFxD,MAEzF,kDACAwD,CACA,EAAOV,EACP,GACG,CACH1D,iBACAxF,0BACA,IAEA4H,EAFAiC,OAIAC,eAEAC,SAEA,OACA/F,OACA4D,OAGAqB,uBACA,iCACA,EAJAC,OAHAzP,OAOO,EACP,GACG,CACH+L,iBACAxF,0BACA,IAEA4H,EAFAoC,OAIAC,eAEAC,SAEA,OACAlG,OACA4D,OAGAqB,uBACA,iCACA,EAJAC,OAHAzP,OAOO,EACP,GACG,CACH+L,gBACAxF,kBACA,+DAEAzG,SAEAA,EADA,mBACAjB,8BAEAA,2CAEA,6CACA,OACA6R,sBACA/Q,gBACAgR,mBACAC,qBACA1M,gBACAtE,cAEA,GACG,CACHmM,kBACAxF,iBACA,+DACAgE,4EAEAsG,SAEAC,SAEA,OAGAjS,wBAHAmB,OACAuK,OAGA,GACG,CACHwB,gBACAxF,iBACA,mFACAgE,2DAEA,yBACA1L,2BAEAA,uCAEA,GACG,CACHkN,eACAxF,kBACA,4BACA,GACG,CACHwF,gBACAxF,iBACA,2BACA,GACG,CACHwF,cACAxF,kBACA,0BACA,GACG,CACHwF,cACAxF,kBACA,0BACA,GACG,CACHwF,eACAxF,iBACA,+DACAgE,0EAEA,yBACA1L,oCAEAA,sBAEA,GACG,CACHkN,gBACAxF,kBACA,4BACA,GACG,CACHwF,mBACAxF,iBACA,8DAEA,uBACA1H,cACAA,4BACA,GACG,CACHkN,cACAxF,iBACA,+DACAgE,4EAEAwG,SAEAC,SAEA,OAGAnS,oBAHAmB,OACAuK,OAGA,GACG,CACHwB,eACAxF,iBACA,gCACA,GACG,CACHwF,kBACAxF,sBACA,WAEAkJ,uEAEA,8BACA,kCACA,EAAOA,IACP,GACG,CACH1D,iBACAxF,0BACA,IAEA4H,EAFA8C,OAIAC,eAEAC,SAEA,OACAhD,OAGAqB,uBACA,iCACA,EAJAC,OAFAzP,OAMOG,SACP,GACG,CACH4L,gBACAxF,iBACA,uDACA,GACG,CACHwF,UACAxF,iBACA,qDACA,GACG,CACHwF,SACAxF,iBACA,oDACA,GACG,CACHwF,WACAxF,iBACA,sDACA,GACG,CACHwF,gBACAxF,sBACA1H,0CACA,GACG,CACHkN,mBACAxF,sBACA,WAEA6K,WAEAC,SAEA,OACA9G,OAGAiF,uBACA,iCACA,EAJAC,OAFAzP,OAOA,GACG,CACH+L,qBACAxF,iBACA1H,sDACA,GACG,CACHkN,kBACAxF,kBACA,WAEAkJ,+EAEA,8BACA3E,mBACA,oBACAwG,2BACAC,yBACApH,wBAMA,OALA,yEACAqH,uCACAD,aAEAD,YAEA,EAAO7B,EACP,GACG,CACH1D,mBACAxF,sBACA,WACA1H,mDACQ,CACR,eAEA4S,SAIAhC,OAEA5Q,oCAJAmB,OACAuK,QAGAkF,GACAA,8BACA5Q,sDAEA,CACA,GACG,CACHkN,cACAxF,kBACA,mFAEAuE,4BACA,4BACA,GACG,CACHiB,aACAxF,iBACA,oFAEA4J,wBACA,gCACAA,CACA,GACG,CACHpE,qBACAxF,kBACA,WAEAkJ,+EAEA,8BACA,0BACAiC,wBACA,EAAOjC,KACP,KAGAL,CACA,CA/eA,GAugBA,gBASA,IARAuC,oBACA5B,YACA6B,SACAC,aACAC,YACAC,aAEGJ,IACHK,mCACA,GAEAL,oCACA,cACA,wEAJAA,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pL,SACAE,SAEA2C,uBAAkDgI,sBAClD,4BACA,wCACAQ,WAGAxI,wCAFAwI,OAGA,CACA9N,qCACA,SAAY,wBACZ,+BACA,oBACAJ,kCACA,CACAmO,IACA,CACA,0CACAnO,6BACA,GACAzI,GACA,EAAO,GACP8K,uBACA,iCACArC,8BACAzI,GAEAA,gCACA,EAAO,GACPnB,uBACAA,cACA,GACG,CACHkN,iBACAxF,oBACA,iCACA1H,gDACA,GACG,CACHkN,iBACAxF,oBACA,WAEA4H,4DAEA,4BACA/N,mCACA,mDACA,uCACAyW,IACA9I,sBACA,iBACA,0BAEY,CACZ,2BACA+I,2BACAxL,uBACA,MALAA,iBAMAuL,IACA,EAAS,CACT,GACAhY,uBACAA,iEACA,GACG,CACHkN,iBACAxF,oBACA,WAEA4H,4DAEA,0CACA4I,6BACA,GACAlY,iEACA,GACG,CACHkN,kBACAxF,oBACA,8BACA,GACG,CACHwF,eACAxF,iBACA,gDACA,0BACA,EAAO,cACP,GACG,CACHwF,gBACAxF,kBACA,+DAEAwH,KACAiJ,KACA,MACAnY,wCACA,IACAqU,EADA7E,OACA,GAEA6E,uBACAnF,UACYmF,6BACZ8D,SAEA,IAEAjJ,yBACAiJ,+CAEA,4BACA,yBAEA,QADA7I,iCACA/N,0BACA,gBACA,oBACA+N,6BACA,CACA,QACA,GACA,mCACA,GACG,CACHpC,cACAxF,oBACA,gDACA,+BACA,GAAOnB,gBACP,eACA,GAAOC,QACP,GACG,CACH0G,kBACAxF,sBACA,mCACA1H,6CAnLA,kBAA4C,cAAkBuB,2BAAkCmG,oDAAgF4I,OAAoBA,EAmLpM8H,IAA2FC,MAC3F,GACG,CACHnL,iBACAxF,oBACA,WAEA4H,4DAEA,qDACAtP,0BACAuB,mCACA+W,oCACA,GACAtY,iEACA,GACG,CACHkN,cACAxF,iBACA,2CACA,0CACA,gCAEA,QADAsH,yCACAA,sBACAA,oCACA,GACG,CACH9B,mBACAxF,oBACA,wBAEA6Q,wBACAC,SACA/L,OACAE,OAEA8L,IACAC,gBACA,UAIAD,EAHAhM,uBAGAA,sBAFAA,aAIAiM,yCAEA,IACApM,GADAtM,wBACAsM,0CACAL,wCACA,0BACA,GACG,CACHiB,aACAxF,kBACA,gEACAiR,gEAEAnF,aACA,sGAEA,kCACAlE,yBACAnO,wBACAyX,+CACAC,4BACAC,oCACAC,iDACAzH,4BACA,iBACArF,uBAEAA,WAEA,EAAS,eACTjM,uBACA,MACAA,6BACAsR,8CACAA,wBAGA,QACA,KAGAmG,CACA,CAnQA,GAqQA,gBACA,2CACA,oBACAuB,YACAC,UACMtP,oBACNqP,uBACAC,0BAGAA,kBAEAA,CACA,EAAG,GACH,CA0BA7R,WAEA,EAEA,gBAEA,aAGA7F,sCACAmG,WAEAN,yBAEA,MAA6a,cAA2B,oBAA0B,SAAc,gCAA2C,OAAxf,gBAAiC,SAAeqI,KAAeC,KAAgBC,SAAoB,IAAM,mCAA0CF,uBAA4CG,iBAAqBhP,iBAAlC6O,MAAmL,CAAjJ,MAAuCI,GAAcH,KAAWC,YAAsB,KAAMF,uBAAqD,CAArD,QAAqD,cAAsB,SAA6HK,MAAuC,6EAElkBf,aAAiC,gBAA2C,YAAgBnO,WAAkBA,KAAO,WAA2BmN,8BAAwDA,kBAAgC,6BAAuDxM,kCAA+D,uBAAyD,2BAAqEyM,UAA6DC,GAAzhB,GAIAI,IAFA9G,MAMAgQ,IAFAhQ,OAMAiQ,IAFAjQ,OAMAyI,IAFAzI,MAQA,cAAuC,0BAAuCkH,WAE9E,cAAmC,qBAA0B,8BAA0C7N,WAAgBA,IAAOsY,UAAoB,SAAsB,qBAExK,gBAAkD,qBAA0C,yDAE5F,SARAxE,EAFAnN,OAUAkH,4BAEA0K,gBACA,+DAEA7S,UAEAtG,aACAA,aACA,EAEAoZ,aACA,gBACA,WAEA9S,UAEAtG,eACAA,cACAA,kBACAA,kBACAA,8BACAA,4CAEAA,0CACAA,yBACAA,sBACAA,6DACA4J,aACAyP,qDAEA,GACArZ,6DACA0Q,gDACA9G,kCAEA,GACA5J,iEACA,gBACA,0BACA,SACAsZ,kCAEA1P,yDACA,IACAA,qEACU,CAAV,MAAU,CACV,EAAO,CACP,GACA5J,+DACA,YACA,cAMA4J,iBALA2P,YACAA,cACAA,UACAA,YAGA,CACA,GACAvZ,qCACA,CAEA,aACAkN,wBACAxF,iBACA,WAEA1H,yDACAiP,cACA,GACAjP,uDAEA,GADAiP,eACAA,iBACA,yBACA,aACAoK,sBACApK,iEACA,EAAW,EACX,CACA,EACA,GACG,CACH/B,qBACAxF,iBACA,WAEA1H,4DACAkY,cACA,GACAlY,0DACAkY,eACAA,gCACA,EACA,GACG,CACHhL,YACAxF,iBACA1H,kBACAA,kBACAA,+BACA,GACG,CACHkN,aACAxF,oBACA,yDACA,sBACA,4BACA,0EACA,yCACA,sCACA,kBAEA,gCACA,8BACA2M,oCACA,MACAA,yCAEArU,oBACA,CACAA,wBACAA,uBACAA,2EACAA,eACA,GACG,CACHkN,gBACAxF,kBACA,+DAEAqQ,uBACA5W,kBACAuK,sBACA,aACA8N,sBACAC,SACAC,OACA/M,OACA,uBAEA,wBAEAgN,UAEArP,OACAqC,OAEA,6BACA,QACA8G,gBAEA,4BAEAmG,SAKA,UAHAF,QAGA,YAEA,iBAJA/M,QAIA,GAEAkN,SAEA,OAGApG,SAHAnJ,OACAqC,QAGA8G,yBACA,CACA,aACAqG,SACA,0BACAnN,iBACA8G,gBACAA,kBAEAA,kBACAA,cACAsG,WAEAD,8BAEAA,oCACAnN,kBAEA,CACAkF,sBACA/Q,gBACAgR,UACAC,WACA1M,UACAtE,QAGA,GACG,CACHmM,qBACAxF,iBACA,8BACA,wCACA,sBACA,uBACA,8BACA,kCACA+L,CACA,GACG,CACHvG,eACAxF,iBACA,4BACA,2BAEA,CADA1H,0BACAga,EACA,GACG,CACH9M,eACAxF,iBACA,yCACA,GACG,CACHwF,wBACAxF,kBACA,WAEAuS,kCACAxG,oBACAwG,kCAEA,wBACA,aACA3P,QACAqC,OAEA0H,wBACAlT,qBACA,aACAA,EACUkT,iCACVlT,aAEAA,eAEA,GACA0S,6DACArO,wCACA,mBACA,GACG,CACH0H,sBACAxF,kBACA,8EACA,YAEA,OACAlC,OAAiB8E,4CACjBuJ,KAAevJ,wCACfgP,UAEA,0CAGA,QAFAhP,SACAqC,aACArC,2CACA,yBACAA,kBACAqC,YACYrC,wBAIZ,MAFAqC,GADArC,yBACApB,wCAEA,CAGAgR,mBACA,GACAzG,CACA,GACG,CACHvG,oBACAxF,kBACA,WAEAyS,mDACAxG,KACAoE,uBACA,+BACA5W,kBACA,IACAiZ,oBACAC,UAEA1N,OACA2N,EAFAD,KAEAH,kBAEAK,SAKA5G,OAHA4G,KACA5N,OAGA,GACAgH,aACAA,eAEAA,CACA,GACG,CACHzG,qBACAxF,kBACA,qBACA,WACA,wCACA,WACA,8BAEA8S,wCAEAC,EADAjL,OACA,GAEAkL,IACA,eACA,sDAIAA,EAFAlL,QAEA,EACA,CACA,oBACA,iCACAvO,YACAiT,yBACQjT,oBACRiT,kCAEA,GACG,CACHhH,qBACAxF,oBACA,+DACAiT,2DACAC,0DAGA,GADA7J,iCACA,4EAGA,+BACA,WACA,YACA/Q,mCACA,kCAAiDsZ,OACjD,6FAEA,kBACAuB,6CACAC,gBAEA,kBACAH,6CACAI,gBAEA,6BACAtH,gBACAA,cACAuH,oBACAA,aACA,CACA,MACAA,oBACAhb,iBACA6U,sBAEA,GACG,CACH3H,eACAxF,kBACA,8DACAkJ,+EAOA,GALA,qBACAA,IACAgK,MAEA7J,qBACA,SACA,4BACA/Q,gDACA,MACAA,0BAEAA,cACA,GACG,CACHkN,aACAxF,iBACA,oFAEAuT,iBAEAC,kBACAC,SACAC,OACAC,OAMA,GAJArb,iBACA,uBACAA,kCAEA,gCACA,OAEAA,kFACAA,sBAEA,IAGA0T,GAHAC,wFACAC,yEACAhD,+BAGA8C,iCAEA,CACA,KAGA0F,CACA,CAhaA,GAkaA,gBASA,2BACAkC,gBAEAhH,aACA,CAEAlN,UACAA,WAEA,EAEA,gBAEA,aAGA7F,sCACAmG,WAGA,iBAAiC,gBAA2C,YAAgB9G,WAAkBA,KAAO,WAA2BmN,8BAAwDA,kBAAgC,6BAAuDxM,kCAA+D,uBAAyD,2BAAqEyM,UAA6DC,GAAzhB,GAEAC,oBAAsD,iCAAkD,2CAA8D,eAA0B,+BAA4C,qBAAuB,EAA2BtJ,SAA4C,eAA4B,eAA4B,YAAuB,uBAA4B,EAAoB6C,WAQzc,gBAAkD,qBAA0C,yDAE5F,gBAAkD,MAAa,sFAAyF,uDAIxJ,kBAGA,aACA,iBAEAoH,qEACA,CAEA,OAXA,gBAA2C,kCAA+D,yFAAuGH,0CAAyEjK,aAAeiD,qDAA6EiH,oEAGtXG,MAQAC,MACA7B,iBACAxF,oBACA,sBACAwG,8FAEAlO,aAEA,GACG,CACHkN,aACAxF,iBACA,QACA,GACG,CACHwF,YACAxF,iBACA,QACA,IACG,EACHwF,YACAxF,iBAEA,KAGA6T,CACA,CApCA,CARA,cAAuC,0BAAuC9M,WAF9EiG,CAFAnN,MAgDCkH,eAED8M,mBACAA,eAEAnU,WAEA,EAEA,gBAEA,aAEA,IACAoC,EADAC,yBACAD,yBACA,CAAWE,wBAAgBC,qBAAsCnH,gBACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAEAjB,sCAA+CmG,WAC/C,YACA8T,QACAlT,OACAmT,cAEA,cACA,2BACA,iBACA7R,CACA,CACA,OANAH,OAMAgS,oCACAzb,oBACA,EACAyb,8BACAC,8BACA1b,kCACA2b,UACA,EACA,EACAF,6BACA,WACAzb,4BAEA,SACA4b,8BACAC,UACAjH,oBACA,IACA,WACAhL,yCAOA,CANA,MACAiG,GACA,iCACA,OAEA,OACA,CACA,EACA,EACA4L,mCACA,4BACA,qBAEAzb,4CACA2b,eACA,EACA,EACAF,qCACA,0CACA,+BACA,iCACA,MAEAE,eACAA,kBAGA,SAEA,EACAF,6CACA,QAAgCta,UAChC,QAAiCuK,oBACjC,SACAoQ,IACA,oDACA,wBACA,mCACAC,UAEAJ,iBACAI,kCAEAD,IACA,GACAC,CACA,EACAN,8BACAzb,kCACA2b,UACA,GACAD,6BACA,EACAD,uCACAzb,4CACA2b,mBACA,EACA,EACAF,qCACA,mCACA,KACAE,WAFAK,KAEAtU,SAEA,CACA,+CACA1H,mBACA,CACA,EACAyb,uCACA,wCACAzb,8CACA,qBACA,GACA,+FAEAic,oBACA,EACAR,8BACA,0CACA,mBACA,EAAS,EACT,EACAA,uCACAzb,kCACAkc,mBACA,EACA,EACAT,iCAEA,GADAC,kCACA,yBACA,oCACA,0CACA1b,oBACA2b,aACA,MAEA3b,aAGA,EACAyb,oCACA,QAAoCU,MACpC,4CACAjC,aACA,sBACAA,uBAEA,SACAA,cAEAA,EACA,EACAuB,oCACAzb,uBACA,EACAyb,gCACAlO,gBACAA,qBAEAmO,gCACA,EACAD,gCAEA,QADA,QAAgCb,OAChCA,GACA,SACA,YACA,qBACA,gBACA,CACA,mBACA,6CACA5a,wDACA2b,eACAS,gBACA,GACAA,CACA,EACAX,8BACAzb,yCACAA,aACA,EACAyb,iCACA,WACAY,KACAC,KACAC,sBACAC,6CACAH,6BACAC,+BAEA,GACAA,sBAIA,yBAEA,sBACAzH,8EAGA,iBACA,UAEA,+DACAR,WAEA,GACAgI,EACAtX,mBACA,8BACA,GACA0X,mBACA,aACA,EACAra,8DACA,GAEA,CACA,GACAwS,oBACA,WACA,sBACA8H,yBAEA,YACArI,2BACA,gBACAA,wBAEAzK,4BAEA,EACA,EACA6R,CACA,CA9NA,CA8NCD,WACD,cACA,gBACA,WACA,IACAnH,aAYA,CAXA,MAEAA,2BACA,gDAEAA,wBACA,GACA/J,cACAA,uCAEA+J,UACA,CAEA,QACA,CACAjN,WAGA,EAEA,gBAEA,aAEA,IACAoC,EADAC,yBACAD,yBACA,CAAWE,wBAAgBC,qBAAsCnH,gBACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAEAjB,sCAA+CmG,WAC/C,YACAW,QACAsU,QACArU,OACAsU,cAEA,cACA,2BACA,6CACAhT,CACA,CACA,OANAH,OAMAmT,sBACA,sCAGAjT,4BACAsN,6BADA,EAIA,EACA2F,iCACA,iBACAC,uBACA7c,+BAEA0H,GACA,6DACA1H,qBAGA,EACA4c,+BACA,+BACAC,qCACA,iBACAvN,4BAEAA,CACA,EACAsN,sCACA,6CACA,+BACAE,CACA,EACAF,iCACA,WACAlB,kCACAa,mBACA,kDACA,IACAvc,uBAEA,EACA4c,+BACA,sCACA,6DACA5c,wBAEA+c,CACA,EACAH,CACA,CAzDA,CAyDCD,WACDvV,WAGA,EAEA,gBAEA,aAEA,IACAoC,EADAC,yBACAD,yBACA,CAAWE,wBAAgBC,qBAAsCnH,gBACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAEAjB,sCAA+CmG,WAC/C,YACAY,OACA0U,cAEA,aACA,8CACA,CACA,OAJAvT,OAIAuT,oBACA,QACA,EACAA,gCACA,yBACAhd,4EACAqC,eAEA,CACA,EACA2a,mCACA,mEACA,aACArQ,MACA,uBACA,EACAqQ,6BACA,MACA,aAAsBhd,6DACtB,EACAgd,4BACAA,CACA,CA3BA,CA2BCxB,WACDpU,WAGA,EAEA,gBAEA,YACA0D,OAGAmS,GACAjT,YACAkT,wBACA,2BACA,2BACA,cAAsClW,GAStC,aARAmW,IACAnT,sCACA,oBACA2D,WAEAA,CACA,EAAS,KAETvL,OACA,0BACA4H,WAGA,uCACA,EAEAsC,mBACA,2BACA,2BACA,iEACA,sBACAtC,8BAEAA,CACA,EAAO,IACP,uCACA,EAEAoT,0BACA,+BACA,sBACA,gBACA,0CACA,kCACApT,CACA,EAAO,IACP,wCACA,GAGAqT,qBACA,eACA,EAEA3R,mBACA,gCACAX,SACM,0BACNA,SAEA,2CAEA,GAIA,cACA/K,WACAA,aACAA,aACA,CAEAsd,+BACA,4BACA,EAEAA,6BACA5R,WACA,2BACA,MACA,kBACAa,cAQA,GAPAb,QACAA,MACA1L,cACAA,eAEAA,eAEA,0BACA,OAAeoL,UAEf,SACA,sBACAmS,2BAEA,0BACAA,WAEAA,SADQ,0BACR1R,qBAGAA,SAEA0R,CAEA,CACA,OAAalS,WAEb,EAEAiS,4BACA,2BACA,EAEAA,kCACA,4BAEAL,2CAEA,GAEA,EAEAK,gCACA,4BACA,6CACA,SACM,6CACN,SAEA,SAGA,QACA,EAEAA,4BACA,kBAEI,oBACJ,kCAEA,kBACAnc,aACAkO,cACAmO,6BACA,qBACAxd,aACA,cAVA,QAYA,EAGAkH,WAGA,EAEA,cAEA,iBACA,aAEA,gBACA,8BACA,CAEA,MASAuW,EAOAC,EAfA,IACAC,KAKA,CAJA,MAGAA,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EADA+C,OACA,GAEAF,MACA,iBACA,qCAEA6R,GADA3R,QACA,GAEA,4BACA,mBACA4R,qCACA9R,uCACA,CACA,CAEA,4DACAtP,4DACAuB,0BACAvB,+DAEAA,mBACA,CAEA,gBAEA,2DACA,wCACA,UACAqhB,IAEAC,+BAEA7U,GADA+C,QACA,GAEA,4BACA,qCAEAH,GADAG,QACA,GAEA,OACA,oBACA+R,kCACAjS,sCACA+R,aACA,CACA,CACArhB,wDACAuB,yBACAvB,8DAEA,CAEA,cACA,6BACAsP,KACA,eACA,qBACAkS,0BACAlS,oCACA,CACAtP,gDACAuB,yBACAvB,0DAEAA,0DACAA,kBACA,CAEA,gBACA,WAEAyT,YACAzT,6CAEA,kDACA,iFACAyhB,oBAEAA,CACA,EAAG,IACHzhB,6DAGAA,4DACAA,mBACAuB,0CACA,aACAoI,4BACA,YACAuO,qDACA,EACA,CAEA,cACA,OACAhL,eACA+T,YACApE,QAAc,iBACd5H,oBACA,oCACA9T,UACAuK,YAEAgW,qCACAC,WACA3S,SACArC,SAEA,YACA,gCACAnH,4BACAqO,4BACA3E,iDACAvC,KACAuC,yBACA0S,GACA5S,yBACArC,iBACA,OACAxL,gBAEAuK,kBAEUe,sBACVuC,gCACArC,iBACA,OACAxL,gBAEAuK,kBAGAiB,cACA,GACA3M,0CACAA,uDACA,EAEA,CAEA,cACA,OACAkN,uBACA2U,YACA5M,sBACAjV,wDACA,EAEA,CAEA,cACA,0CACA,UAAuBkN,QAKvB,GAHA,6CACA6S,uBAEA,uBACA,qCACAA,0CACM,iBAGN,YAFAA,uCAEA,CAGA,oBACAA,uBACAA,YAEAA,CACA,CAvYAN,QACAqC,YACAC,MACAC,SACAC,UACAC,QACAC,MACAC,SACAC,QACAC,WAGA7C,YACAO,UACAuC,eACAC,mBACAC,yBACAb,QAEA1U,eACA2P,sCACA5H,sBACA,sCACAjV,uDACA,GAEA0iB,SACAxV,eACA+T,YACApE,sCAEA5H,sBACA,sCACAjV,uDACA,GAEA,qBACAkN,qBACAyS,aACAsB,cACA0B,aACAC,aACA1B,YACA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C,CACA,oDAEAzP,eACA,uBACA,EACA4C,cACAV,kBAEAkd,qBACA,sBACA,8DAEA,MACA,oCACA,qBACAtc,kBACAuc,6BACAvc,gBAIA4C,EADA,mBACAuK,0CAEA7U,2BACA6U,0BAGAA,yCAIAvK,uCAEAtK,gBACAsK,gCAEAA,CACA,EACA0Z,8BACA,oBACAhkB,+BAEA,EACAgkB,6BACA,iCACA,kBACA,EACAA,8BACA,mBACAhkB,qCAEAA,wBACA,EACAgkB,mCACAhkB,kBACAkkB,QACA,EACAF,uCACA,wBACA,oCACA3P,oBAEA,oCACA,mCACAA,UACAC,aACA,CACA,EACA0P,qCACA,+CACAG,gBACAnkB,6BACA,EACAgkB,0CACA,QAAkCtH,QAClC,mBACA1c,kCAEA,WACAokB,gCACA,UACAC,cAEArkB,oCACAA,8BACAokB,uCAEApkB,cACAA,aACA,EACAgkB,kCACA,oBACA,kBACAzW,CACA,EACAyW,8BACA,QACA,EACAA,+BAEA,YADA,QAA+B/c,eAC/B,2BACA,EACAjH,uDACA,EACAgkB,iCAGA,uCAEAhkB,kCAEA,EACAgkB,8BACA,+BACAhkB,kDAEAA,aACA,EACAgkB,gCACA,iBAEAzW,mCACAA,WACA,EACAyW,sCACA,yCACA,uBACAlH,CACA,EACAkH,gCACA,2BACA,EACAA,iCAEA,EACAA,+BACA,yCACA,0BACAhkB,sCAEA+c,oBACAA,CACA,EACAiH,sBACAA,CACA,CAvJA,GAwJA5c,WAGA,EAEA,gBAEA,aAEA7F,sCAA+CmG,WAC/C,YACAS,QACAC,QACAE,OACAgc,aACA,cACAtkB,mBACAA,eACAA,YACA,CACA,2CAEA0H,EACA6c,wBACA,4BACAvkB,qCAGAA,8BAKAukB,8BACAvkB,4BAEA,EACAskB,6BACA,WACAtkB,mBACA,mCACAiK,+BACAua,+BACAxa,EACAya,UACAA,UACA7P,oBACA,mCACA8P,yBACA9a,2BAEA,EACA,EACA0a,6BACA,WACA/iB,iDACA,uCACAgM,aACA,EACA,EACA+W,6BACA,WACAtkB,aACAuB,iDACAqI,iCACA,GACA5J,kBACA,EACAskB,8BACA,WACA,yDACA,6CACAta,CACA,EAAS,GACT,EACAsa,CACA,CA9DA,GA+DAld,WAGA,EAEA,gBAEA,aAEA,IACAoC,EADAC,yBACAD,yBACA,CAAWE,wBAAgBC,qBAAsCnH,gBACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAIA,gBAEA,OADA8H,6BACAiZ,gCACA,2BACA,EACA,CAPAhiB,sCAA+CmG,WAQ/C,kBAEA,aACA,8CACA,CACA,OAJA+B,OAIAkb,mBACA,iEACA,SACApB,WACAqB,YACApe,SACA,EACA,EACAme,8BACA,2BAEA3kB,eACAsK,qCACA,EACA,EACAqa,+BACAta,kBACAuK,oBACAtK,qBACA,GACA,wBACAA,0BAEA,EACAqa,8BACA,IACAjd,GADA2C,0BACAua,6BACA,4BACA,EACAD,CACA,CAnCA,CAPApd,MA0CCkH,SACDrH,WAGA,EAEA,gBAEA,aAEA,IACAoC,EADAC,yBACAD,yBACA,CAAWE,wBAAgBC,qBAAsCnH,gBACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAIA,cACA,mBACAgb,IACAoH,SACAre,gBACA,oCACA,GACAC,SACA,aACA,CAXAjF,sCAA+CmG,WAY/C,kBAEA,aACA,8CACA,CACA,OAJA+B,OAIAob,mBACA,+CAA0Dte,gBAE1D,OADAmB,aACA,SACA,EACA,EACAmd,8BACA,2BAGAva,4BACA,EACA,EACAua,+BAEAva,4BACAA,yBACAA,0BAEA,EACAua,8BAEA,+BACA,4BACA,EACAA,CACA,CA/BA,CAXAtd,MA0CCkH,SACDrH,WAGA,EAEA,gBAEA,aAGA7F,sCACAmG,WAGA,iBAAiC,gBAA2C,YAAgB9G,WAAkBA,KAAO,WAA2BmN,8BAAwDA,kBAAgC,6BAAuDxM,kCAA+D,uBAAyD,2BAAqEyM,UAA6DC,GAAzhB,GAIA6W,aACA,iBAHA,gBAAkD,qBAA0C,0DAI5Fxe,SAEAtG,aACAA,eACAA,eACA,CAEA,aACAkN,WACAxF,iBACA,WAEAnG,sDACA,oBACAqI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AEA,wBACAjF,kBACAA,UACAA,4DACAkc,mDACAlc,+CAGAA,eAFAA,cAIA,GACAA,6BAAsCsD,qBAA0BtD,gBAChEA,6BAAsCsD,iCAA0CtD,gBAChF,iCACAA,6BAAwCsD,qBAA0BtD,gBAElEA,CACA,CAEA,OA7BA,gBAA2C,kCAA+D,yFAAuG8E,0CAAyEjK,aAAeiD,qDAA6EiH,oEAGtXG,MA0BAC,MACA7B,aACAxF,oBACA,4BACA,2BACA1H,sBACAA,oBACAA,qBACAA,uDACAA,qBACA,cACAA,2BACA,GACG,CACHkN,YACAxF,iBACA1H,YAAqB+lB,gBACrB,GACG,CACH7Y,aACAxF,iBACA1H,mBACA,GACG,CACHkN,aACAxF,oBACA,oBACA,oBACA,uCACAse,aACA,qEACA,4BACAC,oBACAC,mBACA,MACAlmB,oBAEAA,sBACAmmB,OACAJ,SAEA/lB,8CACAA,wBAEA,GACG,CACHkN,WACAxF,iBACA1H,0BACA,GACG,CACHkN,gBACAxF,kBACA1H,oCACAsR,8BACAA,6BACA,GACAtR,oCACAsR,8BACAA,6BACA,EACA,GACG,CACHpE,WACAxF,iBACA1H,0BACA,KAGAomB,CACA,CAjGA,CAVA1R,EAFAnN,MA6GCkH,SAsBD,cACA,6BACA,sBAEA,EAAG,GACH4X,eACA,OApBA,cACA,4BACA,iBACA,eACA,mDAEA,oBACA9kB,2CACA,qDACA,GAGA,CAQA+kB,MACAD,MAEAA,CACA,CA9BAD,YACAG,UACAC,aACAC,aA6BArf,YACAA,sBAEA,EACA,CAEA,gBAEA,aAEA7F,sCAA+CmG,WAC/C,iBACA,aACA1H,yBACAA,aACA,CACA,qCAEA,QADA0mB,KACAhc,IAAyBA,mBAAuBA,IAChDgc,kBAEA1mB,6BACA0mB,YACA1mB,kCAEA,EACA2mB,iCAEA,QADAC,oBACAA,OACA,SACA,SAEA,QACA,EACAD,wCACArc,IAEAA,SACA,SACAA,cACA,eACAuc,eAEAA,SACAA,gBACA7mB,cAGA,iBACAA,iBACAsK,iBACAtK,cAGAsK,YACAtK,uBAEAA,eACA,EACA2mB,+BAEA,QADAxlB,gBACA,UACA,SACA,SACAA,cACAylB,QACA,CACA,QACA,EACAD,gCACA3mB,mBAEA,eACAsK,oBACA,eACAA,oBACAA,gBACAtK,kBACAsK,gBACAtK,kBACAA,eACA,EACA2mB,iCACA,oBAAkCG,aAElC,WACA,QACA,iBACAA,UACAC,CACA,CACA,EACAJ,oCACA,QAAoCxK,MAEpC,QADAyK,oBACAA,QACA,iBACA,QACAzK,8CACA,YAEAhb,IACA,CACA,cACA,EACAwlB,gCAEA,QADAC,oBACAA,OACAI,IAEA,EACAL,sCACA,WAIA,QADAC,EADA5K,eACAiL,IADAjL,KACA3M,gBADA2M,OAEA4K,gBACA,iBACAzlB,IACA6lB,2BAGAA,yBAEAC,IACA,CACA,EACAN,4BACA,iCACA,oBACAO,CACA,EAAS,GACT,EACAP,iCAEA,QADAC,oBACAA,OACAM,SAEA,QACA,EACAP,CACA,CAlIA,GAmIAvf,WAGA,EAEA,gBAEA,aAEA,IACAoC,EADAC,yBACAD,yBACA,CAAWE,wBAAgBC,qBAAsCnH,gBACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAEAjB,sCAA+CmG,WAC/C,YACAY,OACA6e,GACAnd,cACAod,iBACAC,yBACAC,aACAC,YAGAC,cAEA,cACA,2BACA,kBACA5d,4CACAA,WACA,GACAA,gCACAA,WACAA,CACA,CACA,OAXAH,OAWA+d,8BACA9L,8BACA1b,0BACA,EACAwnB,mCACAxnB,cACA,yBACAA,kCACA2b,UACA,GAGAD,mCAEA,EACA8L,uCACAxnB,cACA0b,uCACA,EACA8L,qCACAxnB,cACA0b,qCACA,EACA8L,mCACA,gBACA,QAAoCjL,WACpC,QAAkC+C,MAClC5D,kCAKA,QAHA+L,6CAGAA,YACAlL,gBA+BA,QA7BAmL,qBACA,QAAyCC,MACzC,gBAEA,6BAGA,wCAEAtT,oCAEAsT,GACAD,YACA,EACAE,cAIA,6BAEA,wCAGAvT,wBACAA,sBAEAA,cACA,EACAwT,IACAjnB,IAAwBinB,WAAsBjnB,MAC9C,MA9EA,IA+EA,mEA4BA,IA1BAinB,sBACA,0BACA,UAEAxT,uBACA,sBACAqT,gCACA,yCACA,mBACAA,QACA/L,wBACAA,+BACA+L,OACA,EAEA,IAEA,uBACAA,WAGAA,KACA,GACA1nB,yBAEAynB,GADAI,8CACAjD,QACA6C,YACAlL,eACA,CACA,EACAiL,iCACA,gBACA,QAAkClI,OAClC/C,kCAGAhW,gBACA,0BACA,eACA,KAEA,uCAEA8N,oCACAA,IAIAA,wCACA,KAEA,GACAO,oBACA,SACAP,OAEA,6BAGAA,+CACA,GAEA,0CAEAqH,mEAEA1b,kBACA,EACAwnB,oBACAA,uBACAA,2BACAA,gBACAA,CACA,CAzJA,CAyJC7K,WACDvV,WAGA,EAEA,gBAEA,aAEA,IACAoC,EADAC,yBACAD,yBACA,CAAWE,wBAAgBC,qBAAsCnH,gBACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAEAjB,sCAA+CmG,WAC/C,YACAY,OAaAwf,cAEA,aACA,8CACA,CACA,OAJAre,OAIAqe,sBACA,yBAEA,6BACA,EACAA,iCACA,WACAha,6BAUA4N,mCATA1b,kCACA2b,yBACAA,yBAEA/R,oBACA,GACA5J,cAKA,EACA8nB,uCACA,sDACA9nB,kBACA6c,YAGAnB,uCAEA,EACAoM,iCACApM,kCACA,qBACA,6BACA,qBAEA,gBACArM,+BApDA,gBACA,iDACA,SAEA,eAEA,eACA,SAEA,QACA,CA0CA0Y,kBACA1Y,qBACAA,WAEA,EACAyY,oBACAA,4BACAA,iBACAA,CACA,CAlDA,CAkDCngB,WACDP,WAGA,EAEA,gBAEA,aAEA,IACAoC,EADAC,yBACAD,yBACA,CAAWE,wBAAgBC,qBAAsCnH,gBACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAEAjB,sCAA+CmG,WAC/C,YACAY,OACA0f,cAEA,aACA,8CACA,CACA,OAJAve,OAIAue,sBACA,kCACA,iBAEA,6BACA,EACAA,iCACA,iCAGAla,6BAIA4N,kCAHA1b,6BAKA,EACAgoB,uCACA,+BACAhoB,iBAGA0b,uCAEA,EACAsM,qCACA,4CAEAtM,0CAEA,CACA,oBACArH,gBACA+H,0BACA,CACA,EACA4L,iCACAC,qCACAjoB,aAGA0b,iCAEA,EACAsM,mBACAA,2BACAA,cACAA,CACA,CArDA,CAqDCrgB,WACDP,WAGA,EAEA,gBAEA,aAEA,IACAoC,EADAC,yBACAD,yBACA,CAAWE,wBAAgBC,qBAAsCnH,gBACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAEAjB,sCAA+CmG,WAC/C,IACAwgB,cAEA,aACA,8CACA,CACA,OAJAze,OAIAye,sBAEA,EACAA,iCAIAxM,mDACA,EACAwM,uCACA,yBACAloB,iBAGA0b,uCAEA,EACAwM,+BACA,yCACA,EACAA,CACA,CA1BA,CADA3gB,MA2BCkH,SACDrH,WAGA,EAEA,gBAEA,aAEA,IACAoC,EADAC,yBACAD,yBACA,CAAWE,wBAAgBC,qBAAsCnH,gBACjE,cAA0B,iDAC1B,cAEA,aAAwBxC,mBADxBwJ,OAEAhH,qEACA,GAEAjB,sCAA+CmG,WAC/C,YACAY,OACAmM,cAEA,cACA,2BACA,yCACA7K,CACA,CACA,OANAH,OAMAgL,qBACA,iCACA,EACAA,oBACA,aAEA,qBACAnT,iBACAA,CACA,EACAmT,mCACAzU,qEACA,EACAyU,gCACA,wBACA9H,GAEA,CACA,EACA8H,qCACA,SACAzU,oDACAA,6BAGA0b,qCAEA,EACAjH,8BACA,uBACA,EACAA,iCACAiH,kCACA1b,2CACA,qBACAA,cAEAA,gDACAA,+CACAA,mBAEA,EACAyU,mCACA,oBAAoC0H,MACpC,gBACA,EACA1H,gCAEA,QADA,QAAgCmG,OAChCA,GACA,SACA,YACA,qBACA,gBACA,CACA,0CACA,6CACA5a,2CACAoc,CACA,EACA3H,iCACA,WACA8H,mBACA,oDACA,KACAvc,2CAEA,EACAyU,6BACA,gBACA,EACAA,kBACAA,4BACAA,CACA,CAhFA,CAgFC7M,WACDR,WAGA,EAEA,gBAEA,aAGA,oCAEA,GADAuE,oCACAA,oCACA,oCACAwc,4CACA,iDACAvN,EAEAwN,cAEA,CACA,CAEAC,8BACAA,0CACA,OACAroB,YADAka,OACAoO,aACA,GAGAD,4BACAA,wCACA,uBACA,mEACAnO,YAGA,kBADAA,aAEA,mBACA,GAGAvQ,sBACApI,8CACAmG,kBACA,eACA,wEAEA,wBACA,oDAOA,QAFAA,EAHAob,eACApX,eACA6c,eAGA3nB,IAAsBA,IAAYA,IAElC,YADA8G,OACA9G,KACA,QAIA,IAIAiU,wDAEAA,mDAEAA,2CACA,EAEA,EAEA,cAiCA,SAaA,kBAEA,QACA,SACA,EAfA,EAeA2T,IAEA,IAIAC,mBACAA,QAIA,aACAC,mBAKAC,IAJAH,iBACAI,kBAIA,8BAKAC,EAyBA,gBACA,MAEA,MAEA,QArEA,EAqEAD,IAGA,MAEA,cAGA,4BACAE,wBACAloB,eACA,SAEA,WAlFA,EAkFAmoB,kBACA,CAlFA,EAkFAD,GACA,CApFA,EAoFAC,0BAEAP,oBACAK,mBAEAA,EAGA,eAGA,cA/FA,EA+FAD,IAIA,MAwOA,gBACA,4BACAE,wBACA,mCACA,YAeA,mBAMA,QADAE,QAHAC,0CACAC,KACAC,MAEA,2BACA,uBACAL,iBACArQ,qBACAqQ,mBACAK,eACAA,sBACAL,oBACAE,qBACAI,mBACAC,sBACAC,oBAEA,CACA,4BACA,KACAD,OAEA,IAEA,CAGA,IAKAE,EAaAC,QAlBAC,QACApnB,uBAEAqnB,QACArnB,uBAEA,aAQAknB,EANIG,EAEAD,GAIJA,0BAHAC,EAFAD,EAUAjB,mBACAgB,OACAG,OACAC,OACAC,SAEAD,OACAC,OACAL,OACAG,QAGA,SADAJ,OAvBA,IAyBA,CAxTAO,MACA,MAEA,IACAH,OAEAE,OACAE,OAEAC,IANAT,KAEAA,MAKAU,SAEA,kBA9GA,EA8GAF,MACA,CAEA,OAaA,gBAWA,QATAG,WACAC,WACAC,qBACAC,IACAC,MACAC,eACAC,eAGA5T,IAAkBA,IAAcA,IAChC2T,QACAC,QAEAD,SACAC,SAWA,QAVAve,MAGAwe,SAGAC,IACAC,IACAC,KACAC,IACAroB,IAAkBA,IAAWA,KAE7B,eAAgCsoB,OAAiBA,MASjD,IARA,UAOAC,GAJAC,EADAF,2BACAP,OAEAA,UAEAO,EACAE,UACAxC,0BACAwC,IACAD,IAGA,GADAR,OACAS,IAEAL,aACQI,IAERL,aACQD,IACRQ,UACA,kBAGAD,IADAE,UAGA,iBAIA,CAGA,gBAAgCC,OAAiBA,MASjD,IARA,IACAD,EADAD,MAOAG,GAJAF,EADAC,2BACAX,OAEAA,UAEAW,EACAD,UACA1C,iBACAI,iBACAsC,IACAE,IAGA,GADAZ,OACAU,IAEAL,aACQO,IAERR,eACQH,GAGR,MADA,IADAY,UACA,iBAKA,GAHAN,KADAC,QACAK,EAGAL,IADAE,OAGA,iBAGA,CACA,CACA,CAGA,cAtOA,EAsOAtC,GACA,CArHA0C,KACA,CA5EAC,CAJA/C,4BACAI,6BAMA,UACAC,WA1CA,EA0CAH,IAEA8C,GACA3C,QA7CA,EA6CA2C,IAEAC,KACA,UACA5C,EA2iBA,gBACA,MA9CA,gBACA,SACA,OAjjBA,EAijBAA,GAEA,gBAAmCjoB,WAAkBA,KACrD,WACA,aArjBA,IAqjBA4B,MACA,oBACA,SACA,cACQ,QAERqmB,YAEA,UACA6C,yBACAC,uBACA,yBACA,OACA,CACAC,GAEA,CACA,CACA,+CACA,CAqBAC,MACAC,OACAC,OACAvpB,OACAwpB,SAEA,WAGA,SACI,GAvmBJ,IAumBIxpB,KAGJ,SAEA,kCAGA,yBACAypB,SACM,oCAKNH,mCACA,8BACA,mBACAA,yBAEAG,QACA,CAEA,QAGA,CAhlBAC,OAEArD,EAwlBA,cAQA,QAPAsD,KACAC,cACA,qDACA,EACAC,cACA,uEACA,EACAzrB,IAAkBA,WAAkBA,KAnpBpC,IAopBAioB,yBACAA,6BAtpBA,IAupBAA,sBACAsD,KAEAtD,wCACAA,oCAEAA,iCAGA,MACA,SAGA,IADAyD,KACA,QAAkB1rB,WAAkBA,KACpCioB,kBACAyD,aAGA,QACA,CAtnBAC,IACA1D,CACA,CA6LA,oBACA,uBACA2D,mBACAC,iBACAC,iBAGA7D,SACA8D,SAEA,kBACA,CAUA,gBAEA,oCACA,SAQA,QAJAC,IACAC,8BACAC,IACAC,IACAH,KACApE,kBACAI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,oFAEA,uBACA1H,2CACAA,wDACQ,CACR,uBACAA,oEACAA,gEACA,CACA,GACG,CACHkN,cACAxF,mBACA,WAEA,gDACA,kCACAuE,oCACAmjB,2CACApvB,uBACAA,sDACAqZ,sBACApN,4CACAgD,kDAEAA,qEACAA,wCACAA,eACA,EAAO,GACP,GACG,CACH/B,sBACAxF,iBACA,YAEA2nB,KACAC,MACA,0CACA,eACAlpB,SACA8oB,SAEA,gBACAK,eACAD,YACA,WACAC,kBACAF,WACA,cAEA,+DAEA/kB,kBACAA,eACA,GAGA,GACA,MACA,KAGA2kB,CACA,CA5HA,CA4HChf,WAOD,kBACA,iDACA1O,qCACA,mBACA,EAAK0K,GAELA,wBACA,qCACAA,WAEAA,oCAA+DmM,KAAoByE,mBAEnF,EAAK,cAEL,CAEA,cACA,2CACA,4BACA,8CACA,CAEA,gBAEA,QADA2S,KACA5uB,kBAAqCA,2BAAwCA,IAC7E,gBACA,mCACA4uB,YACA,CACA,+BACA,CAEA,cACA,oCACA,WACA,iDACA,CAEA,kBAEA,gCACAF,wBACA,cACA,EAAK,eACDhlB,4BACJ,+CACA,gBACA,qCACAmlB,4BACA,eACA,EAASA,IACTA,sCACA,eACA,EAASA,KAETxjB,aACA,EAAK,eAEL,aAEA,CAEA,kBACA,gBACA,CAEA,gBACA,6CACAhC,sCACAua,qCACAlV,MACA,mDACA,qDACA,WACAA,4BACAA,mBAGA,OADAoV,YACAA,qCACApV,qCAGA,OADAoV,YACAA,qCAEApV,IADAoV,UACAgL,+BAEA,GACAnuB,2BACA0K,WAEAA,CACA,CAEA,gBACA,yBACA,oBACA,2CACA,UACAvE,aACA,UACA2Q,iBACApM,0CAEA,KAAI,+BACJA,gCAEA,QACA,CA8BA,iBACA,mBACAoT,sDACApT,eAGAA,CACA,CAEA,iBACA,mDACA,8EACA3B,kDACA2B,cAEA,CACA,QACA,CAqBA,iBACA,aAEA,gCACA,0BAEA,wEACA,SAEA,kDAEA,uBACA,uCACAP,mBACA,EAEApK,GADAA,6CACAquB,kCACA,2FACAruB,qCAEA,+EACAA,mCAEA,CACA,kBACA,CA7MA2tB,YACAW,YACAC,gBA6MAzoB,YACAA,oBACAA,cACAA,kBACAA,kBACAA,cAEA,EACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEA,gBAEAF,eAGA,IACAuH,OACA","debug_id":"151ad3d3-336e-5aa4-8798-186d1eaf6fa8"}